Bug 17915 - Aktualisierung des UDM-Beispiel-Moduls
Aktualisierung des UDM-Beispiel-Moduls
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UDM (Generic)
UCS 2.3
Other Linux
: P5 normal (vote)
: ---
Assigned To: Arvid Requate
Philipp Hahn
http://wiki.univention.de/index.php?t...
:
Depends on:
Blocks: 17630
  Show dependency treegraph
 
Reported: 2010-03-18 13:53 CET by Moritz Muehlenhoff
Modified: 2023-03-25 06:44 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
Weitere Änderungswünsche (8.52 KB, patch)
2011-02-04 17:12 CET, Philipp Hahn
Details | Diff
Weitere Änderungswünsche (2.98 KB, patch)
2011-02-15 16:22 CET, Philipp Hahn
Details | Diff
Weitere Änderungswünsche 3 (mit Whitespace) (15.90 KB, patch)
2011-02-16 08:00 CET, Philipp Hahn
Details | Diff
Weitere Änderungswünsche 3 (ohne Whitespace) (21.10 KB, patch)
2011-02-16 08:01 CET, Philipp Hahn
Details | Diff
Noch 2 Bugfixes + Kosmetik (14.94 KB, patch)
2011-02-17 08:47 CET, Philipp Hahn
Details | Diff
Fehler in Localisation (6.54 KB, patch)
2011-02-18 11:36 CET, Philipp Hahn
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Moritz Muehlenhoff univentionstaff 2010-03-18 13:53:31 CET
Das Beispiel-Modul für den UDM - früher als univention-admin-modules im CVS - sollte an den UDM angepasst werden.
Comment 1 Moritz Muehlenhoff univentionstaff 2010-03-18 13:54:38 CET
Ich hatte damit im Rahmen der Doku-Aktualisierung schon angefangen, der aktuelle Stand findet sich in trunk/ucs/management/univention-directory-manager-module-example
Comment 2 Moritz Muehlenhoff univentionstaff 2010-03-26 13:36:39 CET
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!
Comment 3 Philipp Hahn univentionstaff 2010-03-26 14:01:13 CET
(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)
Comment 4 Arvid Requate univentionstaff 2011-02-03 17:56:57 CET
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).
Comment 5 Philipp Hahn univentionstaff 2011-02-04 17:12:10 CET
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.
Comment 6 Arvid Requate univentionstaff 2011-02-07 15:33:12 CET
Die Punkte sollten jetzt angepasst sein.
Comment 7 Philipp Hahn univentionstaff 2011-02-15 16:22:21 CET
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>
Comment 8 Arvid Requate univentionstaff 2011-02-15 18:23:19 CET
Ist jetzt eingebaut.
Comment 9 Philipp Hahn univentionstaff 2011-02-16 08:00:57 CET
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()
Comment 10 Philipp Hahn univentionstaff 2011-02-16 08:01:33 CET
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()
Comment 11 Philipp Hahn univentionstaff 2011-02-16 08:02:54 CET
Wichtig wäre nur noch die Änderung am postinst, der Rest wäre Kosmetik.
Comment 12 Arvid Requate univentionstaff 2011-02-16 10:30:58 CET
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).
Comment 13 Sönke Schwardt-Krummrich univentionstaff 2011-02-16 12:19:04 CET
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.
Comment 14 Arvid Requate univentionstaff 2011-02-16 13:44:54 CET
Shell globbing funktioniert nicht, wenn die Dateien nicht da sind. Jetzt wird find verwendet.
Comment 15 Philipp Hahn univentionstaff 2011-02-17 08:47:23 CET
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
Comment 16 Philipp Hahn univentionstaff 2011-02-17 08:47:58 CET
Siehe Attachment #3046 [details].
Comment 17 Arvid Requate univentionstaff 2011-02-17 09:31:50 CET
Sieht gut aus, test-implementation ist ebenfalls mit eingechecked.
Comment 18 Philipp Hahn univentionstaff 2011-02-18 11:36:00 CET
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)
Comment 19 Philipp Hahn univentionstaff 2011-02-18 11:39:13 CET
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