Module: check_mk
Branch: master
Commit: 85cfa9084c5a3391977e91b7c9bb70829319018f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=85cfa9084c5a33…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Sat Mar 2 19:49:49 2019 +0100
Move some more backup related code to omdlib.backup
Change-Id: Ib42c952853554170c045c50e82847ef6efca322a
---
omd/packages/omd/omdlib/backup.py | 23 +++++++++++++++++++++++
omd/packages/omd/omdlib/main.py | 15 +++------------
2 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/omd/packages/omd/omdlib/backup.py b/omd/packages/omd/omdlib/backup.py
index 661c728..70ca46b 100644
--- a/omd/packages/omd/omdlib/backup.py
+++ b/omd/packages/omd/omdlib/backup.py
@@ -30,6 +30,7 @@ import errno
import socket
import tarfile
import fnmatch
+from typing import Tuple # pylint: disable=unused-import
def backup_site_to_tarfile(site, fh, mode, options, verbose):
@@ -212,3 +213,25 @@ class BackupTarFile(tarfile.TarFile):
if self._sock:
self._resume_all_rrds()
self._sock.close()
+
+
+def get_site_and_version_from_backup(tar):
+ # type: (tarfile.TarFile) -> Tuple[str, str]
+ """Get the first file of the tar archive. Expecting
<site>/version symlink
+ for validation reasons."""
+ site_tarinfo = tar.next()
+ if site_tarinfo is None:
+ raise Exception("Failed to detect version of backed up site.")
+
+ try:
+ sitename, version_name = site_tarinfo.name.split("/", 1)
+ except ValueError:
+ raise Exception("Failed to detect version of backed up site. "
+ "Maybe the backup is from an incompatible version.")
+
+ if version_name == "version":
+ version = site_tarinfo.linkname.split('/')[-1]
+ else:
+ raise Exception("Failed to detect version of backed up site.")
+
+ return sitename, version
diff --git a/omd/packages/omd/omdlib/main.py b/omd/packages/omd/omdlib/main.py
index a68023d..a860480 100644
--- a/omd/packages/omd/omdlib/main.py
+++ b/omd/packages/omd/omdlib/main.py
@@ -3610,19 +3610,10 @@ def main_restore(site, args, options=None):
except tarfile.ReadError as e:
bail_out("Failed to open the backup: %s" % e)
- # Get the first file of the tar archive. Expecting <site>/version symlink
- # for validation reasons.
- site_tarinfo = tar.next()
try:
- sitename, version_name = site_tarinfo.name.split("/", 1)
- except ValueError:
- bail_out("Failed to detect version of backed up site. "
- "Maybe the backup is from an incompatible version.")
-
- if version_name == "version":
- version = site_tarinfo.linkname.split('/')[-1]
- else:
- bail_out("Failed to detect version of backed up site.")
+ sitename, version = omdlib.backup.get_site_and_version_from_backup(tar)
+ except Exception as e:
+ bail_out(e)
if not version_exists(version):
bail_out("You need to have version %s installed to be able to restore
"