Module: check_mk
Branch: master
Commit: 74991bc6a2dfaa82c7f5965454725a1b1f9e5d5c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=74991bc6a2dfaa…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Sun Nov 1 13:25:52 2015 +0100
#2442 WATO remove host: improved cleanup of obsolete host files
Deleting a host in WATO will now also remove the following files
<ul>
<li>Persisted data</li>
<li>Piggyback data</li>
<li>Inventory data</li>
<li>Agent Bakery symlinks</li>
</ul>
To prevent the loss of historic files, any performance data and the
archived inventory data is not deleted.
---
.werks/2442 | 19 +++++++++++++++++++
ChangeLog | 1 +
modules/automation.py | 25 ++++++++++++++++++-------
web/htdocs/wato.py | 17 +++++++++++++----
4 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/.werks/2442 b/.werks/2442
new file mode 100644
index 0000000..ef63e06
--- /dev/null
+++ b/.werks/2442
@@ -0,0 +1,19 @@
+Title: WATO remove host: improved cleanup of obsolete host files
+Level: 1
+Component: wato
+Class: feature
+Compatible: compat
+State: unknown
+Version: 1.2.7i4
+Date: 1446380193
+
+Deleting a host in WATO will now also remove the following files
+<ul>
+<li>Persisted data</li>
+<li>Piggyback data</li>
+<li>Inventory data</li>
+<li>Agent Bakery symlinks</li>
+</ul>
+
+To prevent the loss of historic files, any performance data and the
+archived inventory data is not deleted.
diff --git a/ChangeLog b/ChangeLog
index 5735b9d..57faf12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -50,6 +50,7 @@
* 2717 FIX: Fixed broken webserver level authentication integration (e.g. basic,
kerberos)...
WATO:
+ * 2442 WATO remove host: improved cleanup of obsolete host files...
* 2666 FIX: Fix search for global configuration variables: ignore case now
* 2715 FIX: Fixed visibility of BI aggregations in editor
* 2716 FIX: Fixed error reporting on disabled checks page in case of broken man
pages
diff --git a/modules/automation.py b/modules/automation.py
index 6b8f8e3..471e6a1 100644
--- a/modules/automation.py
+++ b/modules/automation.py
@@ -354,16 +354,27 @@ def automation_analyse_service(args):
def automation_delete_host(args):
hostname = args[0]
+
+ # the inventory_archive as well as the perfdata is kept
+ # we do not want to loose historic data for accidently deleted hosts
for path in [
- "%s/%s" % (precompiled_hostchecks_dir, hostname),
- "%s/%s.py" % (precompiled_hostchecks_dir, hostname),
- "%s/%s.mk" % (autochecksdir, hostname),
- "%s/%s" % (logwatch_dir, hostname),
- "%s/%s" % (counters_directory, hostname),
- "%s/%s" % (tcp_cache_dir, hostname),
- "%s/%s.*" % (tcp_cache_dir, hostname)]:
+ "%s/%s" % (precompiled_hostchecks_dir, hostname),
+ "%s/%s.py" % (precompiled_hostchecks_dir, hostname),
+ "%s/%s.mk" % (autochecksdir, hostname),
+ "%s/%s" % (logwatch_dir, hostname),
+ "%s/%s" % (counters_directory, hostname),
+ "%s/%s" % (tcp_cache_dir, hostname),
+ "%s/persisted/%s" % (var_dir, hostname),
+ "%s/piggyback/%s" % (tmp_dir, hostname),
+ "%s/inventory/%s" % (var_dir, hostname),
+ "%s/inventory/%s.gz" % (var_dir, hostname)]:
os.system("rm -rf '%s'" % path)
+ for path in [ "%s/%s.*" % (tcp_cache_dir, hostname),
+ "%s/agents/*/%s" % (var_dir, hostname) ]: # only remove
bakery symlinks
+ for filename in glob.glob(path):
+ os.unlink(filename)
+
def automation_restart(job = "restart", use_rushd = True):
# make sure, Nagios does not inherit any open
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 23e4e87..8778a59 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -1687,6 +1687,17 @@ def move_hosts_to(hostnames, path):
def move_host_to(hostname, target_filename):
return move_hosts_to([hostname], target_filename)
+
+def delete_host_files(site_id, hostname):
+ check_mk_automation(site_id, "delete-host", [hostname])
+ if not site_is_local(site_id):
+ # Delete inventory data from remote sites (not the archive)
+ for filename in [ "%s/inventory/%s" % (defaults.var_dir, hostname),
+ "%s/inventory/%s.gz" % (defaults.var_dir, hostname)
]:
+ if os.path.exists(filename):
+ os.unlink(filename)
+ log_pending(AFFECTED, hostname, "delete-host", _("Deleted host
%s") % hostname)
+
def delete_hosts_after_confirm(hosts):
c = wato_confirm(_("Confirm deletion of %d hosts") % len(hosts),
_("Do you really want to delete the %d selected hosts?") %
len(hosts))
@@ -1697,10 +1708,9 @@ def delete_hosts_after_confirm(hosts):
for delname in hosts:
mark_affected_sites_dirty(g_folder, delname)
host = g_folder[".hosts"][delname]
- # check_mk_automation(host[".siteid"], "delete-host",
[delname])
+ delete_host_files(host[".siteid"], delname)
del g_folder[".hosts"][delname]
g_folder["num_hosts"] -= 1
- log_pending(AFFECTED, delname, "delete-host", _("Deleted host
%s") % delname)
save_folder_and_hosts(g_folder)
call_hook_hosts_changed(g_folder)
@@ -2212,12 +2222,11 @@ def delete_host_after_confirm(delname):
raise MKUserError(None, _("Cannot delete host. Hosts in this folder are
locked"))
mark_affected_sites_dirty(g_folder, delname)
- log_pending(AFFECTED, delname, "delete-host", _("Deleted host
%s") % delname)
host = g_folder[".hosts"][delname]
del g_folder[".hosts"][delname]
g_folder["num_hosts"] -= 1
save_folder_and_hosts(g_folder)
- check_mk_automation(host[".siteid"], "delete-host",
[delname])
+ delete_host_files(host[".siteid"], delname)
call_hook_hosts_changed(g_folder)
return "folder"
elif c == False: # not yet confirmed