Univention Bugzilla – Bug 17915
Aktualisierung des UDM-Beispiel-Moduls
Last modified: 2023-03-25 06:44:51 CET
Das Beispiel-Modul für den UDM - früher als univention-admin-modules im CVS - sollte an den UDM angepasst werden.
Ich hatte damit im Rahmen der Doku-Aktualisierung schon angefangen, der aktuelle Stand findet sich in trunk/ucs/management/univention-directory-manager-module-example
Aus 17630 zum aktuellen Status: 1. univention-directory-manager-module-example-1.0 enthält noch die .svn-Verzeichnisse. 2. Wenn man direkt beim Anlegen nach aktivieren von "Zeige die erweiterten Einstellungen" auf den Reiter "(Optionen)" wechselt, bekommt man folgenden Traceback: Traceback (most recent call last): File "/usr/share/univention-webui/modules/requests.py", line 271, in run_request self.dialog.init(0,xmlout,xmlout.documentElement) File "./unidialog.py", line 63, in init uniconf.init(self,a,b,c) File "/usr/share/univention-webui/modules/uniconf.py", line 183, in init obj.init(input,xmlob,self.find_id(node,obj.id)) File "/usr/share/univention-webui/modules/uniconf.py", line 162, in init self.myinit() File "/usr/share/univention-directory-manager/uniconf/modedit.py", line 430, in myinit if self.object.options: AttributeError: 'object' object has no attribute 'options' Editiert man erst später den Eintrag und wählt dann erst "Zeige die erweiterten Einstellungen" aus, erscheint der Reiter "(Optionen)" erst gar nicht. 3. Beim Speichern der Daten per OK, habe ich dann folgendes bekommen: Beim Übernehmen der Änderungen ist ein Fehler aufgetreten: LDAP-Fehler Undefined attribute type Ursache für beides: "invoke-rc.d slapd restart" fehlt. Es sollte erwähnt werden, daß nach dem Einspielen des Schemas der SLAPd neu gestartet werden muß. 4. Und nun der Hammer: root@ma18:/tmp# slapcat 2>/dev/null | wc -l 10852 root@ma18:/tmp# dpkg -r univention-directory-manager-module-example (Lese Datenbank ... 162793 Dateien und Verzeichnisse sind derzeit installiert.) Entferne univention-directory-manager-module-example ... root@ma18:/tmp# slapcat 2>/dev/null | wc -l 28 Das passiert reproduzierbar jedes mal beim Entfernen!
(In reply to comment #2) > 4. Und nun der Hammer: > root@ma18:/tmp# slapcat 2>/dev/null | wc -l > 10852 > root@ma18:/tmp# dpkg -r univention-directory-manager-module-example > (Lese Datenbank ... 162793 Dateien und Verzeichnisse sind derzeit installiert.) > Entferne univention-directory-manager-module-example ... > root@ma18:/tmp# slapcat 2>/dev/null | wc -l > 28 > > Das passiert reproduzierbar jedes mal beim Entfernen! Das Problem habe ich bereits mit Commit r15831 behoben: /etc/ldpa/slapd.conf war nochmal als Multi-File registriert, weshalb beim Uninstall das dpkg-divert darauf Rückgängig gemacht wurde. (Siehe Bug #16644)
Das Beispielmodul ist jetzt etwas erweitert. Es zeigt * Definition von 'advanced' Reitern * Definition von optionalen Reitern Das Paket zeigt darüberhinaus: * Separation des schema-Pakets * Beispielskript, das die Python UDM Modul-API verwendet ('ip-phone-tool') Die SVN-URL des Moduls ist jetzt auf der Wiki-Seite ('Entwicklung und Integration eigener Module in Univention Directory Manager') verlinkt. Das Modul ist weiterhin recht basic. Das Objekt lässt sich z.B. im UDM Web nur per Navigation anlegen (kein wizzard).
Created attachment 3016 [details] Weitere Änderungswünsche IMHO sollte das Paket auch einem unbedarften Entwickler ein funktionierendes Paket liefert, wozu noch ein paar kleinere Änderungen notwendig sind: 1. Das schema-Paket sollte auch den LDAP-Server neu starten, wenn das Schema installiert wird 2. Beim entfernen des Schema-Pakets verschwindet die /u/s/u-ldap/schema/*.schema-Datei, welche aber noch von /etc/ldap/slapd.conf includiert wird. Sie ist damit ungültig und der der LDAP-Server wird nicht mehr starten. 3. Explizite Referenzen auf python2.4 vermeiden und Dateien direkt in /u/s/pyshared ablegen, den Rest erledigt pycentral. 4. Nach dem Installieren des UDM-Module sollte der UDM-cli-Server neu gestartet werden.
Die Punkte sollten jetzt angepasst sein.
Created attachment 3038 [details] Weitere Änderungswünsche In UDM sollte nicht direkt per "import univention.admin.handlers.$MODULE" auf Module zugegriffen werden, sondern nur per "univention.admin.modules.get('$MODULE')", da erst durch diese Indirektion Custom-/Extended-Attributes sowie Anpassungen per UCR.Variable (Syntaxänderung, Attribute ein-/ausblenden, etc.) funktionieren. Es gibt auch noch den Wrapper univention.admin.modules.lookup(), den ich mir aber hier in meiner Version (siehe Attachment) gespart habe. Siehe <https://hutten.knut.univention.de/mediawiki/index.php/Philipp_memo/UDM#FAQ>
Ist jetzt eingebaut.
Created attachment 3039 [details] Weitere Änderungswünsche 3 (mit Whitespace) Slapd nur auf master im postrm neu starten Alle Übersetzbaren Texte mit _() markieren und als Unicode markieren Überflüssige Imports entfernen In den Properties False und True statt 0 und 1 verwenden (getestet) Hinweis auf advanced=True im Layout DocString für nicht dokumentierte Methoden ergänzt: exists(), _remove_attr()
Created attachment 3040 [details] Weitere Änderungswünsche 3 (ohne Whitespace) Slapd nur auf master im postrm neu starten Alle Übersetzbaren Texte mit _() markieren und als Unicode markieren Überflüssige Imports entfernen In den Properties False und True statt 0 und 1 verwenden (getestet) Hinweis auf advanced=True im Layout DocString für nicht dokumentierte Methoden ergänzt: exists(), _remove_attr()
Wichtig wäre nur noch die Änderung am postinst, der Rest wäre Kosmetik.
Anpassungen sind jetzt drin, zusätzlich Übersetungsdatei und Skript zum generieren der Übsertzungsdatei. Die bool Syntax wurde durch TrueFalseUp ersetzt (die LDAP-Werte sollten nicht Sprachabhängig sein).
Source-Paket aus offiziellem SVN heute um 11:45 heruntergeladen. Paketbau schlägt fehl, weil für das UDM-Modul keine gif- bzw. png-Datei vorhanden ist.
Shell globbing funktioniert nicht, wenn die Dateien nicht da sind. Jetzt wird find verwendet.
Created attachment 3046 [details] Noch 2 Bugfixes + Kosmetik + * Fix installation path of translation catalog (Bug #17915) die landeten in debian/debian/... + * Fix creating entry with immediate --redirect. Ein direktes 'ip-phone-tool set voip1 10.1.0.42 sip:user1@dom.local --redirect sip:otheruser@dom.local' funktionierte nicht, weil beim Anlegen old_options dann bereits 'redirection' enthielt und deswegen die ObjectClass nicht durch _ldap_modlist() hinzugefügt wurde + * Handle errors in ip-phone-tool. Löschen von nicht-existenten Objekten, falsche LDAP credentials, ... + * Parameter errors should exit with 2. + * debian/rules: Fix clean target. Die .mo-Files wurden nicht gelöscht + * Fix quoting. Wir wollen ja vorbildlich sein + * Add simple script to test implementation. Don't repeat yourself. Und vor dem Commit bitte noch ein paar Dateien für svn unsichtbar machen: svn ps svn:ignore $'*.conffiles\n*.debhelper\n*.log\n*.substvars\nfiles' debian
Siehe Attachment #3046 [details].
Sieht gut aus, test-implementation ist ebenfalls mit eingechecked.
Created attachment 3050 [details] Fehler in Localisation In der Beispielanwendung wurde die Localisation nicht initialisiert: setlocale(LC_ALL, '') Im deutschen Übersetzungskatalog hat der Header gefehlt, der u.A. die wichtige Information des verwendeten Zeichensatzes (utf-8) enthält. refresh-i18n moniert nun Fehler: --check (Bei C-Programmen sehr wichtig, weil falsche %-Sequenzen dort SEGVs erzeugen können)
Alle Änderungen sind im SVN eingepflegt, das Paket läßt sich standalone auf einem sauberen System übersetzen und installieren. Sowohl UDM-Webclient, UDM-CLI als auch das ip-phone-Tool funktionieren. svn22663: VERIFIED