]> Frank Brehm's Git Trees - pixelpark/ldap-migration.git/commitdiff
Handling some entries without structural objectclasses
authorFrank Brehm <frank.brehm@pixelpark.com>
Wed, 6 Jan 2021 17:08:56 +0000 (18:08 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Wed, 6 Jan 2021 17:08:56 +0000 (18:08 +0100)
lib/ldap_migration/__init__.py

index d184f6da1bef5ff794f4ea2d89cda62c026c1266..8300be0e909ea1bf6b8e7fc50e5d8d53ddafa60e 100644 (file)
@@ -45,7 +45,7 @@ from fb_tools.collections import CIStringSet, CIDict
 
 from .config import LDAPMigrationConfiguration
 
-__version__ = '0.9.5'
+__version__ = '0.9.6'
 
 LOG = logging.getLogger(__name__)
 CFG_BASENAME = 'ldap-migration.ini'
@@ -834,7 +834,13 @@ class LDAPMigrationApplication(BaseApplication):
                         'extensions': object_class.extensions,
                         'experimental': object_class.experimental,
                         'raw_definition': object_class.raw_definition,
+                        'structural': False,
+                        'abstract': False,
                     }
+                    if object_class.kind.lower() == 'abstract':
+                        oc['abstract'] = True
+                    elif object_class.kind.lower() == 'structural':
+                        oc['structural'] = True
                     self.object_classes[oc_name] = oc
             else:
                 oc_name = object_class.name
@@ -850,7 +856,13 @@ class LDAPMigrationApplication(BaseApplication):
                     'extensions': object_class.extensions,
                     'experimental': object_class.experimental,
                     'raw_definition': object_class.raw_definition,
+                    'structural': False,
+                    'abstract': False,
                 }
+                if object_class.kind.lower() == 'abstract':
+                    oc['abstract'] = True
+                elif object_class.kind.lower() == 'structural':
+                    oc['structural'] = True
                 self.object_classes[oc_name] = oc
 
         LOG.debug("Found {} ObjectClasses.".format(len(self.object_classes)))
@@ -1390,6 +1402,16 @@ class LDAPMigrationApplication(BaseApplication):
                 used_classes.add('organizationalUnit')
                 object_classes.append('organizationalUnit')
 
+        has_structural = False
+        for oc in used_classes:
+            if self.object_classes[oc]['structural']:
+                has_structural = True
+                break
+        if not has_structural:
+            if 'mailRecipient' in used_classes:
+                used_classes.add('inetResource')
+                object_classes.append('inetResource')
+
         return (object_classes, target_entry)
 
     # -------------------------------------------------------------------------