]> Frank Brehm's Git Trees - pixelpark/ldap-migration.git/commitdiff
Adding and evaluating etc/xlations.yaml
authorFrank Brehm <frank.brehm@pixelpark.com>
Fri, 13 Nov 2020 09:45:42 +0000 (10:45 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Fri, 13 Nov 2020 09:45:42 +0000 (10:45 +0100)
etc/xlations.yaml [new file with mode: 0644]
lib/ldap_migration/config.py
requirements.txt

diff --git a/etc/xlations.yaml b/etc/xlations.yaml
new file mode 100644 (file)
index 0000000..2c1c565
--- /dev/null
@@ -0,0 +1,5 @@
+---
+dn:
+  'uid=uhu,ou=People,ou=Pixelpark,o=isp':
+    uid: 'banane'
+    dn: 'uid=banane,ou=People,ou=Pixelpark,o=isp'
index 232d72450aec39159c8602df13c0e5fbfe72bab6..a00fd448b8b4ccfb9cf4175a9fe67c9668c1c90e 100644 (file)
@@ -14,13 +14,14 @@ import re
 from pathlib import Path
 
 # Third party modules
+import yaml
 
 # Own modules
 from fb_tools.common import to_bool
 
 from fb_tools.config import ConfigError, BaseConfiguration
 
-__version__ = '0.1.1'
+__version__ = '0.2.1'
 
 LOG = logging.getLogger(__name__)
 
@@ -53,6 +54,7 @@ class LDAPMigrationConfiguration(BaseConfiguration):
     default_suffix = 'o=isp'
     default_timeout = 20
     max_tcp_port = (2**16 - 1)
+    default_xlations_definitions_base = 'xlations.yaml'
 
     re_bind_dn = re.compile(r'^\s*bind[_-]?dn\s*$', re.IGNORECASE)
     re_bind_pw = re.compile(r'^\s*bind[_-]?(?:pw|passwd|passsword)\s*$', re.IGNORECASE)
@@ -60,6 +62,7 @@ class LDAPMigrationConfiguration(BaseConfiguration):
     # -------------------------------------------------------------------------
     def __init__(
         self, appname=None, verbose=0, version=__version__, base_dir=None,
+            xlations_definitions_base=None,
             encoding=None, config_dir=None, config_file=None, initialized=False):
 
         self.src_server = self.default_src_server
@@ -76,12 +79,19 @@ class LDAPMigrationConfiguration(BaseConfiguration):
 
         self.suffix = self.default_suffix
         self._timeout = self.default_timeout
+        self.xlations_definitions_base = self.default_xlations_definitions_base
+        self.xlations_definitions_file = None
+        self.xlations_definitions = {}
 
         super(LDAPMigrationConfiguration, self).__init__(
             appname=appname, verbose=verbose, version=version, base_dir=base_dir,
             encoding=encoding, config_dir=config_dir, config_file=config_file, initialized=False,
         )
 
+        if xlations_definitions_base:
+            self.xlations_definitions_base = xlations_definitions_base
+        self.xlations_definitions_file = self.config_dir / self.xlations_definitions_base
+
         if initialized:
             self.initialized = True
 
@@ -175,6 +185,23 @@ class LDAPMigrationConfiguration(BaseConfiguration):
 
         return res
 
+    # -------------------------------------------------------------------------
+    def read(self):
+        """Reading the configuration file."""
+
+        super(LDAPMigrationConfiguration, self).read(error_if_not_exists=True)
+
+        open_args = {
+            'encoding': 'utf-8',
+            'errors': 'surrogateescape',
+            'mode': 'r',
+        }
+
+        if self.xlations_definitions_file.exists() and self.xlations_definitions_file.is_file():
+            LOG.debug("Reading YAML file {!r} ...".format(str(self.xlations_definitions_file)))
+            with self.xlations_definitions_file.open(**open_args) as fh:
+                self.xlations_definitions = yaml.load(fh, Loader=yaml.Loader)
+
     # -------------------------------------------------------------------------
     def eval_config_section(self, config, section_name):
 
index e52c0ae07886a84049ba55f0fbb7d2af1e2b5bfb..6c7c0322c279a2084e2129ede4a68b3af36569e7 100644 (file)
@@ -1,3 +1,4 @@
 git+https://git.pixelpark.com/python/python_fb_tools.git@master
 ansible
 ldap3
+PyYAML