]> Frank Brehm's Git Trees - pixelpark/create-terraform.git/commitdiff
Adidng config for a spinner
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 25 Jul 2024 13:23:51 +0000 (15:23 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 25 Jul 2024 13:23:51 +0000 (15:23 +0200)
etc/create-terraform.ini.default
lib/create_terraform/config.py

index 5b7eb14bd34118e4038edd4fe26765f8a84cc3f2..2156374bfc28529ee388e207b0ad4774aefd2a05 100644 (file)
@@ -22,6 +22,9 @@ rhsm_user = dpx-subscriber
 ; The password of the latter rhsm_user.
 ;rhsm_password =
 
+; Name of the used spinner for long terming processses
+;spinner = random
+
 [vSphere:live]
 
 ; Hostname of VSphere management host
index 3fc04e7c635c90cdda5d5e97bae1c9d123da63dc..d1655634c678f73c9c69cbe1c488c8f070b5ed36 100644 (file)
@@ -15,9 +15,10 @@ import re
 # Third party modules
 import pytz
 
+import fb_tools.spinner
 from fb_tools.config import BaseConfiguration
-
 from fb_tools.common import to_bool, RE_FQDN, pp
+from fb_tools.xlate import format_list
 
 from fb_pdnstools import DEFAULT_PORT as DEFAULT_PDNS_API_PORT
 from fb_pdnstools import DEFAULT_TIMEOUT as DEFAULT_PDNS_API_TIMEOUT        # noqa: F401
@@ -32,7 +33,7 @@ from .vs_config import VsphereConfig
 
 from .xlate import XLATOR
 
-__version__ = '1.10.1'
+__version__ = '1.11.0'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -46,6 +47,8 @@ class CrTfConfiguration(BaseConfiguration):
     and methods to read it from configuration files.
     """
 
+    default_spinner = 'random'
+
     default_pdns_master_server = 'master.pp-dns.com'
     default_pdns_api_port = DEFAULT_PDNS_API_PORT
     default_pdns_api_use_https = bool(DEFAULT_PDNS_API_USE_HTTPS)
@@ -103,6 +106,11 @@ class CrTfConfiguration(BaseConfiguration):
     msg_val_negative = _(
         "Invalid value {v} for {n!r} configuration ({f!r}:[{s}]): "
         "must be equal or greater than zero.")
+    msg_invalid_spinner = _('Invalid spinner {!r} given.')
+    msg_invalid_spinner += ' ' + _(
+        'Please use {!r} as spinner, or one from the following list:').format('random')
+    msg_invalid_spinner += ' ' + format_list(
+        list(fb_tools.spinner.CycleList.keys()), do_repr=True)
 
     max_pdns_api_timeout = 3600
 
@@ -118,6 +126,8 @@ class CrTfConfiguration(BaseConfiguration):
         self, appname=None, verbose=0, version=__version__, base_dir=None, simulate=False,
             encoding=None, config_dir=None, config_file=None, initialized=False):
 
+        self._spinner = self.default_spinner
+
         self.pdns_master_server = self.default_pdns_master_server
         self.pdns_api_port = self.default_pdns_api_port
         self._pdns_api_key = None
@@ -187,6 +197,32 @@ class CrTfConfiguration(BaseConfiguration):
     def simulate(self, value):
         self._simulate = to_bool(value)
 
+    # -----------------------------------------------------------
+    @property
+    def spinner(self):
+        """Return the name of the used spinner for long terming processes."""
+        return self._spinner
+
+    @spinner.setter
+    def spinner(self, value):
+        if value is None:
+            self._spinner = self.default_spinner
+            return
+
+        val = str(value).strip()
+        if val == '':
+            self._spinner = self.default_spinner
+            return
+
+        if val.lower() == 'random':
+            self._spinner = 'random'
+            return
+
+        if val not in fb_tools.spinner.CycleList:
+            raise CrTfConfigError(msg_invalid_spinner.format(value))
+
+        self._spinner = val
+
     # -----------------------------------------------------------
     @property
     def no_pdns(self):
@@ -506,6 +542,7 @@ class CrTfConfiguration(BaseConfiguration):
         res['root_max_size'] = self.root_max_size
         res['root_min_size'] = self.root_min_size
         res['simulate'] = self.simulate
+        res['spinner'] = self.spinner
         res['vm_root_password'] = None
         res['vsphere_tag_cat_os_desc'] = self.vsphere_tag_cat_os_desc
         res['vsphere_tag_cat_os_id'] = self.vsphere_tag_cat_os_id
@@ -610,6 +647,8 @@ class CrTfConfiguration(BaseConfiguration):
                 self.rhsm_user = value.strip()
             elif re_rhsm_password.search(key) and value.strip():
                 self.rhsm_password = value.strip()
+            elif key.lower() == 'spinner':
+                self.spinner = value
 
     # -------------------------------------------------------------------------
     def eval_config_vsphere(self, config, section_name, vsphere_name):