View | Details | Raw Unified | Return to bug 49956
Collapse All | Expand All

(-)a/services/univention-s4-connector/modules/univention/s4connector/s4/__init__.py (-9 / +11 lines)
 Lines 2507-2513   class s4(univention.s4connector.ucs): Link Here 
2507
				ud.debug(ud.LDAP, ud.PROCESS, "Unable to sync %s (GUID: %s). The object is currently locked." % (object['dn'], objectGUID))
2507
				ud.debug(ud.LDAP, ud.PROCESS, "Unable to sync %s (GUID: %s). The object is currently locked." % (object['dn'], objectGUID))
2508
				return False
2508
				return False
2509
2509
2510
		entryUUID = object['attributes'].get('entryUUID')[0]
2510
		entryUUID = object['attributes'].get('entryUUID', [None])[0]  # may be empty for back_mapped_subobject for leaf object delete_in_s4
2511
2511
2512
		#
2512
		#
2513
		# ADD
2513
		# ADD
 Lines 2516-2522   class s4(univention.s4connector.ucs): Link Here 
2516
			ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: add object: %s" % object['dn'])
2516
			ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: add object: %s" % object['dn'])
2517
2517
2518
			ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: lock UCS entryUUID: %s" % entryUUID)
2518
			ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: lock UCS entryUUID: %s" % entryUUID)
2519
			self.lockingdb.lock_ucs(entryUUID)
2519
			if entryUUID:
2520
				self.lockingdb.lock_ucs(entryUUID)
2520
2521
2521
			self.addToCreationList(object['dn'])
2522
			self.addToCreationList(object['dn'])
2522
2523
 Lines 2771-2777   class s4(univention.s4connector.ucs): Link Here 
2771
			return False
2772
			return False
2772
2773
2773
		ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: unlock UCS entryUUID: %s" % entryUUID)
2774
		ud.debug(ud.LDAP, ud.INFO, "sync_from_ucs: unlock UCS entryUUID: %s" % entryUUID)
2774
		self.lockingdb.unlock_ucs(entryUUID)
2775
		if entryUUID:
2776
			self.lockingdb.unlock_ucs(entryUUID)
2775
2777
2776
		self._check_dn_mapping(pre_mapped_ucs_dn, object['dn'])
2778
		self._check_dn_mapping(pre_mapped_ucs_dn, object['dn'])
2777
2779
 Lines 2794-2800   class s4(univention.s4connector.ucs): Link Here 
2794
		try:
2796
		try:
2795
			objectGUID = self._get_objectGUID(object['dn'])
2797
			objectGUID = self._get_objectGUID(object['dn'])
2796
			self.lo_s4.lo.delete_s(compatible_modstring(object['dn']))
2798
			self.lo_s4.lo.delete_s(compatible_modstring(object['dn']))
2797
			self.update_deleted_cache_after_removal(object.get('attributes').get('entryUUID')[0], objectGUID)
2798
		except ldap.NO_SUCH_OBJECT:
2799
		except ldap.NO_SUCH_OBJECT:
2799
			pass  # object already deleted
2800
			pass  # object already deleted
2800
		except ldap.NOT_ALLOWED_ON_NONLEAF:
2801
		except ldap.NOT_ALLOWED_ON_NONLEAF:
 Lines 2814-2824   class s4(univention.s4connector.ucs): Link Here 
2814
					continue
2815
					continue
2815
				ud.debug(ud.LDAP, ud.INFO, "delete: %s" % result[0])
2816
				ud.debug(ud.LDAP, ud.INFO, "delete: %s" % result[0])
2816
				subobject_s4 = {'dn': result[0], 'modtype': 'delete', 'attributes': result[1]}
2817
				subobject_s4 = {'dn': result[0], 'modtype': 'delete', 'attributes': result[1]}
2817
				key = None
2818
				key = self.__identify(subobject_s4)
2818
				for k in self.property.keys():
2819
					if self.modules[k].identify(result[0], result[1]):
2820
						key = k
2821
						break
2822
				back_mapped_subobject = self._object_mapping(key, subobject_s4)
2819
				back_mapped_subobject = self._object_mapping(key, subobject_s4)
2823
				ud.debug(ud.LDAP, ud.WARN, "delete subobject: %s" % back_mapped_subobject['dn'])
2820
				ud.debug(ud.LDAP, ud.WARN, "delete subobject: %s" % back_mapped_subobject['dn'])
2824
				if not self._ignore_object(key, back_mapped_subobject):
2821
				if not self._ignore_object(key, back_mapped_subobject):
 Lines 2832-2834   class s4(univention.s4connector.ucs): Link Here 
2832
						return False
2829
						return False
2833
2830
2834
			return self.delete_in_s4(object, property_type)
2831
			return self.delete_in_s4(object, property_type)
2832
		entryUUID = object.get('attributes').get('entryUUID', [None])[0]
2833
		if entryUUID:
2834
			self.update_deleted_cache_after_removal(entryUUID, objectGUID)
2835
		else:
2836
			ud.debug(ud.LDAP, ud.INFO, "delete_in_s4: Object without entryUUID: %s" % (object['dn'],))

Return to bug 49956