diff --git a/management/univention-directory-manager-modules/modules/univention/admin/handlers/__init__.py b/management/univention-directory-manager-modules/modules/univention/admin/handlers/__init__.py index 3535243..fffa086 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/handlers/__init__.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/handlers/__init__.py @@ -725,11 +725,11 @@ def _create(self): univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, "create object with dn: %s" % (self.dn,)) univention.debug.debug(univention.debug.ADMIN, 99, 'Create dn=%r;\naddlist=%r;' % (self.dn, al)) - self.lo.add(self.dn, al) - self._exists = True # if anything goes wrong we need to remove the already created object, otherwise we run into 'already exists' errors try: + self.lo.add(self.dn, al) + self._exists = True self._ldap_post_create() except: # ensure that there is no lock left @@ -741,7 +741,8 @@ def _create(self): except: univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, "Post-create: cancel() failed: %s" % (traceback.format_exc(),)) try: - self.remove() + if self._exists: + self.remove() except: univention.debug.debug(univention.debug.ADMIN, univention.debug.ERROR, "Post-create: remove() failed: %s" % (traceback.format_exc(),)) raise exc[0], exc[1], exc[2]