Optimized Schema replace logic and updated exit codes
This commit is contained in:
18
main.py
18
main.py
@@ -166,6 +166,7 @@ def main():
|
|||||||
print(f"➕ Added AttributeType: {atdef}")
|
print(f"➕ Added AttributeType: {atdef}")
|
||||||
except ldap.LDAPError as e:
|
except ldap.LDAPError as e:
|
||||||
print(f"❌ LDAP error for AttributeType '{atdef}': {e}", file=sys.stderr)
|
print(f"❌ LDAP error for AttributeType '{atdef}': {e}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# Add/update ObjectClasses
|
# Add/update ObjectClasses
|
||||||
for ocdef in args.object_class:
|
for ocdef in args.object_class:
|
||||||
@@ -175,11 +176,17 @@ def main():
|
|||||||
attrlist=['olcObjectClasses'])
|
attrlist=['olcObjectClasses'])
|
||||||
existing = result[0][1].get('olcObjectClasses', [])
|
existing = result[0][1].get('olcObjectClasses', [])
|
||||||
if encoded in existing:
|
if encoded in existing:
|
||||||
print(f"ℹ️ ObjectClass already exists, replacing: {ocdef}")
|
print(f"ℹ️ ObjectClass already exists, replacing (DELETE + ADD): {ocdef}")
|
||||||
conn.modify_s(schema_dn, [
|
mods = [
|
||||||
(ldap.MOD_REPLACE, 'olcObjectClasses', [encoded])
|
(ldap.MOD_DELETE, 'olcObjectClasses', [encoded]),
|
||||||
])
|
(ldap.MOD_ADD, 'olcObjectClasses', [encoded])
|
||||||
print(f"🔄 Replaced ObjectClass: {ocdef}")
|
]
|
||||||
|
try:
|
||||||
|
conn.modify_s(schema_dn, mods)
|
||||||
|
print(f"🔄 Replaced ObjectClass: {ocdef}")
|
||||||
|
except ldap.LDAPError as e:
|
||||||
|
print(f"❌ LDAP error replacing ObjectClass '{ocdef}': {e}")
|
||||||
|
sys.exit(2)
|
||||||
else:
|
else:
|
||||||
conn.modify_s(schema_dn, [
|
conn.modify_s(schema_dn, [
|
||||||
(ldap.MOD_ADD, 'olcObjectClasses', [encoded])
|
(ldap.MOD_ADD, 'olcObjectClasses', [encoded])
|
||||||
@@ -187,6 +194,7 @@ def main():
|
|||||||
print(f"➕ Added ObjectClass: {ocdef}")
|
print(f"➕ Added ObjectClass: {ocdef}")
|
||||||
except ldap.LDAPError as e:
|
except ldap.LDAPError as e:
|
||||||
print(f"❌ LDAP error for ObjectClass '{ocdef}': {e}", file=sys.stderr)
|
print(f"❌ LDAP error for ObjectClass '{ocdef}': {e}", file=sys.stderr)
|
||||||
|
sys.exit(3)
|
||||||
|
|
||||||
conn.unbind_s()
|
conn.unbind_s()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user