Bug 27087 - Manchmal fehlen Fehlermeldungen beim Löschen/Verschieben/Anlegen/Editieren
Manchmal fehlen Fehlermeldungen beim Löschen/Verschieben/Anlegen/Editieren
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - Domain management (Generic)
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.0-2
Assigned To: Lukas Walter
Felix Botner
: interim-1
Depends on:
Blocks: 27088
  Show dependency treegraph
 
Reported: 2012-05-11 11:13 CEST by Andreas Büsching
Modified: 2012-07-20 15:25 CEST (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
provide error messages (1.07 KB, patch)
2012-05-11 11:13 CEST, Andreas Büsching
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Büsching univentionstaff 2012-05-11 11:13:24 CEST
Created attachment 4369 [details]
provide error messages

Wenn das Löschen von Objekten fehlschlägt werden vom Frontend keine
Fehlermeldungen angezeigt. 

Der angehängte Patch fixed das
Comment 1 Lukas Walter univentionstaff 2012-06-14 12:45:03 CEST
Patch sieht gut aus. Wurde getestet und eingespielt.

Paket gebaut, Changelogeintrag hinzugefügt.
Comment 2 Felix Botner univentionstaff 2012-06-15 09:47:34 CEST
Das funktioniert nun prinzipiell, jedoch wird der genaue Fehlermeldung nicht ausgegeben. 
Im umc-udm log stand bei mit beispielsweise 

 Failed to remove LDAP object cn=memberserver,cn=computers,dc=i386,dc=de: 
 permissionDenied:

die UMC zeigt aber nur

 Die/das folgende(n) Objekt(e) konnte(n) nicht gelöscht werden:
 cn=master,cn=dc,cn=computers,dc=i386,dc=de:

an. Es wäre sicher hilfreich, wenn im Fehlerfall auch angezeigt wird, warum etwas schief gegangen ist.
Comment 3 Lukas Walter univentionstaff 2012-06-15 16:54:33 CEST
Wenn ich ich via UMC cn=mas,cn=computers,dc=adfgsd,dc=asdasdljgdf: LDAP object could not be identifiedversuche ein Objekt zu löschen das es bereits nicht mehr gibt wird mir auch ausgegeben WARUM das betroffene Objekt nicht gelöscht werden kann.

Etwa:
"cn=mas,cn=computers,dc=adfgsd,dc=asdasdljgdf: LDAP object could not be identified"
Comment 4 Lukas Walter univentionstaff 2012-06-15 16:55:46 CEST
(In reply to comment #3)
> Wenn ich ich via UMC cn=mas,cn=computers,dc=adfgsd,dc=asdasdljgdf: LDAP object
> could not be identifiedversuche ein Objekt zu löschen das es bereits nicht mehr
> gibt wird mir auch ausgegeben WARUM das betroffene Objekt nicht gelöscht werden
> kann.
> 
> Etwa:
> "cn=mas,cn=computers,dc=adfgsd,dc=asdasdljgdf: LDAP object could not be
> identified"

Copy&Paste Fehler.
=====================================================

Wenn ich ich via UMC versuche ein Objekt zu löschen das es bereits nicht mehr
gibt wird mir auch ausgegeben WARUM das betroffene Objekt nicht gelöscht werden
kann.

Etwa:
"cn=mas,cn=computers,dc=adfgsd,dc=asdasdljgdf: LDAP object could not be
identified"
Comment 5 Lukas Walter univentionstaff 2012-06-18 16:16:02 CEST
(In reply to comment #2)
> Das funktioniert nun prinzipiell, jedoch wird der genaue Fehlermeldung nicht
> ausgegeben. 
> Im umc-udm log stand bei mit beispielsweise 
> 
>  Failed to remove LDAP object cn=memberserver,cn=computers,dc=i386,dc=de: 
>  permissionDenied:
> 
> die UMC zeigt aber nur
> 
>  Die/das folgende(n) Objekt(e) konnte(n) nicht gelöscht werden:
>  cn=master,cn=dc,cn=computers,dc=i386,dc=de:
> 
> an. Es wäre sicher hilfreich, wenn im Fehlerfall auch angezeigt wird, warum
> etwas schief gegangen ist.

Das tritt offenbar nur für bestimmte Fehler auf.
Comment 6 Lukas Walter univentionstaff 2012-06-19 13:54:46 CEST
univention-management-console-module-udm (1.0.282-1) unstable; urgency=low

  * fixed messages which are displayed when adding/modifying/moving/removing
    an object failed (Bug #27087)


Das Problem bestand darin, dass in udm_ldap.UDM_Module generisch alle in admin/uexceptions.py definierten Exceptions abgefangen und dann in der Form "raise UDM_Error(str(e))" weitergereicht werden.

Die in uexceptions.py definierten Exceptions implementieren jedoch ein eigenes "message" Attribut in der sie bei der Erstellung ihre Fehlermeldung ablegen (statt die magic method "__str__()" zu überschreiben), weshalb sie für einen str() Zugriff auf ihre Instanzen einfach nur einen leeren String zurück liefern.

Um solche Probleme in Zukunft zu vermeiden wurde udm_ldap.py die Funktion "get_exception_msg(e)" hinzugefügt, die e.message zurückliefert wenn vorhanden und nicht leer bzw. einen fallback auf str(e) wenn dem nicht so ist.

Diese Funktion wird jetzt an jeder Stelle in udm.udm_ldap.UDM_Module verwendet, an der ein UDM_Error geworfen wird, d.h. in den Methoden create, move, modify und remove.


=============================
QA:
======
Folgende Fälle wurden nach dieser Änderung bereits getestet, sollten in der QA aber nochmal überprüft werden:

Als Administrator via UMC:
- Einen Benutzer editieren und dabei einen Namen zuweisen der bereits vergeben ist
- Einen Benutzer entfernen der nicht mehr existiert
- Einen Computer verschieben der nicht mehr existiert
- Einen Benutzer anlegen dessen Passwort gegen die gerbte Password policy verstößt (z.b. nur ein Zeichen lang)

Als gewöhnlicher Domain User via UMC:
- Einen anderen Benutzer verschieben/editieren/löschen/anlegen (wichtig ist, dass der eingeloggte User dazu nicht die Berechtigung haben darf)
======================
Das Verhalten ist in Ordnung, wenn in jedem Fehlerfall eine sinnige Meldung ausgegeben wird.




Paket gebaut, Changelogeintrag zu diesem Bug wurde überarbeitet.
Comment 7 Felix Botner univentionstaff 2012-06-19 15:13:45 CEST
OK, die Meldungen werden jetzt angezeigt.

Changelog Eintrag vorhanden.
Comment 8 Lukas Walter univentionstaff 2012-07-11 14:37:22 CEST
> Im Zuge von Bug 23525 wird die Exception univention.admin.uexception.valueError
> geworfen. Diese erbt von indirekt von der Klasse "Exception", was dazu führt,
> dass sowohl die Attribute "message" als auch "args" gesetzt sind.
> In modules/univention/admincli/admin.py:389ff werden beide Attribute
> ausgewertet und zu einer Meldung zusammengesetzt. Dadurch steht der Text
> anschließend doppelt in der CLI. Der Web-UDM verhält sich genauso.
> 
> root@myproxy:~# pkill -f "cli-server" ; eval "$(ucr shell)"; udm users/user
> create --position cn=users,$ldap_base --set username=foo1 --set
> password=univention --set mailPrimaryAddress=foo1@ding.dong.org --set
> lastname="univention"
> 
> The domain of given mail primary address (...@ding.dong.org) does not match any
> mail domain object: The domain of given mail primary address
> (...@ding.dong.org) does not match any mail domain object.
(vgl. Bug #7389)

Das betrifft auch das Frontend.
Comment 9 Lukas Walter univentionstaff 2012-07-11 15:46:20 CEST
(In reply to comment #8)
> > Im Zuge von Bug 23525 wird die Exception univention.admin.uexception.valueError
> > geworfen. Diese erbt von indirekt von der Klasse "Exception", was dazu führt,
> > dass sowohl die Attribute "message" als auch "args" gesetzt sind.
> > In modules/univention/admincli/admin.py:389ff werden beide Attribute
> > ausgewertet und zu einer Meldung zusammengesetzt. Dadurch steht der Text
> > anschließend doppelt in der CLI. Der Web-UDM verhält sich genauso.
> > 
> > root@myproxy:~# pkill -f "cli-server" ; eval "$(ucr shell)"; udm users/user
> > create --position cn=users,$ldap_base --set username=foo1 --set
> > password=univention --set mailPrimaryAddress=foo1@ding.dong.org --set
> > lastname="univention"
> > 
> > The domain of given mail primary address (...@ding.dong.org) does not match any
> > mail domain object: The domain of given mail primary address
> > (...@ding.dong.org) does not match any mail domain object.
> (vgl. Bug #7389)
> 
> Das betrifft auch das Frontend.

Behoben.


univention-management-console-module-udm (1.0.286-1) unstable; urgency=low

  * print every error message only once (Bug #27087)
Comment 10 Felix Botner univentionstaff 2012-07-11 18:00:30 CEST
OK, funktioniert

-> udm users/user modify --dn uid=test1,cn=users,dc=amd,dc=ggg --set mailPrimaryAddress=foo1@ding.dong.org
The following mail primary address' domain does not match to any mail domain object: foo1@ding.dong.org.
Comment 11 Felix Botner univentionstaff 2012-07-13 10:43:22 CEST
komisch, jetzt wird die Fehlermeldung wieder doppelt ausgegeben.

-> udm users/user modify --dn uid=felix,cn=schueler,cn=users,ou=s01,dc=amd64,dc=de --append mailAlternativeAddress=aaa@ww.ee

The domain part of the following mail addresses is not in list of configured mail domains: aaa@ww.ee: The domain part of the following mail addresses is not in list of configured mail domains: aaa@ww.ee

python-univention-directory-manag 7.0.286-1.853.201207131031
Comment 12 Lukas Walter univentionstaff 2012-07-13 11:26:50 CEST
(In reply to comment #11)
> komisch, jetzt wird die Fehlermeldung wieder doppelt ausgegeben.
> 
> -> udm users/user modify --dn
> uid=felix,cn=schueler,cn=users,ou=s01,dc=amd64,dc=de --append
> mailAlternativeAddress=aaa@ww.ee
> 
> The domain part of the following mail addresses is not in list of configured
> mail domains: aaa@ww.ee: The domain part of the following mail addresses is not
> in list of configured mail domains: aaa@ww.ee
> 
> python-univention-directory-manag 7.0.286-1.853.201207131031

CLI Bug, das gehört mit zum generischen Bug #7389 und wird dort weiterbehandelt.
Comment 13 Felix Botner univentionstaff 2012-07-13 12:23:45 CEST
OK
Comment 14 Stefan Gohmann univentionstaff 2012-07-20 15:25:16 CEST
UCS 3.0-2 has been released: 
  http://forum.univention.de/viewtopic.php?f=54&t=1905

If this error occurs again, please use "Clone This Bug".