Bug 44871 - import_networks throws superordinate related exception
import_networks throws superordinate related exception
Status: NEW
Product: UCS@school
Classification: Unclassified
Component: Import scripts
UCS@school 4.4
Other Linux
: P5 normal (vote)
: ---
Assigned To: UCS@school maintainers
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2017-06-27 12:52 CEST by Sönke Schwardt-Krummrich
Modified: 2020-07-14 10:02 CEST (History)
1 user (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 4: Minor Usability: Impairs usability in secondary scenarios
Who will be affected by this bug?: 1: Will affect a very few installed domains
How will those affected feel about the bug?: 3: A User would likely not purchase the product
User Pain: 0.069
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:
schwardt: Patch_Available+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sönke Schwardt-Krummrich univentionstaff 2017-06-27 12:52:01 CEST
root@ucs-master:~# /usr/share/ucs-school-import/scripts/import_networks ucs-bgy.csv 
infile is  : ucs-bgy.csv
verify ou for school nr BGY
need to attach policy: cn=dhcp-dns-clear,cn=policies,ou=BGY,dc=school,dc=support
generate network 10.200.16.0/24
iprange: 10.200.16.20-10.200.16.250
defaultrouter: 10.200.16.1
nameserver: 10.200.16.11
netbiosserver: 10.200.16.11
creating object cn=10.200.16.0,cn=bgy,cn=dhcp,ou=BGY,dc=school,dc=support
creating object cn=bgy-10.200.16.0,cn=networks,ou=BGY,dc=school,dc=support
setting default router
Traceback (most recent call last):
  File "/usr/share/ucs-school-import/scripts/import_networks", line 3191, in <module>
    import_networks()
  File "/usr/share/ucs-school-import/scripts/import_networks", line 2029, in import_networks
    success, dn = create_network(schoolNr, network, iprange=iprange, defaultrouter=defaultrouter, nameserver=nameserver, netbiosserver=netbiosserver)
  File "/usr/share/ucs-school-import/scripts/import_networks", line 1806, in create_network
    set_router_for_subnet(network, defaultrouter, schoolNr)
  File "/usr/share/ucs-school-import/scripts/import_networks", line 2220, in set_router_for_subnet
    return set_policy_for_dhcp_subnet(network, schoolNr, policy_dhcp_routing_module, dn, values['name'], values=values, overwrite_policy=overwrite_policy)
  File "/usr/share/ucs-school-import/scripts/import_networks", line 2124, in set_policy_for_dhcp_subnet
    base=baseDN, filter=univention.admin.filter.expression('cn', str(network.network)))
  File "/usr/lib/pymodules/python2.7/univention/admin/modules.py", line 746, in lookup
    tmpres = module.lookup(co, lo, filter, base=base, superordinate=superordinate, scope=scope, unique=unique, required=required, timeout=timeout, sizelimit=sizelimit)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/dhcp/__common.py", line 116, in lookup
    for dn, attrs in lo.search(filter_str, base, scope, [], unique, required, timeout, sizelimit)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 596, in __init__
    self._validate_superordinate()
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 624, in _validate_superordinate
    raise univention.admin.uexceptions.insufficientInformation(_('The DN must be underneath of the superordinate.'))
univention.admin.uexceptions.insufficientInformation: The DN must be underneath of the superordinate.


Looks like the search base in ucs-school-import:2124 is wrong (LDAP base but it should be dhcp_service_dn).


--- a/ucs-school-4.2/ucs-school-import/usr/share/ucs-school-import/scripts/ucs-school-import
+++ b/ucs-school-4.2/ucs-school-import/usr/share/ucs-school-import/scripts/ucs-school-import
@@ -2121,7 +2121,7 @@ def set_policy_for_dhcp_subnet(network, schoolNr, policy_module, policy_dn, cn,
 	for dhcp_service_dn in dhcp_service_list:
 		dhcp_subnet_list = univention.admin.modules.lookup(
 			dhcp_subnet_module, co, lo, scope='sub', superordinate=dhcp_service_dn,
-			base=baseDN, filter=univention.admin.filter.expression('cn', str(network.network)))
+			base=dhcp_service_dn, filter=univention.admin.filter.expression('cn', str(network.network)))
 
 		subnet_dn = "cn=%s,cn=%s,cn=dhcp,%s" % (str(network.network), schoolNr.lower(), getDN(schoolNr))
 		for dhcp_subnet in dhcp_subnet_list:
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2017-06-28 16:48:35 CEST
> +			base=dhcp_service_dn, filter=univention.admin.filter.expression('cn', str(network.network)))

Should be

+			base=dhcp_service_dn.dn, filter=univention.admin.filter.expression('cn', str(network.network)))

since dhcp_service_dn is an UDM object and no string.