Univention Bugzilla – Bug 52566
udm/put (users/user): TypeError: unhashable type: 'list'
Last modified: 2021-11-19 12:51:59 CET
Version: 4.4-7 errata835 (Blumenthal) Remark: kk Error: Internal server error during "udm/put (users/user)". Request: udm/put (users/user) File "%PY2.7%/notifier/threads.py", line 80, in _run result = self._function() File "%PY2.7%/notifier/__init__.py", line 104, in __call__ return self._function(*tmp, **self._kwargs) File "%PY2.7%/univention/management/console/modules/udm/__init__.py", line 440, in _thread module.modify(properties) File "%PY2.7%/univention/management/console/modules/udm/udm_ldap.py", line 645, in modify obj.modify() File "%PY2.7%/univention/admin/handlers/users/user.py", line 1410, in modify return super(object, self).modify(*args, **kwargs) File "%PY2.7%/univention/admin/handlers/__init__.py", line 650, in modify dn = self._modify(modify_childs, ignore_license=ignore_license, response=response) File "%PY2.7%/univention/admin/handlers/__init__.py", line 1326, in _modify ml = self._ldap_object_classes(ml) File "%PY2.7%/univention/admin/handlers/__init__.py", line 1439, in _ldap_object_classes newattr = ldap.cidict.cidict(_MergedAttributes(self, ml).get_attributes()) File "%PY2.7%/univention/admin/handlers/__init__.py", line 3612, in get_attributes return dict((attr, self.get_attribute(attr)) for attr in attributes) File "%PY2.7%/univention/admin/handlers/__init__.py", line 3612, in <genexpr> return dict((attr, self.get_attribute(attr)) for attr in attributes) File "%PY2.7%/univention/admin/handlers/__init__.py", line 3623, in get_attribute values |= set(new) TypeError: unhashable type: 'list' Role: domaincontroller_master
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?
I filed Bug 53551 for office365 scenario