Bug 28209 - DHCP-Einträge werden bei Join nicht erstellt
DHCP-Einträge werden bei Join nicht erstellt
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Join (univention-join)
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Philipp Hahn
Arvid Requate
: interim-3
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-14 15:10 CEST by Philipp Hahn
Modified: 2012-12-12 21:09 CET (History)
1 user (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:
hahn: Patch_Available+


Attachments
test_bug28209.sh (1.95 KB, text/plain)
2012-11-20 12:42 CET, Arvid Requate
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Hahn univentionstaff 2012-08-14 15:10:01 CEST
Joint man einen managedclient oder mobileclient per univention-join, so werden die DHCP-Einträge nicht erstellt.

Ursache ist ein Fehler in univention-server-join: Anhand des Domainnamen wird zwar die DN des DHCP-Service-Eintrag herausgesucht, aber diese wird 1:1 beim anschließenden Anlegen des Rechner-Objekts an "--set dhcpEntryZone=$dn" übergeben. Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC", zumindest wird solch ein Eintrag zurückgeliefert, wenn man den Rechner per Web-UMC anlegt und sich anschließend auf der CLI ausgeben lässt:

# udm computers/managedclient list | grep dhcpEntryZone
  dhcpEntryZone: cn=phahn.dev,cn=dhcp,dc=phahn,dc=dev 10.200.17.41 52:54:00:fd:97:e9


PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für computers/managedclient und computers/mobileclient eingetragen, obwohl das Attribut von allen computers/*-Klassen unterstützt wird.

--- a/branches/ucs-3.1/ucs/management/univention-join/univention-server-join
+++ b/branches/ucs-3.1/ucs/management/univention-join/univention-server-join
@@ -220,16 +220,9 @@ create_entry () {
-               if [ -n "$MAC" -a -n "$dhcpEntry" -a "$module" = "computers/managedclient" ]; then
-                       args+=(--set mac="$MAC" --set dhcpEntryZone="$dhcpEntry")
-               elif [ -n "$MAC" -a -n "$dhcpEntry" -a "$module" = "computers/mobileclient" ]; then
-                       args+=(--set mac="$MAC" --set dhcpEntryZone="$dhcpEntry")
-               elif [ -n "$MAC" ]; then
-                       args+=(--set mac="$MAC")
-               fi
+               if [ -n "$MAC" ]; then
+                       args+=(--set mac="$MAC")
+               fi
+               # DHCP
+               if [ -n "$dhcpEntry" ] && [ -n "$IP" ] && [ -n "$MAC" ]; then
+                       args+=(--set dhcpEntryZone="$dhcpEntry $IP $MAC")
+               fi
Comment 1 Stefan Gohmann univentionstaff 2012-08-14 15:30:32 CEST
(In reply to comment #0)
> Joint man einen managedclient oder mobileclient per univention-join, so werden
> die DHCP-Einträge nicht erstellt.
> 
> Ursache ist ein Fehler in univention-server-join: Anhand des Domainnamen wird
> zwar die DN des DHCP-Service-Eintrag herausgesucht, aber diese wird 1:1 beim
> anschließenden Anlegen des Rechner-Objekts an "--set dhcpEntryZone=$dn"
> übergeben. Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC", zumindest
> wird solch ein Eintrag zurückgeliefert, wenn man den Rechner per Web-UMC anlegt
> und sich anschließend auf der CLI ausgeben lässt:

Da hat sich die Syntax in 3.0 geändert.

> # udm computers/managedclient list | grep dhcpEntryZone
>   dhcpEntryZone: cn=phahn.dev,cn=dhcp,dc=phahn,dc=dev 10.200.17.41
> 52:54:00:fd:97:e9
> 
> 
> PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für
> computers/managedclient und computers/mobileclient eingetragen, obwohl das
> Attribut von allen computers/*-Klassen unterstützt wird.

Das sollten wir IMHO auch nicht ändern.
Comment 2 Philipp Hahn univentionstaff 2012-08-14 19:36:20 CEST
(In reply to comment #1)
> (In reply to comment #0)
> > Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC".
> 
> Da hat sich die Syntax in 3.0 geändert.

Das wurde korrigiert.

> > PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für
> > computers/managedclient und computers/mobileclient eingetragen, obwohl das
> > Attribut von allen computers/*-Klassen unterstützt wird.
> 
> Das sollten wir IMHO auch nicht ändern.

Das wurde so belassen.

svn34834, univention-join_5.0.1-1.380.201208141908

Changelog: svn14314
\item DHCP entries are created again for managed and mobile clients (\ucsBug{27209}).
Comment 3 Arvid Requate univentionstaff 2012-11-19 17:47:20 CET
Nach Installation von python-univention-directory-manager-legacy-ucd-tcs auf dem Master und Join eines UCS 2.4-4 Systems ist kein dhcpEntryZone-Eintrag angelegt.

Auch ein manueller Aufruf legt keinen DHCP-Eintrag an:
=============================
root@master1:~# /usr/share/univention-join/univention-server-join -role client -hostname managed -domainname arucs31i5.qa -ip 10.200.8.24 -netmask 255.255.255.0 -binddn "uid=Administrator,cn=users,dc=arucs31i5,dc=qa" -bindpwfile "/tmp/tmp.ZIdzKlWipO" -mac 11:22:33:44:55:66
univention-server-join: joins a server to an univention domain
copyright (c) 2001-2012 Univention GmbH, Germany

ldap_dn="cn=managed,cn=computers,dc=arucs31i5,dc=qa"
KerberosPasswd="cJH7ba5o"
=============================


Im Code wird eine Variable dhcpEntry abgefragt, die nirgendwo gesetzt wird?
=============================
                # DHCP
                case "$module" in
                computers/managedclient|computers/mobileclient)
                        if [ -n "$dhcpEntry" ] && [ -n "$IP" ] && [ -n "$MAC" ]; then
                                args+=(--set dhcpEntryZone="$dhcpEntry $IP $MAC")
                        fi
                        ;;
                esac
=============================

Ggf. diesen Bug schlicht auf wontfix setzen, weil nicht mehr relevant?
Comment 4 Philipp Hahn univentionstaff 2012-11-20 08:40:02 CET
(In reply to comment #3)
> Im Code wird eine Variable dhcpEntry abgefragt, die nirgendwo gesetzt wird?

RTFS:
univention-server-join:327
	dhcpEntry="$(univention-directory-manager dhcp/service list \
		--filter name="$DOMAINNAME" \
		"${ADMINOPTIONS[@]}" | sed -ne 's/^DN: //p')"

(In reply to comment #3)
> Auch ein manueller Aufruf legt keinen DHCP-Eintrag an:

WORKS-FOR-ME:
service=$(udm dhcp/service list |
 sed -ne 's/^DN: //p;T;q')
subnet=$(udm dhcp/subnet list --superordinate "$service" |
 sed -ne 's/^  subnet: //p;T;q')
bash -x /usr/share/univention-join/univention-server-join \
 -role mobileclient \
 -hostname foo \
 -domainname "$(ucr get domainname)" \
 -ip "${subnet%.*}.$((2 + RANDOM % 252))" \
 -netmask 255.255.255.0 \
 -mac 01:02:03:04:05:06 \
 -binddn "$(univention-ldapsearch -xLLL cn=Administrator dn |
  sed -ne 's/^dn: //p;T;q')" \
 -bindpwfile <(echo -n univention)
udm dhcp/host list \
 --superordinate "$service" \
 --filter host=foo
Comment 5 Arvid Requate univentionstaff 2012-11-20 11:19:38 CET
Changelog fehlt noch
Comment 6 Philipp Hahn univentionstaff 2012-11-20 11:30:16 CET
Falsche Bugnummer: 2[7→8]209
ChangeLog: svn15636
\item DHCP entries are again created for managed and mobile clients (\ucsBug{28209}).
Comment 7 Arvid Requate univentionstaff 2012-11-20 12:42:19 CET
Created attachment 4815 [details]
test_bug28209.sh

Verified:

 * Das ganze funktioniert nur, wenn ein DHCP service existiert der den
   Domänennamen trägt.
Comment 8 Stefan Gohmann univentionstaff 2012-12-12 21:09:22 CET
UCS 3.1-0 has been released: 
 http://forum.univention.de/viewtopic.php?f=54&t=2125

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