Bug 21083 - post_hooks werden nicht ausgeführt, wenn create_ou implizit aufgerufen wird
post_hooks werden nicht ausgeführt, wenn create_ou implizit aufgerufen wird
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: Import scripts
unspecified
Other Linux
: P5 normal (vote)
: UCS@school 3.0 MS1
Assigned To: Felix Botner
Janek Walkenhorst
:
: 20201 21078 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-01-04 10:02 CET by Roman Asendorf
Modified: 2012-06-11 06:29 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

Note You need to log in before you can comment on or make changes to this bug.
Description Roman Asendorf univentionstaff 2011-01-04 10:02:13 CET
Die post_hooks werden nicht bei impliziten Aufrufen von create_ou ausgeführt ( siehe bspw. import_networks).
Comment 1 Roman Asendorf univentionstaff 2011-01-04 10:02:26 CET
*** Bug 21078 has been marked as a duplicate of this bug. ***
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2011-01-04 10:13:29 CET
Es sollte kurz geprüft werden, ob dieser Bug im Produkt auch auftritt. Es ist möglich, dass es sich hierbei um ein kundenspezifisches Problem handelt.
Comment 3 Felix Botner univentionstaff 2012-01-20 15:05:11 CET
In verify_school_ou() wird geschaut, ob die OU schon in verified_ous definiert ist. Falls ja springt er raus, falls nicht versucht er die OU anzulegen und speichert die OU dann in verified_ous.

Das klappt natürlich beim ersten Auftreten einer OU nicht, da diese noch nicht geprüft wurde und nicht in verified_ous vorhanden ist. Daher wird in diesem Fall der ou_pre_hook immer ausgeführt.

Später in verify_school_ou() wird dann verify_container() auf die OU aufgerufen. Diese Funktion gibt False zurück wenn der Container bereits existiert. Der ou_pre_hook wird nur aufgerufen, wenn verify_container() auf die OU nicht False ist.

Bei mehrmaligem Import von z.B. Netzwerken wurde also nur der ou_pre_hook (beim erstmaligem Auftreten einer OU im Import File) und nicht der ou_post_hook (da der Container ja bereits existiert) aufgerufen.

Beim erstmaligem Import (die OU gibt es im LDAP noch nicht), wurden die Hooks immer korrekt aufgerufen.

Änderung:

Vor dem ou_pre_hook wird nachgesehen, ob diese OU Objekt existiert. Nur wenn es nicht existiert wird der ou_pre_hook aufgerufen.
Comment 4 Felix Botner univentionstaff 2012-01-20 17:03:24 CET
*** Bug 20201 has been marked as a duplicate of this bug. ***
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2012-02-07 11:20:32 CET
Comment aus Bug 20201:
> Ggf. ist es sinnvoll, den postcreate-Hook nachträglich auch noch mal
> aufzurufen, um z.B. das Vorhandensein des Marktplatzes überprüfen zu können.

Da der Pre-Hook für OUs jetzt nicht mehr aufgerufen wird, wenn die OU bereits existiert, kann mit den OU-Hooks z.B. kein zweiter Marktplatz für bestehende OUs nachgepflegt werden. Wir sollten diese Änderung daher wieder zurücknehmen und die pre-OU-Hooks vor jeder aktiven Prüfung der OU ausführen. Das Caching soll davon unbeeinflusst bleiben. D.h. wenn die OU in einem Programmdurchlaub bereits geprüft wurde, wird das pre-OU-Hookskript nicht nocheinmal aufgerufen.

> Die post_hooks werden nicht bei impliziten Aufrufen von create_ou ausgeführt (
> siehe bspw. import_networks).

Wann werden die Posthooks für OUs ausgeführt?
Nur, wenn eine OU angelegt wurde? Oder auch, wenn z.B. ein fehlender Container nachgepflegt wurde?
Wird das Posthookskript auch aufgerufen, wenn z.B. über import_networks eine unbekannte/neue OU verwendet wird und automatisch über das verify_ou() angelegt wird? Beim impliziten Aufruf sollte sich verify_ou() genauso verhalten, wie bei einem expliziten Aufruf.
Comment 6 Janek Walkenhorst univentionstaff 2012-02-07 11:50:35 CET
So soll das Verhalten sein:
                        | PRE | POST
------------------------+-----+----
create_ou  OU fehlt     | Ja  |  Ja
create_ou  OU existiert | Ja  | Nein
verify_ou  OU fehlt     | Ja  |  Ja
verify_ou  OU exisitert | Ja  | Nein

("create_ou" meint das explizite Ausführen des create_ou-Skripts,
 "verify_ou" meint das implizite Erstellen durch andere Import-Skripte)
Comment 7 Felix Botner univentionstaff 2012-02-09 13:49:21 CET
(In reply to comment #6)
> So soll das Verhalten sein:
>                         | PRE | POST
> ------------------------+-----+----
> create_ou  OU fehlt     | Ja  |  Ja
> create_ou  OU existiert | Ja  | Nein
> verify_ou  OU fehlt     | Ja  |  Ja
> verify_ou  OU exisitert | Ja  | Nein
> 
> ("create_ou" meint das explizite Ausführen des create_ou-Skripts,
>  "verify_ou" meint das implizite Erstellen durch andere Import-Skripte)

OK, pre ou hook wird nun immer ausgeführt (bis auf das Cache in verify_ou)
Comment 8 Janek Walkenhorst univentionstaff 2012-02-09 17:29:00 CET
(In reply to comment #7)
> (In reply to comment #6)
> > So soll das Verhalten sein:
> >                         | PRE | POST
> > ------------------------+-----+----
> > create_ou  OU fehlt     | Ja  |  Ja
> > create_ou  OU existiert | Ja  | Nein
> > verify_ou  OU fehlt     | Ja  |  Ja
> > verify_ou  OU exisitert | Ja  | Nein
> > 
> > ("create_ou" meint das explizite Ausführen des create_ou-Skripts,
> >  "verify_ou" meint das implizite Erstellen durch andere Import-Skripte)
> 
> OK, pre ou hook wird nun immer ausgeführt (bis auf das Cache in verify_ou)

OK

Changelog OK
Comment 9 Stefan Gohmann univentionstaff 2012-06-11 06:29:33 CEST
UCS@school 3.0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer  neueren Version von UCS@school erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"