]> Frank Brehm's Git Trees - pixelpark/puppet-tools.git/commitdiff
Adding root environments root dir to lib/dpx_puppettools/config.py
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 14 Feb 2023 16:53:41 +0000 (17:53 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 14 Feb 2023 16:53:41 +0000 (17:53 +0100)
lib/dpx_puppettools/config.py

index f45970f0addf34947b44cd7b9997a114a4efba26..85b60a60addf46820d0c0133196ad83ced8e06e5 100644 (file)
@@ -31,11 +31,12 @@ from fb_tools import MailAddress
 from . import __version__ as GLOBAL_VERSION
 from . import pp, DEFAULT_MAIL_RECIPIENTS, DEFAULT_REPLY_TO, DEFAULT_MAIL_SERVER
 from . import DEFAULT_LOG_DIR, DEFAULT_VAR_DIR, DEFAULT_DEPLOY_ROOT_DIR
+from . import DEFAULT_ENVIRONMENTS_ROOT_DIR
 from .errors import PuppetToolsError
 from .xlate import XLATOR
 
 CONFIG_DIR = 'pixelpark'
-__version__ = '0.3.2'
+__version__ = '0.3.3'
 LOG = logging.getLogger(__name__)
 VALID_MAIL_METHODS = ('smtp', 'sendmail')
 DEFAULT_DOMAIN = 'pixelpark.com'
@@ -91,6 +92,7 @@ class DpxPuppetConfig(BaseMultiConfig):
     default_log_dir = DEFAULT_LOG_DIR
     default_var_dir = DEFAULT_VAR_DIR
     default_deploy_root_dir = DEFAULT_DEPLOY_ROOT_DIR
+    default_env_root_dir = DEFAULT_ENVIRONMENTS_ROOT_DIR
 
     # -------------------------------------------------------------------------
     def __init__(
@@ -110,6 +112,7 @@ class DpxPuppetConfig(BaseMultiConfig):
         self.log_dir = copy.copy(self.default_log_dir)
         self.var_dir = copy.copy(self.default_var_dir)
         self.deploy_root_dir = copy.copy(self.default_deploy_root_dir)
+        self.env_root_dir = copy.copy(self.default_env_root_dir)
 
         add_stems = []
         if additional_stems:
@@ -167,6 +170,7 @@ class DpxPuppetConfig(BaseMultiConfig):
         res['current_user_name'] = self.current_user_name
         res['default_deploy_root_dir'] = self.default_deploy_root_dir
         res['default_domain'] = self.default_domain
+        res['default_env_root_dir'] = self.default_env_root_dir
         res['default_log_dir'] = self.default_log_dir
         res['default_mail_cc'] = self.default_mail_cc
         res['default_mail_method'] = self.default_mail_method
@@ -260,6 +264,8 @@ class DpxPuppetConfig(BaseMultiConfig):
 
         re_deploy_root_dir = re.compile(
             r'^\s*deploy[_-]*root(?:[_-]*dir)?\s*$', re.IGNORECASE)
+        re_env_root_dir = re.compile(
+            r'^\s*env(?:ironments?)?[_-]*root(?:[_-]*dir)?\s*$', re.IGNORECASE)
 
         for key in section.keys():
             value = section[key].strip()
@@ -275,6 +281,17 @@ class DpxPuppetConfig(BaseMultiConfig):
                     LOG.warn(msg)
                 continue
 
+            if re_env_root_dir.match(key):
+                env_root_dir = Path(value)
+                if env_root_dir.is_absolute():
+                    self.env_root_dir = env_root_dir
+                else:
+                    msg = _(
+                        "The path to the root environments directory {!r} "
+                        "must be absolute.").format(str(env_root_dir))
+                    LOG.warn(msg)
+                continue
+
     # -------------------------------------------------------------------------
     def _eval_mail(self, section_name, section):