From eac1950d98930735063aa1eaf6b79d3b26dcd7c0 Mon Sep 17 00:00:00 2001 From: Felipe Reyes <felipe.reyes@canonical.com> Date: Tue, 11 Jan 2022 15:24:18 -0300 Subject: [PATCH] Add 'model_name' configuration option. model_name can be set in ~/.zaza.yaml to alter the way zaza names models created, the format of the string is parsed by string.Template(). This would allow users to force zaza to use a fixed model name (e.g. 'mymodel') which becomes especially useful when the juju provider used is LXD since model names are mapped to LXD profiles. --- unit_tests/test_zaza_charm_lifecycle_utils.py | 8 +++++++- zaza/charm_lifecycle/utils.py | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/unit_tests/test_zaza_charm_lifecycle_utils.py b/unit_tests/test_zaza_charm_lifecycle_utils.py index d1f8e6f68..258463b5d 100644 --- a/unit_tests/test_zaza_charm_lifecycle_utils.py +++ b/unit_tests/test_zaza_charm_lifecycle_utils.py @@ -162,12 +162,18 @@ def test_get_environment_deploy_single_aliased(self): {'alias': 'bundle'}), expect) - def test_generate_model_name(self): + @mock.patch('zaza.utilities.deployment_env.get_setup_file_contents') + def test_generate_model_name(self, get_setup_file_contents): + get_setup_file_contents.return_value = {} self.patch_object(lc_utils.uuid, "uuid4") self.uuid4.return_value = "longer-than-12characters" self.assertEqual(lc_utils.generate_model_name(), "zaza-12characters") + get_setup_file_contents.return_value = {'model_name': 'mymodel-$UUID'} + self.assertEqual(lc_utils.generate_model_name(), + "mymodel-12characters") + def test_get_charm_config(self): self.patch("builtins.open", new_callable=mock.mock_open(), diff --git a/zaza/charm_lifecycle/utils.py b/zaza/charm_lifecycle/utils.py index 88565ad75..ef42541ee 100644 --- a/zaza/charm_lifecycle/utils.py +++ b/zaza/charm_lifecycle/utils.py @@ -23,7 +23,10 @@ import sys import yaml +from string import Template + import zaza.global_options +import zaza.utilities.deployment_env as deployment_env BUNDLE_DIR = "./tests/bundles/" @@ -31,6 +34,7 @@ DEFAULT_CONFIG_YAML = "tests.yaml" DEFAULT_TEST_CONFIG = "./{}/{}".format(DEFAULT_TEST_DIR, DEFAULT_CONFIG_YAML) DEFAULT_MODEL_ALIAS = "default_alias" +DEFAULT_MODEL_NAME = 'zaza-$UUID' DEFAULT_DEPLOY_NAME = 'default{}' RAW_BUNDLE = "raw-bundle" @@ -486,7 +490,10 @@ def generate_model_name(): :returns: Model name :rtype: str """ - return 'zaza-{}'.format(str(uuid.uuid4())[-12:]) + model_name_fmt = deployment_env.get_setup_file_contents().get( + "model_name", DEFAULT_MODEL_NAME) + tpl = Template(model_name_fmt) + return tpl.safe_substitute({"UUID": str(uuid.uuid4())[-12:]}) def check_output_logging(cmd):