Module: check_mk
Branch: master
Commit: 81b54bd1aa6d3bba50cddd676627f5c9bbb49509
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=81b54bd1aa6d3b…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Nov 22 08:37:49 2010 +0100
webconf: new workflow system works
---
LIESMICH.webconf | 4 --
web/htdocs/webconf.py | 77 ++++++++++++++++--------------------------------
2 files changed, 26 insertions(+), 55 deletions(-)
diff --git a/LIESMICH.webconf b/LIESMICH.webconf
index 79097aa..bee51f7 100644
--- a/LIESMICH.webconf
+++ b/LIESMICH.webconf
@@ -4,10 +4,6 @@
- Link von Webconf auf den Host in Nagios. Dazu muss ich die lokale
Site wissen (konfigurieren in multisite.mk)
-* Evtl. sollte man den Hosts Tags verpassen: 'webconf' und 'hirni.mk',
- also die Datei, aus der der Host kommt. Das würde auch die GUI-Links
- leichter machen.
-
* Es fehlt noch SNMP. Keine Ahnung, wie ich das am besten umsetze
* Knopf zum Löschen eines Hosts auch in Detailmaske
diff --git a/web/htdocs/webconf.py b/web/htdocs/webconf.py
index ccbdfed..8ad900d 100644
--- a/web/htdocs/webconf.py
+++ b/web/htdocs/webconf.py
@@ -46,11 +46,12 @@ conf_dir = defaults.var_dir + "/webconf/"
#
# Der Trick: welche Inhalte angezeigt werden, hängt vom Ausgang der Aktion
# ab. Wenn man z.B. bei einem Host bei "Create new host" auf [Save] klickt,
-# dann kommt bei Erfolg die Inventurseite, bei Misserfolgt bleibt man
+# dann kommt bei Erfolg die Inventurseite, bei Misserfolg bleibt man
# auf der Neuanlegen-Seite.
#
# Dummerweise kann ich aber die Kontextbuttons erst dann anzeigen, wenn
-# ich den Ausgang der Aktion kenne.
+# ich den Ausgang der Aktion kenne. Daher wird zuerst die Aktion ausgeführt,
+# welche aber keinen HTML-Code ausgeben darf.
def page_index(h):
global html
@@ -85,7 +86,8 @@ def page_index(h):
# if newmode is not None, then the mode has been changed
if newmode != None:
if newmode == "": # no further information: configuration dialog, etc.
- html.message(action_message)
+ if action_message:
+ html.message(action_message)
html.write("</div>")
html.footer()
return
@@ -114,43 +116,6 @@ def page_index(h):
html.footer()
-# def hirnstuff():
-#
-# # Mögliche Aktionen:
-# # Host löschen
-# # Host anlegen
-# # Host editieren/speichern
-# # Servicekonfiguration speichern
-#
-# # Context buttons
-#
-# if mode in [ "index", "changelog" ]:
-# html.context_button("Create new host", make_link([("mode", "newhost")]))
-#
-# if mode == "index":
-#
-# if mode == "changelog":
-# html.context_button("Host list", make_link([("mode", "index")]))
-#
-# if mode in [ "newhost", "edithost", "inventory" ]:
-# html.context_button("Abort", make_link([("mode", "index")]))
-#
-#
-# # Actions (regardless of current mode)
-# action = html.var("_action")
-# if action == "activate" and html.transaction_valid():
-# activate_configuration()
-#
-# if mode == "index":
-# show_hosts_table()
-# elif mode == "changelog":
-# show_changelog()
-# elif mode in [ "edithost", "newhost" ]:
-# show_edithost()
-#
-# html.write("</div>\n")
-# html.footer()
-
# -----------------------------------------------------------------
# ____
# | _ \ __ _ __ _ ___ ___
@@ -169,14 +134,7 @@ def mode_index(phase):
# Deletion of hosts
delname = html.var("_delete")
if delname and delname in g_hosts:
- c = html.confirm("Do you really want to delete the host <tt>%s</tt>?" % delname)
- if c:
- del g_hosts[delname]
- write_configuration_file()
- log_pending(delname, "delete-host", "Deleted host %s" % delname)
- check_mk_automation("delete-host", [delname])
- elif c == False: # not yet confirmed
- return ""
+ return delete_host_after_confirm(delname)
else:
# Show table of hosts in this file
html.write("<table class=services>\n")
@@ -208,9 +166,9 @@ def mode_index(phase):
html.write("<td>%s</td>" % ", ".join(tags))
html.write("<td>")
html.buttonlink(edit_url, "Edit")
+ html.buttonlink(services_url, "Services")
html.buttonlink(clone_url, "Clone")
html.buttonlink(delete_url, "Delete")
- html.buttonlink(services_url, "Services")
html.write("</td>")
html.write("</tr>\n")
@@ -265,11 +223,11 @@ def mode_edithost(phase, new):
if clonename:
title = "Create clone of %s" % clonename
- alias, ipaddress, tags = hosts[clonename]
+ alias, ipaddress, tags = g_hosts[clonename]
mode = "clone"
elif hostname in g_hosts:
title = "Edit host " + hostname
- alias, ipaddress, tags = g_hosts.get(hostname)
+ alias, ipaddress, tags = g_hosts[hostname]
mode = "edit"
else:
title = "Create new host"
@@ -282,6 +240,9 @@ def mode_edithost(phase, new):
html.context_button("Services", make_link([("mode", "inventory"), ("host", hostname)]))
elif phase == "action":
+ if html.var("delete"): # Delete this host
+ return delete_host_after_confirm(hostname)
+
alias = html.var("alias")
if not alias:
alias = None # make sure no alias is set - not an empty one
@@ -363,6 +324,7 @@ def mode_edithost(phase, new):
html.write("</td></tr>\n")
html.write('<tr><td class="legend button" colspan=2>')
+ html.button("delete", "Delete host!", "submit")
html.button("save", "Save & Finish", "submit")
html.button("services", "Save & got to Services", "submit")
html.write("</td></tr>\n")
@@ -608,3 +570,16 @@ def activate_configuration():
html.message("The new configuration has been successfully activated.")
log_commit_pending() # flush logfile with pending actions
log_audit(None, "activate-config", "Configuration activated, monitoring server restarted")
+
+def delete_host_after_confirm(delname):
+ c = html.confirm("Do you really want to delete the host <tt>%s</tt>?" % delname)
+ if c:
+ del g_hosts[delname]
+ write_configuration_file()
+ log_pending(delname, "delete-host", "Deleted host %s" % delname)
+ check_mk_automation("delete-host", [delname])
+ return "index"
+ elif c == False: # not yet confirmed
+ return ""
+ else:
+ return None # browser reload
Module: check_mk
Branch: master
Commit: 66782542ab85321fe498a17c9fa29a2a58755a20
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=66782542ab8532…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Nov 17 08:36:42 2010 +0100
Always add tags "webconf" and filename
---
LIESMICH.webconf | 23 +++++++++++++++++++++++
web/htdocs/webconf.py | 7 ++++---
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/LIESMICH.webconf b/LIESMICH.webconf
new file mode 100644
index 0000000..cf1e5a0
--- /dev/null
+++ b/LIESMICH.webconf
@@ -0,0 +1,23 @@
+* Integration mit Multisite:
+ - Bei einem Host muss es einen Kontextknopf zur Konfig-GUI geben, falls
+ dieser host per webconf erstellt wurde.
+ - Link von Webconf auf den Host in Nagios. Dazu muss ich die lokale
+ Site wissen (konfigurieren in multisite.mk)
+
+* Evtl. sollte man den Hosts Tags verpassen: 'webconf' und 'hirni.mk',
+ also die Datei, aus der der Host kommt. Das würde auch die GUI-Links
+ leichter machen.
+
+* Es fehlt noch SNMP. Keine Ahnung, wie ich das am besten umsetze
+
+* Knopf zum Löschen eines Hosts auch in Detailmaske
+
+* Arbeitsfluss besser umsetzen. Kann/soll man so eine Art Wizard
+ machen?
+
+* Eine Flagdatei, welche klarmacht, dass Änderungen gemacht, aber
+Nagios nicht neugestartet wurde. Evtl. kann man diese als Art
+Logdatei aufbauen - ein Audit-log. Falls ja, sollte es beim Neustarten
+umgeschoben werden in ein generelles Log.
+
+* Doku
diff --git a/web/htdocs/webconf.py b/web/htdocs/webconf.py
index d4caa78..33ec323 100644
--- a/web/htdocs/webconf.py
+++ b/web/htdocs/webconf.py
@@ -41,7 +41,7 @@ def read_configuration_file(filename):
for h in variables["all_hosts"]:
parts = h.split('|')
hostname = parts[0]
- tags = parts[1:]
+ tags = [ tag for tag in parts[1:] if tag != 'webconf' and not tag.endswith('.mk') ]
ipaddress = variables["ipaddresses"].get(hostname)
aliases = host_extra_conf(hostname, variables["extra_host_conf"]["alias"])
if len(aliases) > 0:
@@ -64,7 +64,7 @@ def write_configuration_file(filename, hosts):
alias, ipaddress, tags = hosts[hostname]
if alias:
aliases.append((alias, [hostname]))
- all_hosts.append("|".join([hostname] + tags))
+ all_hosts.append("|".join([hostname] + tags + [ filename, 'webconf' ]))
if ipaddress:
ipaddresses[hostname] = ipaddress
@@ -75,7 +75,8 @@ def write_configuration_file(filename, hosts):
out.write("all_hosts += ")
out.write(pprint.pformat(all_hosts))
if len(aliases) > 0:
- out.write("\n\nif 'alias' not in extra_host_conf:\n extra_host_conf['alias'] = []\n")
+ out.write("\n\nif 'alias' not in extra_host_conf:\n"
+ " extra_host_conf['alias'] = []\n")
out.write("\nextra_host_conf['alias'] += ")
out.write(pprint.pformat(aliases))
if len(ipaddresses) > 0: