Univention Bugzilla – Bug 32402
Listener module for replication of UDM Hook extensions
Last modified: 2013-11-19 06:43:06 CET
A listener module for the replication of UDM Hook extensions should be implemented, * running on UCS Master, Backup, Slave and Memberservers * filtering for a specific objectClass representing UDM Hook extensions * writing the value of an LDAP attribute "univentionUDMHook" * to a file specified by another LDAP attribute "univentionUDMHookFilename" * below the directory /usr/share/pyshared/univention/admin/hooks.d * It must not overwrite newer versions by older versions. * It updates the python Links e.g. by calling update-python-modules -p These extension objects are created by metapackage joinscripts using a univention-lib function.
Implemented as part of listener udm_extension shipped by the package python-univention-directory-manager. Changelog committed.
I got the following message in the join log of a DC Slave: 20.08.13 11:10:07.870 LISTENER ( ERROR ) : udm_extension: Termination of univention-cli-server processes failed: 1. Traceback (most recent call last): File "/usr/lib/univention-directory-listener/system/udm_extension.py", line 164, in handler lo, ldap_position = udm_uldap.getAdminConnection() File "/usr/lib/pymodules/python2.6/univention/admin/uldap.py", line 63, in getAdminConnection lo=univention.uldap.getAdminConnection(start_tls, decode_ignorelist=decode_ignorelist) File "/usr/lib/pymodules/python2.6/univention/uldap.py", line 68, in getAdminConnection bindpw=open('/etc/ldap.secret').read() IOError: [Errno 2] No such file or directory: '/etc/ldap.secret' 20.08.13 11:10:07.879 LISTENER ( WARN ) : handler: udm_extension (failed)
The activation code must only run on the master, like it's done in the ldap_extesion listener. I adjusted the udm_extension listener code accordingly.
udm_extension.py contains some typos (UCS vs. UCR): → current_UCR_version="%s-%s" % (listener.configRegistry.get('version/version'), listener.configRegistry.get('version/patchlevel')) → if univentionUCSVersionStart and current_UCR_version<univentionUCSVersionStart: → extension %s requires at least UCR version %s. → REOPEN ucsversionend should be inclusive → separated into see Bug 32676 → found by ucs-test 21_listener_version_start_end → REOPEN
The UCS version comparison is implemented as simple string comparison: >>> '3.2-1' < '3.10-2' False >>> '3.2-9' < '3.2-10' False → REOPEN
Ok, fixed by using the UCS_Version class from univention.updater.tools.
Changelog + Test cases + Tests: OK
UCS 3.2 has been released: http://docs.univention.de/release-notes-3.2-en.html http://docs.univention.de/release-notes-3.2-de.html If this error occurs again, please use "Clone This Bug".