Univention Bugzilla – Full Text Bug Listing |
Summary: | udm/put (users/user): TypeError: unhashable type: 'list' | ||
---|---|---|---|
Product: | UCS | Reporter: | Christian Castens <castens> |
Component: | UDM (Generic) | Assignee: | UMC maintainers <umc-maintainers> |
Status: | NEW --- | QA Contact: | UMC maintainers <umc-maintainers> |
Severity: | normal | ||
Priority: | P5 | CC: | best, bhattacharjee, scheinig |
Version: | UCS 4.4 | ||
Target Milestone: | --- | ||
Hardware: | Other | ||
OS: | Linux | ||
See Also: |
https://forge.univention.org/bugzilla/show_bug.cgi?id=41899 https://forge.univention.org/bugzilla/show_bug.cgi?id=53551 https://forge.univention.org/bugzilla/show_bug.cgi?id=54102 |
||
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?: | --- |
User Pain: | Enterprise Customer affected?: | ||
School Customer affected?: | Yes | ISV affected?: | |
Waiting Support: | Flags outvoted (downgraded) after PO Review: | ||
Ticket number: | 2020121121000808, 2021012521000551, 2021070221000441, 2021082021000271 | Bug group (optional): | Error handling, External feedback |
Max CVSS v3 score: | |||
Attachments: | reproduce joinscript |
Description
Christian Castens
2021-01-08 13:37:02 CET
UCS Version: 4.4-7 errata873 (Blumenthal) Interner Server-Fehler in "udm/put (users/user)". Request: udm/put (users/user) File "/usr/lib/python2.7/dist-packages/notifier/threads.py", line 80, in _run result = self._function() File "/usr/lib/python2.7/dist-packages/notifier/__init__.py", line 104, in __call__ return self._function(*tmp, **self._kwargs) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/udm/__init__.py", line 440, in _thread module.modify(properties) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 645, in modify obj.modify() File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/users/user.py", line 1410, in modify return super(object, self).modify(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 650, in modify dn = self._modify(modify_childs, ignore_license=ignore_license, response=response) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1330, in _modify self.dn = self.lo.modify(self.dn, ml, ignore_license=ignore_license, serverctrls=serverctrls, response=response) File "/usr/lib/python2.7/dist-packages/univention/admin/uldap.py", line 891, in modify return self.lo.modify(dn, changes, serverctrls=serverctrls, response=response) File "/usr/lib/python2.7/dist-packages/univention/uldap.py", line 207, in _decorated return func(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/uldap.py", line 756, in modify self.modify_ext_s(dn, ml, serverctrls=serverctrls, response=response) File "/usr/lib/python2.7/dist-packages/univention/uldap.py", line 207, in _decorated return func(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/uldap.py", line 813, in modify_ext_s rtype, rdata, rmsgid, resp_ctrls = self.lo.modify_ext_s(dn, ml, serverctrls=serverctrls) File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 987, in modify_ext_s return self._apply_method_s(SimpleLDAPObject.modify_ext_s,*args,**kwargs) File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 931, in _apply_method_s return func(self,*args,**kwargs) File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 373, in modify_ext_s msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls) File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 370, in modify_ext return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls)) File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 106, in _ldap_call result = func(*args,**kwargs) TypeError: ('expected a string in the list', ['fos2', '']) Interner Server-Fehler in "udm/put (users/user)". Created attachment 10630 [details]
reproduce joinscript
One example way to reproduce this is a (broken) extended attribute with complex syntax:
udm users/user modify --dn uid=test,cn=users,dc=base --set borgbackup-user-sshkey-fullaccess='"ssh-xxx" "foo"'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/univention/admincli/admin.py", line 1127, in <module>
print('\n'.join(doit(sys.argv)))
File "/usr/lib/python2.7/dist-packages/univention/admincli/admin.py", line 409, in doit
out = _doit(arglist)
File "/usr/lib/python2.7/dist-packages/univention/admincli/admin.py", line 908, in _doit
dn = object.modify()
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/users/user.py", line 1410, in modify
return super(object, self).modify(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 650, in modify
dn = self._modify(modify_childs, ignore_license=ignore_license, response=response)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1326, in _modify
ml = self._ldap_object_classes(ml)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1439, in _ldap_object_classes
newattr = ldap.cidict.cidict(_MergedAttributes(self, ml).get_attributes())
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3612, in get_attributes
return dict((attr, self.get_attribute(attr)) for attr in attributes)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3612, in <genexpr>
return dict((attr, self.get_attribute(attr)) for attr in attributes)
File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3623, in get_attribute
values |= set(new)
TypeError: unhashable type: 'list'
→ ml is:
[('borgbackupSSHKeyFullAccess', '', [['ssh-xxx', 'foo']]), ('objectClass', ['krb5KDCEntry', 'organizationalPerson', 'automount', 'top', 'inetOrgPerson'
, 'sambaSamAccount', 'person', 'univentionPWHistory', 'shadowAccount', 'univentionObject', 'univentionMail', 'krb5Principal', 'posixAccount'], ['krb5KDCEntry', 'person', 'automount', 'top', 'borgbackupUser', 'inetOrgPerson', 'sambaSamAccount', 'organizationalPerson', 'univentionPWHistory', 'shadowAccount', 'univentionObject', 'univentionMail', 'krb5Principal', 'posixAccount'])]
A customer gets this traceback, when trying to set AD Connection via UMC. Office365 connector is installed on a Backup server. The UMC of the Master is used for the adjustment. ----------------------------- Interner Server-Fehler in "udm/put (users/user)". Request: udm/put (users/user) File "/usr/lib/python2.7/dist-packages/notifier/threads.py", line 80, in _run result = self._function() File "/usr/lib/python2.7/dist-packages/notifier/__init__.py", line 104, in __call__ return self._function(*tmp, **self._kwargs) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/udm/__init__.py", line 440, in _thread module.modify(properties) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/udm/udm_ldap.py", line 645, in modify obj.modify() File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/users/user.py", line 1410, in modify return super(object, self).modify(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 650, in modify dn = self._modify(modify_childs, ignore_license=ignore_license, response=response) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1326, in _modify ml = self._ldap_object_classes(ml) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 1439, in _ldap_object_classes newattr = ldap.cidict.cidict(_MergedAttributes(self, ml).get_attributes()) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3612, in get_attributes return dict((attr, self.get_attribute(attr)) for attr in attributes) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3612, in <genexpr> return dict((attr, self.get_attribute(attr)) for attr in attributes) File "/usr/lib/python2.7/dist-packages/univention/admin/handlers/__init__.py", line 3623, in get_attribute values |= set(new) TypeError: unhashable type: 'list' -------------------- Setting the attribute via udm it works fine: udm users/user modify --dn="uid=sun.devschueler,cn=schueler,cn=users,ou=SUN,dc=schein,dc=schule" --set UniventionOffice365ADConnectionAlias=sunADconnection udm users/user modify --dn="uid=sun.devschueler,cn=schueler,cn=users,ou=SUN,dc=schein,dc=schule" --set UniventionOffice365Enabled=1 univention-app info: Backup: ------------- Installed: office365=3.4 prometheus-node-exporter=1.1 ucsschool=4.4 v9 Master: ------------- UCS: 4.4-8 errata974 Installed: prometheus-node-exporter=1.1 ucsschool=4.4 v9 ucsschool-veyon-proxy=1.1 How can I investigate? New discovery, if the customer uses the UMC of the backup server, he does not get an traceback. I think this should be a new bug? |