Lines 686-704
def recode_attribs(attribs):
|
Link Here
|
---|
|
686 |
# we should delete this object |
686 |
# we should delete this object |
687 |
ignore_subtree_match = False |
687 |
ignore_subtree_match = False |
688 |
|
688 |
|
689 |
if not new: |
689 |
_attr = new or old |
690 |
change_type = "delete" |
690 |
for k in self.property.keys(): |
691 |
ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was deleted") |
691 |
if self.modules[k].identify(unicode(dn, 'utf8'), _attr): |
692 |
for k in self.property.keys(): |
692 |
key = k |
693 |
if self.modules[k].identify(unicode(dn, 'utf8'), old): |
693 |
break |
694 |
key = k |
|
|
695 |
break |
696 |
else: |
697 |
for k in self.property.keys(): |
698 |
if self.modules[k].identify(unicode(dn, 'utf8'), new): |
699 |
key = k |
700 |
break |
701 |
|
694 |
|
|
|
695 |
if new: |
702 |
entryUUID = new.get('entryUUID', [None])[0] |
696 |
entryUUID = new.get('entryUUID', [None])[0] |
703 |
if entryUUID: |
697 |
if entryUUID: |
704 |
if self.was_entryUUID_deleted(entryUUID): |
698 |
if self.was_entryUUID_deleted(entryUUID): |
Lines 761-766
def recode_attribs(attribs):
|
Link Here
|
---|
|
761 |
old_dn = '' # there may be an old_dn if object was moved from ignored container |
755 |
old_dn = '' # there may be an old_dn if object was moved from ignored container |
762 |
ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was added") |
756 |
ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was added") |
763 |
|
757 |
|
|
|
758 |
if not new: |
759 |
change_type = "delete" |
760 |
ud.debug(ud.LDAP, ud.INFO, "__sync_file_from_ucs: objected was deleted") |
761 |
|
764 |
if key: |
762 |
if key: |
765 |
if change_type == 'delete': |
763 |
if change_type == 'delete': |
766 |
if old_dn: |
764 |
if old_dn: |
Lines 816-831
def get_ucs_ldap_object(self, dn):
|
Link Here
|
---|
|
816 |
def get_ucs_object(self, property_type, dn): |
814 |
def get_ucs_object(self, property_type, dn): |
817 |
_d = ud.function('ldap.get_ucs_object') |
815 |
_d = ud.function('ldap.get_ucs_object') |
818 |
ucs_object = None |
816 |
ucs_object = None |
819 |
if isinstance(dn, type(u'')): |
817 |
if isinstance(dn, unicode): |
820 |
searchdn = dn |
818 |
searchdn = dn |
821 |
else: |
819 |
else: |
822 |
searchdn = unicode(dn) |
820 |
searchdn = unicode(dn) |
823 |
try: |
821 |
try: |
824 |
if not self.get_ucs_ldap_object(searchdn): # fails if object doesn't exist |
822 |
attr = self.get_ucs_ldap_object(searchdn) |
|
|
823 |
if not attr: |
825 |
ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object not found: %s" % searchdn) |
824 |
ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object not found: %s" % searchdn) |
826 |
return None |
825 |
return None |
827 |
module = self.modules[property_type] |
826 |
module = self.modules[property_type] # old default |
828 |
ucs_object = univention.admin.objects.get(module, co='', lo=self.lo, position='', dn=searchdn) # does not fail if object doesn't exist |
827 |
if not module.identify(searchdn, attr): |
|
|
828 |
for m in self.modules_others.get(property_type, []): |
829 |
if m and m.identify(searchdn, attr): |
830 |
module = m |
831 |
break |
832 |
else: |
833 |
ud.debug(ud.LDAP, ud.ERROR, "get_ucs_object: could not identify UDM object type: %s" % searchdn) |
834 |
ud.debug(ud.LDAP, ud.PROCESS, "get_ucs_object: using default: %s" % module.module) |
835 |
|
836 |
ucs_object = univention.admin.objects.get(module, co=None, lo=self.lo, position='', dn=searchdn) |
829 |
ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object found: %s" % searchdn) |
837 |
ud.debug(ud.LDAP, ud.INFO, "get_ucs_object: object found: %s" % searchdn) |
830 |
except (ldap.SERVER_DOWN, SystemExit): |
838 |
except (ldap.SERVER_DOWN, SystemExit): |
831 |
raise |
839 |
raise |
Lines 1179-1185
def add_in_ucs(self, property_type, object, module, position):
|
Link Here
|
---|
|
1179 |
|
1187 |
|
1180 |
def modify_in_ucs(self, property_type, object, module, position): |
1188 |
def modify_in_ucs(self, property_type, object, module, position): |
1181 |
_d = ud.function('ldap.modify_in_ucs') |
1189 |
_d = ud.function('ldap.modify_in_ucs') |
1182 |
module = self.modules[property_type] |
|
|
1183 |
if 'olddn' in object: |
1190 |
if 'olddn' in object: |
1184 |
ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['olddn'], position='') |
1191 |
ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['olddn'], position='') |
1185 |
else: |
1192 |
else: |
Lines 1189-1195
def modify_in_ucs(self, property_type, object, module, position):
|
Link Here
|
---|
|
1189 |
|
1196 |
|
1190 |
def move_in_ucs(self, property_type, object, module, position): |
1197 |
def move_in_ucs(self, property_type, object, module, position): |
1191 |
_d = ud.function('ldap.move_in_ucs') |
1198 |
_d = ud.function('ldap.move_in_ucs') |
1192 |
module = self.modules[property_type] |
|
|
1193 |
try: |
1199 |
try: |
1194 |
if object['olddn'].lower() == object['dn'].lower(): |
1200 |
if object['olddn'].lower() == object['dn'].lower(): |
1195 |
ud.debug(ud.LDAP, ud.WARN, "move_in_ucs: cancel move, old and new dn are the same ( %s to %s)" % (object['olddn'], object['dn'])) |
1201 |
ud.debug(ud.LDAP, ud.WARN, "move_in_ucs: cancel move, old and new dn are the same ( %s to %s)" % (object['olddn'], object['dn'])) |
Lines 1237-1243
def was_entryUUID_deleted(self, entryUUID):
|
Link Here
|
---|
|
1237 |
|
1243 |
|
1238 |
def delete_in_ucs(self, property_type, object, module, position): |
1244 |
def delete_in_ucs(self, property_type, object, module, position): |
1239 |
_d = ud.function('ldap.delete_in_ucs') |
1245 |
_d = ud.function('ldap.delete_in_ucs') |
1240 |
module = self.modules[property_type] |
|
|
1241 |
ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['dn'], position='') |
1246 |
ucs_object = univention.admin.objects.get(module, None, self.lo, dn=object['dn'], position='') |
1242 |
|
1247 |
|
1243 |
if object['attributes'].get('objectGUID'): |
1248 |
if object['attributes'].get('objectGUID'): |
Lines 1332-1338
def sync_to_ucs(self, property_type, object, premapped_ad_dn, retry=True):
|
Link Here
|
---|
|
1332 |
except: # FIXME: which exception is to be caught? |
1337 |
except: # FIXME: which exception is to be caught? |
1333 |
ud.debug(ud.LDAP, ud.PROCESS, 'sync to ucs...') |
1338 |
ud.debug(ud.LDAP, ud.PROCESS, 'sync to ucs...') |
1334 |
|
1339 |
|
1335 |
module = self.modules[property_type] |
|
|
1336 |
position = univention.admin.uldap.position(self.baseConfig['ldap/base']) |
1340 |
position = univention.admin.uldap.position(self.baseConfig['ldap/base']) |
1337 |
|
1341 |
|
1338 |
parent_dn = string.join(ldap.explode_dn(object['dn'])[1:], ",") |
1342 |
parent_dn = string.join(ldap.explode_dn(object['dn'])[1:], ",") |
Lines 1354-1359
def sync_to_ucs(self, property_type, object, premapped_ad_dn, retry=True):
|
Link Here
|
---|
|
1354 |
ud.debug(ud.LDAP, ud.PROCESS, 'The object (%s) will be ignored because a valid match filter for this object was not found.' % old_ucs_ldap_object['dn']) |
1358 |
ud.debug(ud.LDAP, ud.PROCESS, 'The object (%s) will be ignored because a valid match filter for this object was not found.' % old_ucs_ldap_object['dn']) |
1355 |
return True |
1359 |
return True |
1356 |
|
1360 |
|
|
|
1361 |
module = self.modules[property_type] |
1362 |
if old_object: |
1363 |
module = univention.admin.modules.get(old_object.module) |
1364 |
|
1357 |
if object['modtype'] == 'add': |
1365 |
if object['modtype'] == 'add': |
1358 |
result = self.add_in_ucs(property_type, object, module, position) |
1366 |
result = self.add_in_ucs(property_type, object, module, position) |
1359 |
self._check_dn_mapping(object['dn'], premapped_ad_dn) |
1367 |
self._check_dn_mapping(object['dn'], premapped_ad_dn) |