Bug 55604 - Searching for dhcp/host hwaddress is broken
Searching for dhcp/host hwaddress is broken
Status: REOPENED
Product: UCS
Classification: Unclassified
Component: UDM (Generic)
UCS 5.0
Other Linux
: P5 normal (vote)
: UCS 5.0-7-errata
Assigned To: Marius Meschter
UMC maintainers
https://git.knut.univention.de/univen...
:
: 53818 56568 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2023-01-27 12:19 CET by Mika Westphal
Modified: 2024-04-23 12:38 CEST (History)
6 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 3: Simply Wrong: The implementation doesn't match the docu
Who will be affected by this bug?: 3: Will affect average number of installed domains
How will those affected feel about the bug?: 2: A Pain – users won’t like this once they notice it
User Pain: 0.103
Enterprise Customer affected?: Yes
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2023012321000926, 2023050421000213, 2023032821000486, 2022111121000271
Bug group (optional): Error handling, External feedback
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mika Westphal univentionstaff 2023-01-27 12:19:41 CET
Version: 5.0-2 errata547
Role: domaincontroller_master

Error:
Internal server error during "udm/query (dhcp/dhcp)".
Request: udm/query (dhcp/dhcp)

Traceback (most recent call last):
  File "%PY3%/notifier/threads.py", line 80, in _run
    result = self._function()
  File "%PY3%/notifier/__init__.py", line 105, in __call__
    return self._function(*tmp, **self._kwargs)
  File "%PY3%/univention/management/console/modules/udm/__init__.py", line 612, in _thread
    result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden, allow_asterisks=USE_ASTERISKS)
  File "%PY3%/univention/management/console/modules/udm/udm_ldap.py", line 677, in search
    result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit, **kwargs)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1790, in lookup
    filter_s = cls.lookup_filter(filter_s, lo)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1821, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "%PY3%/univention/admin/filter.py", line 127, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "%PY3%/univention/admin/filter.py", line 321, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "%PY3%/univention/admin/filter.py", line 326, in walk
    expression_walk_function(filter_p, arg)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1894, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value, encoding_errors='ignore')
  File "%PY3%/univention/admin/mapping.py", line 565, in mapValueDecoded
    value = self.mapValue(map_name, value, encoding_errors=errors)
  File "%PY3%/univention/admin/mapping.py", line 557, in mapValue
    value = map_value(value, **kwargs)
  File "%PY3%/univention/admin/handlers/dhcp/host.py", line 114, in mapHWAddress
    return old.encode(*encoding)
AttributeError: 'list' object has no attribute 'encode'
Comment 1 Christina Scheinig univentionstaff 2023-05-04 15:53:18 CEST
still happens with UCS5.0-3 
How to reproduce:

Use Filter DHCP Host → Property: Hardware address → search a HW Address
*Bam*
Comment 3 Florian Best univentionstaff 2023-05-22 16:54:18 CEST
Reproducer:

curl 'https://Administrator:univention@demo.univention.de/univention/command/udm/query' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json; q=1.0, text/html; q=0.3; */*; q=0.1' \
  --data-raw '{"options":{"superordinate":"cn=service,cn=dhcp,dc=demo,dc=univention,dc=de","hidden":false,"objectType":"dhcp/host","objectProperty":"hwaddress","objectPropertyValue":"112233445566","container":"cn=sr,cn=dhcp,dc=demo,dc=univention,dc=de","scope":"one","fields":["name","hwaddress","labelObjectType","path"]},"flavor":"dhcp/dhcp"}'
Comment 4 Florian Best univentionstaff 2023-05-22 16:56:19 CEST
*** Bug 53818 has been marked as a duplicate of this bug. ***
Comment 5 Florian Best univentionstaff 2023-05-22 16:56:56 CEST
(In reply to Florian Best from comment #4)
> *** Bug 53818 has been marked as a duplicate of this bug. ***

UDM-CLI:

# udm dhcp/host list --filter 'hwaddress=ethernet 22:4b:21:25:31:8a'                                                                                                                                                           
Traceback (most recent call last):
  File "/usr/share/univention-directory-manager-tools/univention-cli-server", line 213, in doit
    output = univention.admincli.admin.doit(arglist)
  File "/usr/lib/python3/dist-packages/univention/admincli/admin.py", line 380, in doit
    out = _doit(arglist)
  File "/usr/lib/python3/dist-packages/univention/admincli/admin.py", line 657, in _doit
    out.extend(cli.list(list_policies, filter, superordinate_dn, policyOptions, policies_with_DN))
  File "/usr/lib/python3/dist-packages/univention/admincli/admin.py", line 689, in list
    return self._list(self.module_name, self.module, self.dn, self.lo, self.position, self.superordinate, *args, **kwargs)                                                                                                                    
  File "/usr/lib/python3/dist-packages/univention/admincli/admin.py", line 951, in _list
    for object in univention.admin.modules.lookup(module, None, lo, scope='sub', superordinate=superordinate, base=position.getDn(), filter=filter):                                                                                          
  File "/usr/lib/python3/dist-packages/univention/admin/modules.py", line 953, 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/python3/dist-packages/univention/admin/handlers/__init__.py", line 1773, in lookup
    filter_s = cls.lookup_filter(filter_s, lo)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1804, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 124, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 313, in walk
    expression_walk_function(filter_p, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1867, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 559, in mapValueDecoded
    value = self.mapValue(map_name, value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 553, in mapValue
    value = map_value(value, **kwargs)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/dhcp/host.py", line 111, in mapHWAddress
    return old.encode(*encoding)
AttributeError: 'list' object has no attribute 'encode'

UMC:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/notifier/threads.py", line 80, in _run
    result = self._function()
  File "/usr/lib/python3/dist-packages/notifier/__init__.py", line 105, in __call__
    return self._function(*tmp, **self._kwargs)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/__init__.py", line 607, in _thread
    result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden)
  File "/usr/lib/python3/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 685, in search
    result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit, **kwargs)                                                                                     
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1773, in lookup
    filter_s = cls.lookup_filter(filter_s, lo)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1804, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 124, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 308, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/filter.py", line 313, in walk
    expression_walk_function(filter_p, arg)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/__init__.py", line 1867, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 559, in mapValueDecoded
    value = self.mapValue(map_name, value)
  File "/usr/lib/python3/dist-packages/univention/admin/mapping.py", line 553, in mapValue
    value = map_value(value, **kwargs)
  File "/usr/lib/python3/dist-packages/univention/admin/handlers/dhcp/host.py", line 111, in mapHWAddress
    return old.encode(*encoding)
AttributeError: 'list' object has no attribute 'encode'
Comment 7 Florian Best univentionstaff 2023-09-11 13:51:03 CEST
*** Bug 56568 has been marked as a duplicate of this bug. ***
Comment 8 Mika Westphal univentionstaff 2023-12-08 10:41:50 CET
2023120121000401  5.0-5 errata892

Internal server error during "udm/query (dhcp/dhcp)".
Request: udm/query (dhcp/dhcp)

Traceback (most recent call last):
  File "%PY3%/univention/management/console/modules/decorators.py", line 259, in _run
    result = self._function(*args, **kwargs)  # type: Union[BaseException, _T]
  File "%PY3%/univention/management/console/modules/udm/__init__.py", line 601, in query
    result = module.search(container, objectProperty, objectPropertyValue, superordinate, scope=scope, hidden=hidden, allow_asterisks=USE_ASTERISKS)
  File "%PY3%/univention/management/console/modules/udm/udm_ldap.py", line 681, in search
    result = self.module.lookup(None, ldap_connection, filter_s, base=container, superordinate=superordinate, scope=scope, sizelimit=sizelimit, **kwargs)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1800, in lookup
    filter_s = cls.lookup_filter(filter_s, lo)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1831, in lookup_filter
    filter_p.append_unmapped_filter_string(filter_s, cls.rewrite_filter, module.mapping)
  File "%PY3%/univention/admin/filter.py", line 124, in append_unmapped_filter_string
    walk(filter_p, rewrite_function, arg=mapping)
  File "%PY3%/univention/admin/filter.py", line 316, in walk
    walk(e, expression_walk_function, conjunction_walk_function, arg)
  File "%PY3%/univention/admin/filter.py", line 321, in walk
    expression_walk_function(filter_p, arg)
  File "%PY3%/univention/admin/handlers/__init__.py", line 1904, in rewrite_filter
    filter.value = mapping.mapValueDecoded(key, filter.value, encoding_errors='ignore')
  File "%PY3%/univention/admin/mapping.py", line 556, in mapValueDecoded
    value = self.mapValue(map_name, value, encoding_errors=errors)
  File "%PY3%/univention/admin/mapping.py", line 548, in mapValue
    value = map_value(value, **kwargs)
  File "%PY3%/univention/admin/handlers/dhcp/host.py", line 113, in mapHWAddress
    return old.encode(*encoding)
AttributeError: 'list' object has no attribute 'encode'