Bug 54650 - ADC sync_from_ucs: traceback if "description" upper/lower case differs between OpenLDAP and AD
ADC sync_from_ucs: traceback if "description" upper/lower case differs betwee...
Status: NEW
Product: UCS
Classification: Unclassified
Component: AD Connector
UCS 4.4
Other Linux
: P5 normal (vote)
: ---
Assigned To: Samba maintainers
Samba maintainers
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2022-04-06 18:08 CEST by Arvid Requate
Modified: 2022-06-09 08:32 CEST (History)
5 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 5: Major Usability: Impairs usability in key 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.086
Enterprise Customer affected?:
School Customer affected?: Yes
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2022033021000643, 2022051921000171
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Requate univentionstaff 2022-04-06 18:08:24 CEST
If you sync a multivalue case insensitive attribute like "description" from UCS to AD, then you get this traceback if the AD object already has the same description script, albeit with a different upper/lowercase spelling:

30.03.2022 11:04:20.160 LDAP        (ERROR  ): sync_from_ucs: traceback due to modlist: [(0, 'description', set([u'somestring_with_OTHERCASE_than_in_AD']))]
30.03.2022 11:04:20.185 LDAP        (WARNING): sync failed, saved as rejected
30.03.2022 11:04:20.186 LDAP        (WARNING): Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/univention/connector/__init__.py", line 823, in __sync_file_from_ucs
    or (not old_dn and not self.sync_from_ucs(key, object, premapped_ucs_dn, old_dn, object_old))):
  File "/usr/lib/python2.7/dist-packages/univention/connector/ad/__init__.py", line 2832, in sync_from_ucs
    self.lo_ad.lo.modify_s(compatible_modstring(object['dn']), compatible_modlist(modlist))
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 402, in modify_s
    return self.result(msgid,all=1,timeout=self.timeout)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 503, in result
    resp_type, resp_data, resp_msgid = self.result2(msgid,all,timeout)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 507, in result2
    resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all,timeout)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 514, in result3
    resp_ctrl_classes=resp_ctrl_classes
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 521, in result4
    ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 106, in _ldap_call
    result = func(*args,**kwargs)

TYPE_OR_VALUE_EXISTS: {'info': '00002083: AtrErr: DSID-03151D27, #1:\n\t0: 00002083: DSID-03151D27, problem 1006 (ATT_OR_VALUE_EXISTS)
Comment 1 Arvid Requate univentionstaff 2022-04-06 18:10:44 CEST
I guess it would be nice to wrap the values into an object class that defines `__eq__` etc to mage use of the comparison functions defined in the mapping.
Comment 2 Daniel Duchon univentionstaff 2022-04-07 07:58:54 CEST
School Customer affected
Comment 4 Christina Scheinig univentionstaff 2022-05-19 10:24:45 CEST
Again rejects with that.
The different descriptions may come from an untis import and not a human failure