# 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
from .xlate import XLATOR
-__version__ = '1.10.1'
+__version__ = '1.11.0'
LOG = logging.getLogger(__name__)
_ = XLATOR.gettext
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)
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
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
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):
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
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):