]> Frank Brehm's Git Trees - pixelpark/puppet-tools.git/commitdiff
Adding property env_root_dir to px_puppettools.app
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 14 Feb 2023 16:46:07 +0000 (17:46 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 14 Feb 2023 16:46:07 +0000 (17:46 +0100)
lib/dpx_puppettools/__init__.py
lib/dpx_puppettools/app/__init__.py
lib/dpx_puppettools/puppetfile.py

index d0a1815f551b33fcd6e7905ff64bc92ac17e47fa..7961a737b00e19759d81ff89ad817e49f64421e8 100644 (file)
@@ -28,6 +28,7 @@ DEFAULT_MAIL_SERVER = 'prd-mail.pixelpark.com'
 DEFAULT_LOG_DIR = Path('/var/log/dpx-puppet-tools')
 DEFAULT_VAR_DIR = Path('/var/lib/dpx-puppet-tools')
 DEFAULT_DEPLOY_ROOT_DIR = Path('/etc/puppetlabs/code')
+DEFAULT_ENVIRONMENTS_ROOT_DIR = DEFAULT_DEPLOY_ROOT_DIR / 'environments'
 
 
 # =============================================================================
index 1b03d6fcd56227f6cd46656b0e0bcd68b4e9d2c8..93b2640417373876b77a43b7f831e950ef03a981 100644 (file)
@@ -30,7 +30,7 @@ from fb_tools import MailAddress
 
 # Own modules
 from .. import __version__ as GLOBAL_VERSION
-from .. import DEFAULT_CONFIG_DIR
+from .. import DEFAULT_CONFIG_DIR, DEFAULT_ENVIRONMENTS_ROOT_DIR
 from .. import DEFAULT_TERMINAL_WIDTH, DEFAULT_TERMINAL_HEIGHT
 from .. import pp
 
@@ -45,7 +45,7 @@ LOG = logging.getLogger(__name__)
 _ = XLATOR.gettext
 ngettext = XLATOR.ngettext
 
-__version__ = '0.3.3'
+__version__ = '0.4.0'
 
 
 # =============================================================================
@@ -73,6 +73,8 @@ class BaseDPXPuppetApplication(FbConfigApplication):
 
     charset.add_charset('utf-8', charset.SHORTEST, charset.QP)
 
+    default_env_root_dir = DEFAULT_ENVIRONMENTS_ROOT_DIR
+
     # -------------------------------------------------------------------------
     def __init__(
         self, appname=None, verbose=0, version=GLOBAL_VERSION, base_dir=None, quiet=False,
@@ -81,6 +83,9 @@ class BaseDPXPuppetApplication(FbConfigApplication):
             additional_stems=None, additional_cfgdirs=None, cfg_encoding=DEFAULT_ENCODING,
             config_dir=DEFAULT_CONFIG_DIR):
 
+        self._env_root_dir = self.default_env_root_dir
+        self.environments = []
+
         super(BaseDPXPuppetApplication, self).__init__(
             appname=appname, verbose=verbose, version=version, base_dir=base_dir,
             description=description, cfg_class=cfg_class, initialized=False, quiet=quiet,
@@ -90,6 +95,42 @@ class BaseDPXPuppetApplication(FbConfigApplication):
             env_prefix=env_prefix, config_dir=config_dir
         )
 
+    # -------------------------------------------------------------------------
+    @property
+    def env_root_dir(self):
+        """The root directory of all puppet environments."""
+        return self._env_root_dir
+
+    @env_root_dir.setter
+    def env_root_dir(self, value):
+        if value is None:
+            self._env_root_dir = None
+            return
+
+        val = Path(value)
+        if not val.is_absolute():
+            msg = _(
+                "Path {!r} for the root directory of all puppet environments must "
+                "be an absolute path.").format(value)
+            raise ValueError(msg)
+        self._env_root_dir = val
+
+    # -------------------------------------------------------------------------
+    def as_dict(self, short=True):
+        """
+        Transforms the elements of the object into a dict
+
+        @return: structure as dict
+        @rtype:  dict
+        """
+
+        res = super(BaseDPXPuppetApplication, self).as_dict(short=short)
+
+        res['default_env_root_dir'] = self.default_env_root_dir
+        res['env_root_dir'] = self.env_root_dir
+
+        return res
+
     # -------------------------------------------------------------------------
     def post_init(self):
         """
index 1e31c4920770bb18a0cdb02abc0431a88732bee1..6f24eff18ba8172b7be5fe8aa350fee945cb7f2c 100644 (file)
@@ -24,7 +24,7 @@ from fb_tools.common import pp, to_str, to_bool, is_sequence
 from fb_tools.obj import FbBaseObjectError, FbBaseObject
 
 # Own modules
-from . import DEFAULT_FORGE_URL
+from . import DEFAULT_FORGE_URL, DEFAULT_ENVIRONMENTS_ROOT_DIR
 
 from .pfile_moduleinfo import PuppetfileModuleInfo
 
@@ -53,8 +53,7 @@ class Puppetfile(FbBaseObject):
     """Class for encapsulating a Puppetfile of a r10k environment."""
 
     default_environment = 'production'
-    default_env_root_dir = os.sep + os.path.join("etc", "puppetlabs", "code", "environments")
-    default_env_root_dir = Path(os.sep) / "etc" / "puppetlabs" / "code" / "environments"
+    default_env_root_dir = DEFAULT_ENVIRONMENTS_ROOT_DIR
     default_moduledir = Path('modules')
     default_forge_url = DEFAULT_FORGE_URL