Module: check_mk
Branch: master
Commit: c05761feaa5e9ee8ca9a762229e6152e2f4b1804
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c05761feaa5e9e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Aug 17 12:10:53 2011 +0200
Updated bug entries
---
.bugs/115 | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/.bugs/115 b/.bugs/115
index 89bedd0..d098ad6 100644
--- a/.bugs/115
+++ b/.bugs/115
@@ -1,10 +1,11 @@
Title: livestatus: No timeperiod information available for 24X7
Component: livestatus
+State: done
+Class: bug
+Date: 2011-01-30 13:15:35
Benefit: 1
-State: open
Cost: 1
-Date: 2011-01-30 13:15:35
-Class: bug
+Fun: 0
Beim Neustart von Nagios tauchen teils Fehlermeldungen im Logfile auf:
@@ -33,3 +34,10 @@ Im laufenden Betrieb dann nicht mehr.
[1296122400] TIMEPERIOD TRANSITION: none;-1;0
[1296122400] TIMEPERIOD TRANSITION: us-holidays;-1;0
[1296122400] TIMEPERIOD TRANSITION: workhours;-1;1
+
+2011-08-17 12:10:51: changed state open -> done
+Fixed. It was du to a timed event broker message that
+came before the start of the eventloop. No timeperiod
+definitions had been loaded at that point of time. The
+timeperiod cache then was empty but anyway marked the
+current minute as being uptodate.
Module: check_mk
Branch: master
Commit: d9c33e88cea1d36cf967e72a5d97ba4808533eda
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d9c33e88cea1d3…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Aug 16 17:21:00 2011 +0200
WATO: Removed dirty code and changed parameters to all host containing dict
---
.bugs/192 | 16 ++++++++++++
web/htdocs/wato.py | 42 +++++++------------------------
web/plugins/wato/builtin_attributes.py | 6 ----
3 files changed, 26 insertions(+), 38 deletions(-)
diff --git a/.bugs/192 b/.bugs/192
new file mode 100644
index 0000000..fb48813
--- /dev/null
+++ b/.bugs/192
@@ -0,0 +1,16 @@
+Title: Dashlets mit Reload bleiben bei Apache Fehler hängen
+Component: multisite
+Benefit: 3
+State: open
+Cost: 3
+Date: 2011-08-16 17:13:46
+Class: bug
+
+Der Apache Fehler bleibt stehen. Der Reload passiert nicht mehr:
+
+----
+
+
+OMD: Site Not Started
+You need to start this site in order to access the web interface.
+----
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index f6c2961..3ed2786 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -780,7 +780,6 @@ def mode_edithost(phase, new):
go_to_services = html.var("services")
if html.check_transaction():
g_hosts[hostname] = host
- mark_as_dirty(g_hosts[hostname])
if new:
message = _("Created new host %s.") % hostname
log_pending(hostname, "create-host", message)
@@ -1212,7 +1211,6 @@ def mode_bulk_edit(phase):
hostnames = get_hostnames_from_checkboxes()
for hostname in hostnames:
host = g_hosts[hostname]
- mark_as_dirty(host)
host.update(changed_attributes)
log_pending(hostname, "bulk-edit", _("Changed attributes of host %s in bulk mode") % hostname)
write_the_configuration_file()
@@ -1254,7 +1252,6 @@ def mode_bulk_cleanup(phase):
hostnames = get_hostnames_from_checkboxes()
for hostname in hostnames:
host = g_hosts[hostname]
- mark_as_dirty(host)
num_cleaned = 0
for attrname in to_clean:
num_cleaned += 1
@@ -1380,7 +1377,6 @@ def mode_changelog(phase):
try:
check_mk_automation("restart")
call_hook_activate_changes()
- undirt_hosts()
except Exception, e:
raise MKUserError(None, str(e))
log_commit_pending() # flush logfile with pending actions
@@ -1538,31 +1534,6 @@ def render_audit_log(log, what, with_filename = False):
# | Functions needed at various places |
# +----------------------------------------------------------------------+
-def get_dirty_hosts():
- dirty_hosts = {}
- load_folder_config()
- for hostname, attributes in collect_hosts(g_root_folder).iteritems():
- if attributes.get('dirty', 'no') == 'yes':
- dirty_hosts[hostname] = attributes
- return dirty_hosts
-
-def mark_as_dirty(host):
- host['dirty'] = 'yes'
-
-def undirt_hosts():
- # Seems very dirty with all the global things here. Clean this up!
- global g_hosts, g_folder, g_file
- old_file = g_file
- old_folder = g_folder
- for hostname, attributes in get_dirty_hosts().iteritems():
- g_file = g_files[attributes['file']]
- g_folder = find_folder(attributes['file'][:-1])
- read_the_configuration_file()
- del g_hosts[hostname]['dirty']
- write_the_configuration_file()
- g_file = old_file
- g_folder = old_folder
-
def check_mk_automation(command, args=[], indata=""):
# Gather the command to use for executing --automation calls to check_mk
# - First try to use the check_mk_automation option from the defaults
@@ -2291,7 +2262,6 @@ def move_hosts_to(hostnames, target_filename):
continue
target_hosts[hostname] = g_hosts[hostname]
- mark_as_dirty(target_hosts[hostname])
target_file["num_hosts"] += 1
g_file["num_hosts"] -= 1
del g_hosts[hostname]
@@ -3178,6 +3148,9 @@ def collect_hosts(the_thing):
host["file"] = the_thing[".path"]
return effective_hosts
+def hook_registered(name):
+ """ Returns True if at least one function is registered for the given hook """
+ return hooks.get(name, []) != []
def call_hooks(name, *args):
n = 0
@@ -3219,10 +3192,15 @@ def call_hook_activate_changes():
This hook is executed when one applies the pending configuration changes
from wato.
+ But it is only excecuted when there is at least one function
+ registered for this host.
+
The registered hooks are called with a dictionary as parameter which
- has the dirty hostnames as keys and the attributes of the hosts as values.
+ holds all available with the hostnames as keys and the attributes of
+ the hosts as values.
"""
- call_hooks("activate-changes", get_dirty_hosts())
+ if hook_registered('activate-changes'):
+ call_hooks("activate-changes", collect_hosts(g_root_folder))
# +----------------------------------------------------------------------+
# | ____ _ _ |
diff --git a/web/plugins/wato/builtin_attributes.py b/web/plugins/wato/builtin_attributes.py
index 5235b11..1e14102 100644
--- a/web/plugins/wato/builtin_attributes.py
+++ b/web/plugins/wato/builtin_attributes.py
@@ -33,9 +33,3 @@ declare_host_attribute(IPAddressAttribute("ipaddress", _("IP Address"),
"hostname lookup. Enter a hostname to use dynamic resoluting "
"during the actual monitoring."), mandatory=True, dnslookup=True),
show_in_table=True, show_in_folder=True)
-
-
-declare_host_attribute(EnumAttribute("dirty", _("Dirty"),
- _("Modified since last "Active Changes"?"),
- "No", [ ('no', _('No')), ('yes', _('Yes'))]),
- show_in_table = False, show_in_folder = False, show_in_form = False)
Module: check_mk
Branch: master
Commit: 7b62855f7817216263cd04f535df53b7d3044ef3
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=7b62855f781721…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Aug 16 16:54:20 2011 +0200
Livestatus: tried to fix timeperiod problem
---
livestatus/src/TimeperiodsCache.cc | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/livestatus/src/TimeperiodsCache.cc b/livestatus/src/TimeperiodsCache.cc
index 96007ec..b00815a 100644
--- a/livestatus/src/TimeperiodsCache.cc
+++ b/livestatus/src/TimeperiodsCache.cc
@@ -56,11 +56,13 @@ void TimeperiodsCache::update(time_t now)
return;
}
- _cache_time = minutes;
-
// Loop over all timeperiods and compute if we are
- // currently in
+ // currently in. Detect the case where no time periods
+ // are known (yet!). This might be the case when a timed
+ // event broker message arrives *before* the start of the
+ // event loop.
timeperiod *tp = timeperiod_list;
+ int num_periods = 0;
while (tp) {
bool is_in = 0 == check_time_against_period(now, tp);
@@ -76,7 +78,13 @@ void TimeperiodsCache::update(time_t now)
}
tp = tp->next;
+ num_periods++;
}
+ if (num_periods > 0)
+ _cache_time = minutes;
+ else
+ logger(LG_INFO, "Timeperiod cache not updated, there are no timeperiods (yet)");
+
pthread_mutex_unlock(&_cache_lock);
}