Module: check_mk
Branch: master
Commit: 6efe666819783884835ccefd7d15a484028c71f6
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6efe6668197838…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Jul 27 09:52:55 2016 +0200
backup: Some minor cleanups
---
bin/mkbackup | 23 +++++++++++------------
web/htdocs/backup.py | 39 +++++++++++++++++++++++++--------------
web/htdocs/js/checkmk.js | 14 +++++++++++++-
web/htdocs/wato.py | 8 ++++++--
4 files changed, 55 insertions(+), 29 deletions(-)
diff --git a/bin/mkbackup b/bin/mkbackup
index e791c8d..3c02f6c 100755
--- a/bin/mkbackup
+++ b/bin/mkbackup
@@ -615,7 +615,7 @@ def do_site_backup(opts, site=None, try_stop=True):
with open(backup_path, "w") as backup_file:
s = BackupStream(stream=p.stdout, is_alive=lambda: p.poll() is None,
- key_ident=g_job_config.get("encrypt"))
+ key_ident=g_job_config["encrypt"])
for chunk in s.process():
backup_file.write(chunk)
@@ -1029,11 +1029,11 @@ def needed_backup_archive_files(info):
def compress_archives():
- return "compress" in g_job_config
+ return g_job_config["compress"]
def encrypt_archives():
- return "encrypt" in g_job_config
+ return g_job_config["encrypt"] != None
def target_cfg(target_ident):
@@ -1150,7 +1150,7 @@ def do_system_rw_backup(opts):
# Process backup stream and write to destination file
s = BackupStream(stream=pipein, is_alive=lambda: t.is_alive(),
- key_ident=g_job_config.get("encrypt"))
+ key_ident=g_job_config["encrypt"])
for chunk in s.process():
backup_file.write(chunk)
@@ -1168,7 +1168,7 @@ def do_system_data_backup(opts):
# Process backup stream and write to destination file
s = BackupStream(stream=pipein, is_alive=lambda: t.is_alive(),
- key_ident=g_job_config.get("encrypt"))
+ key_ident=g_job_config["encrypt"])
for chunk in s.process():
backup_file.write(chunk)
@@ -1380,10 +1380,9 @@ def cleanup_backup_job_states():
path = "%s/var/check_mk/backup" % os.environ["OMD_ROOT"]
for f in glob.glob("%s/*.state" % path):
- if "/restore.state" in f or "/restore-" in f:
- continue
-
- os.unlink(f)
+ if os.path.basename(f) != "restore.state" \
+ and not os.path.basename(f).startswith("restore-"):
+ os.unlink(f)
def add_output(s):
@@ -1500,7 +1499,7 @@ def do_site_restore(opts, info, site=None):
with open(backup_path, "r") as backup_file:
s = RestoreStream(stream=backup_file, is_alive=lambda: False,
- key_ident=g_job_config.get("encrypt"))
+ key_ident=g_job_config["encrypt"])
try:
archive_started = False
for chunk in s.process():
@@ -1719,7 +1718,7 @@ def do_system_data_restore(opts, info):
def restore_system_backup(backup_path):
with open(backup_path, "r") as backup_file:
s = RestoreStream(stream=backup_file, is_alive=lambda: False,
- key_ident=g_job_config.get("encrypt"))
+ key_ident=g_job_config["encrypt"])
pipein_fd, pipeout_fd = os.pipe()
pipein = os.fdopen(pipein_fd)
@@ -1781,7 +1780,7 @@ def mode_list(target_id, opts):
sys.stdout.write(fmt_detail % ("From:", from_info))
sys.stdout.write(fmt_detail % ("Finished:",
render.date_and_time(info["finished"])))
sys.stdout.write(fmt_detail % ("Size:",
render.bytes(info["size"])))
- if "encrypt" in info["config"]:
+ if info["config"]["encrypt"] != None:
sys.stdout.write(fmt_detail % ("Encrypted:",
info["config"]["encrypt"]))
else:
sys.stdout.write(fmt_detail % ("Encrypted:", "No"))
diff --git a/web/htdocs/backup.py b/web/htdocs/backup.py
index 9a96e12..e722d0e 100644
--- a/web/htdocs/backup.py
+++ b/web/htdocs/backup.py
@@ -313,7 +313,7 @@ class Job(MKBackupJob, BackupEntity):
def key_ident(self):
- return self._config.get("encrypt")
+ return self._config["encrypt"]
# TODO: Duplicated code with mkbackup (globalize_job_id())
@@ -746,23 +746,33 @@ class PageEditBackupJob(object):
invalid_choice = "complain",
)),
("schedule", self.vs_backup_schedule()),
- ("compress", FixedValue(True,
+ ("compress", Checkbox(
title = _("Compression"),
help = _("Enable gzip compression of the backed up files. The
tar archives "
"created by the backup are gzipped during
backup."),
- totext = _("Compress the backed up files"),
+ label = _("Compress the backed up files"),
)),
- ("encrypt", DropdownChoice(
- title = _("Encrypt"),
+ ("encrypt", Alternative(
+ title = _("Encryption"),
help = _("Enable encryption of the backed up files. The tar
archives "
"created by the backup are encrypted using the
specified key "
- "during backup. You will need the private key and the
passphrase "
- "to decrypt the backup."),
- choices = self.backup_key_choices,
- invalid_choice = "complain",
+ "during backup. You will need the private key and the
"
+ "passphrase to decrypt the backup."),
+ style = "dropdown",
+ elements = [
+ FixedValue(None,
+ title = _("Do not encrypt the backup"),
+ totext = "",
+ ),
+ DropdownChoice(
+ title = _("Encrypt the backup using the key:"),
+ choices = self.backup_key_choices,
+ invalid_choice = "complain",
+ ),
+ ],
)),
] + self.custom_job_attributes(),
- optional_keys = ["compress", "encrypt"],
+ optional_keys = [],
render = "form",
)
@@ -861,7 +871,7 @@ class PageBackupJobState(object):
def page(self):
html.write("<div id=\"job_details\">")
- self._show_job_details()
+ self.show_job_details()
html.write("</div>")
html.javascript("refresh_job_details('%s', '%s', %s)"
%
(self._update_url(), self._ident, "true" if is_site() else
"false"))
@@ -871,7 +881,7 @@ class PageBackupJobState(object):
return "ajax_backup_job_state.py?job=%s" % self._ident
- def _show_job_details(self):
+ def show_job_details(self):
job = self._job
state = job.state()
@@ -975,7 +985,7 @@ class Target(BackupEntity):
table.cell(_("Finished"),
render.date_and_time(info["finished"]))
table.cell(_("Size"), render.bytes(info["size"]))
table.cell(_("Encrypted"))
- if "encrypt" in info["config"]:
+ if info["config"]["encrypt"] != None:
html.write(info["config"]["encrypt"])
else:
html.write(_("No"))
@@ -1678,7 +1688,7 @@ class PageBackupRestore(object):
def _start_restore(self, backup_ident):
backup_info = self._target.get_backup(backup_ident)
- if "encrypt" in backup_info["config"]:
+ if backup_info["config"]["encrypt"] != None:
return self._start_encrypted_restore(backup_ident, backup_info)
else:
return self._start_unencrypted_restore(backup_ident)
@@ -1808,3 +1818,4 @@ class PageBackupRestore(object):
class PageBackupRestoreState(PageBackupJobState):
def __init__(self):
self._job = RestoreJob(None, None) # TODO: target_ident and backup_ident needed?
+ self._ident = "restore"
diff --git a/web/htdocs/js/checkmk.js b/web/htdocs/js/checkmk.js
index aeebbe1..272242b 100644
--- a/web/htdocs/js/checkmk.js
+++ b/web/htdocs/js/checkmk.js
@@ -3184,10 +3184,22 @@ function do_job_detail_refresh(url, ident, is_site)
function handle_job_detail_response(handler_data, response_body)
{
+ // when a message was shown and now not anymore, assume the job has finished
+ if (document.getElementById("job_detail_msg"))
+ had_message = true;
+ else
+ had_message = false;
+
var container = document.getElementById("job_details");
container.innerHTML = response_body;
- refresh_job_details(handler_data["url"], handler_data["ident"],
handler_data["is_site"]);
+ if (!had_message) {
+ refresh_job_details(handler_data["url"],
handler_data["ident"], handler_data["is_site"]);
+ }
+ else {
+ reload_sidebar();
+ window.location.reload();
+ }
}
function handle_job_detail_error(handler_data, status_code, error_msg)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 2c26770..4d18062 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -5426,10 +5426,14 @@ class ModeBackupJobState(backup.PageBackupJobState, WatoMode):
-class ModeAjaxBackupJobState(ModeBackupJobState):
+class ModeAjaxBackupJobState(WatoMode):
def page(self):
config.need_permission("wato.backups")
- self._show_job_details()
+ if html.var("job") == "restore":
+ page = backup.PageBackupRestoreState()
+ else:
+ page = ModeBackupJobState()
+ page.show_job_details()