Module: check_mk
Branch: master
Commit: 5906923a7e38492402ccd7bc09ef2a41bb59d794
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5906923a7e3849…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Thu Jul 2 10:52:32 2015 +0200
#2322 FIX mkeventd: MIBs are now only loaded if SNMP Traps translation is activated
Right now the mkeventd sometimes has problems loading mib files which
lead to errors like "list index out of range". The error can now be bypassed
by deactivating the option <i>Translate SNMP traps</i>.
The error itself will get fixed in a following werk.
---
.werks/2322 | 14 ++++++++++++++
ChangeLog | 3 +++
mkeventd/bin/mkeventd | 2 +-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/.werks/2322 b/.werks/2322
new file mode 100644
index 0000000..c549912
--- /dev/null
+++ b/.werks/2322
@@ -0,0 +1,14 @@
+Title: mkeventd: MIBs are now only loaded if SNMP Traps translation is activated
+Level: 1
+Component: ec
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.7i3
+Date: 1435826874
+
+Right now the mkeventd sometimes has problems loading mib files which
+lead to errors like "list index out of range". The error can now be bypassed
+by deactivating the option <i>Translate SNMP traps</i>.
+
+The error itself will get fixed in a following werk.
diff --git a/ChangeLog b/ChangeLog
index 084f217..a6f1929 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -61,6 +61,9 @@
* 2369 FIX: Fix exception in BI availability via table "Hostname Aggregations"
* 2370 FIX: Fix computation of "in downtime" and "acknownledged" of hosts in BI aggregations...
+ Event Console:
+ * 2322 FIX: mkeventd: MIBs are now only loaded if SNMP Traps translation is activated...
+
HW/SW-Inventory:
* 2367 FIX: win_system: Fixed exception when non-UTF-8 sequences are contained agent output
diff --git a/mkeventd/bin/mkeventd b/mkeventd/bin/mkeventd
index 3bc6802..6812da7 100755
--- a/mkeventd/bin/mkeventd
+++ b/mkeventd/bin/mkeventd
@@ -2616,7 +2616,7 @@ class StatusServer:
def handle_command_reload(self):
with lock_configuration:
load_configuration()
- if opt_snmptrap:
+ if opt_snmptrap and g_config['translate_snmptraps']:
g_event_server.load_mibs()
g_event_server.compile_rules(g_config["rules"], g_config["rule_packs"])
g_status_server.reload_configuration()
Module: check_mk
Branch: master
Commit: ff3cbdd3062d2df101ac5fcf823520e67d7e5caa
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ff3cbdd3062d2d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jun 26 08:20:26 2015 +0200
Intermediate step in cleanups
---
web/htdocs/userdb.py | 59 +++++++++++++++++++++++-----------------
web/htdocs/wato.py | 3 +-
web/plugins/userdb/htpasswd.py | 6 ++--
web/plugins/userdb/ldap.py | 8 ++----
4 files changed, 40 insertions(+), 36 deletions(-)
diff --git a/web/htdocs/userdb.py b/web/htdocs/userdb.py
index e391864..8d8647d 100644
--- a/web/htdocs/userdb.py
+++ b/web/htdocs/userdb.py
@@ -60,7 +60,7 @@ def load_plugins():
# declare & initialize global vars
user_attributes = {}
- multisite_user_connectors = []
+ multisite_user_connectors = {}
load_web_plugins("userdb", globals())
builtin_user_attribute_names = user_attributes.keys()
@@ -68,7 +68,7 @@ def load_plugins():
# Connectors have the option to perform migration of configuration options
# while the initial loading is performed
- for connector in multisite_user_connectors:
+ for connector in multisite_user_connectors.values():
connector.get('migrate_config', lambda: None)()
# This must be set after plugin loading to make broken plugins raise
@@ -77,28 +77,37 @@ def load_plugins():
loaded_with_language = current_language
-def list_user_connectors():
- return [ (c['id'], c['title']) for c in multisite_user_connectors ]
-
-def enabled_connectors():
- connectors = []
- for connector in multisite_user_connectors:
- if connector.get('is_active', lambda: False)():
- connectors.append(connector)
+# Returns a list of two part tuples where the first element is the unique
+# connection id and the second element the connector specification dict
+def active_connections():
+ connections = []
+ for connector_id, connector in multisite_user_connectors.items():
+ if connector_id == 'htpasswd':
+ # htpasswd connector is enabled by default and always executed first
+ connections.insert(0, ('htpasswd', connector))
+ else:
+ for connection in get_connection_config():
+ connections.append((connection['id'], connector))
return connectors
-def get_connector_id(connector_id):
- if connector_id is None:
- connector_id = 'htpasswd'
- return connector_id
+
+def cleanup_connection_id(connection_id):
+ if connection_id is None:
+ connection_id = 'htpasswd'
+
+ # Old Check_MK used a static "ldap" connector id for all LDAP users.
+ # Since Check_MK now supports multiple LDAP connections, the ID has
+ # been changed to "default"
+ if connection_id == 'ldap':
+ connection_id = 'default'
+
+ return connection_id
+
# Returns the connector dictionary of the given id
-def get_connector(connector_id):
- connector_id = get_connector_id(connector_id)
- for connector in enabled_connectors():
- if connector['id'] == connector_id:
- return connector
- return {}
+def get_connector(connection_id):
+ return dict(active_connections()).get(cleanup_connection_id(connection_id), {})
+
# Returns a list of locked attributes
def locked_attributes(connector_id):
@@ -757,7 +766,7 @@ def save_connection_config():
# This hook is called to validate the login credentials provided by a user
def hook_login(username, password):
- for connector in enabled_connectors():
+ for connection_id, connector in active_connections():
handler = connector.get('login', None)
if not handler:
continue
@@ -796,9 +805,9 @@ def hook_login(username, password):
# c) Before activating the changes in WATO
def hook_sync(connector_id = None, add_to_changelog = False, only_username = None, raise_exc = False):
if connector_id:
- connectors = [ get_connector(connector_id) ]
+ connectors = [ (connector_id, get_connector(connector_id)) ]
else:
- connectors = enabled_connectors()
+ connectors = active_connections()
no_errors = True
for connector in connectors:
@@ -835,7 +844,7 @@ def hook_sync(connector_id = None, add_to_changelog = False, only_username = Non
# Hook function can be registered here to be executed during saving of the
# new user construct
def hook_save(users):
- for connector in enabled_connectors():
+ for connection_id, connector in active_connections():
handler = connector.get('save', None)
if not handler:
continue
@@ -876,7 +885,7 @@ def hook_page():
if 'page' not in config.userdb_automatic_sync:
return
- for connector in enabled_connectors():
+ for connection_id, connector in active_connections():
handler = connector.get('page', None)
if not handler:
continue
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index f3729f6..abe2034 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -12338,7 +12338,8 @@ def mode_users(phase):
table.cell(_("Connector"), connector['short_title'])
locked_attributes = userdb.locked_attributes(user.get('connector'))
else:
- table.cell(_("Connector"), "%s (disabled)" % userdb.get_connector_id(user.get('connector')), css="error")
+ table.cell(_("Connector"), "%s (disabled)" %
+ userdb.cleanup_connection_id(user.get('connector')), css="error")
locked_attributes = []
# Authentication
diff --git a/web/plugins/userdb/htpasswd.py b/web/plugins/userdb/htpasswd.py
index 4d39c97..7c5c9bb 100644
--- a/web/plugins/userdb/htpasswd.py
+++ b/web/plugins/userdb/htpasswd.py
@@ -130,14 +130,12 @@ def htpasswd_save(users):
if rename_file:
os.rename(filename, filename[:-4])
-multisite_user_connectors.append({
- 'id' : 'htpasswd',
+multisite_user_connectors['htpasswd'] = {
'title' : _('Apache Local Password File (htpasswd)'),
'short_title' : _('htpasswd'),
# Register hook functions
- 'is_active' : lambda: True,
'login' : htpasswd_login,
'save' : htpasswd_save,
# Not registering: sync, locked_attributes, page
-})
+}
diff --git a/web/plugins/userdb/ldap.py b/web/plugins/userdb/ldap.py
index 05d2ca8..0f535c3 100644
--- a/web/plugins/userdb/ldap.py
+++ b/web/plugins/userdb/ldap.py
@@ -1002,9 +1002,6 @@ ldap_attribute_plugins['groups_to_roles'] = {
# | Hook functions used in this connector |
# '----------------------------------------------------------------------'
-def ldap_is_active():
- return bool([ c for c in connection_config if c['type'] == 'ldap' and not c.get('disabled') ])
-
# This function only validates credentials, no locked checking or similar
def ldap_login(username, password):
ldap_connect()
@@ -1284,12 +1281,11 @@ def ldap_migrate_config():
save_connection_config()
-multisite_user_connectors.append({
+multisite_user_connectors['ldap'] = {
'id' : 'ldap',
'title' : _('LDAP (Active Directory, OpenLDAP)'),
'short_title' : _('LDAP'),
- 'is_active' : ldap_is_active,
'migrate_config' : ldap_migrate_config,
'login' : ldap_login,
'sync' : ldap_sync,
@@ -1302,4 +1298,4 @@ multisite_user_connectors.append({
'locked_attributes' : ldap_locked_attributes,
'multisite_attributes' : ldap_multisite_attributes,
'non_contact_attributes' : ldap_multisite_attributes,
-})
+}