diff --git a/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py b/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py index e12f83a..896c3f8 100644 --- a/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py +++ b/unit_tests/test_zaza_charm_lifecycle_func_test_runner.py @@ -20,12 +20,6 @@ import unit_tests.utils as ut_utils class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): - def test_generate_model_name(self): - self.patch_object(lc_func_test_runner.uuid, "uuid4") - self.uuid4.return_value = "longer-than-12characters" - self.assertEqual(lc_func_test_runner.generate_model_name(), - "zaza-12characters") - def test_parser(self): # Test defaults args = lc_func_test_runner.parse_args([]) @@ -47,7 +41,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): def test_func_test_runner(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') - self.patch_object(lc_func_test_runner, 'generate_model_name') + self.patch_object(lc_func_test_runner.utils, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') @@ -97,7 +91,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): def test_func_test_runner_smoke(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') - self.patch_object(lc_func_test_runner, 'generate_model_name') + self.patch_object(lc_func_test_runner.utils, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') @@ -122,7 +116,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): def test_func_test_runner_dev(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') - self.patch_object(lc_func_test_runner, 'generate_model_name') + self.patch_object(lc_func_test_runner.utils, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') @@ -148,7 +142,7 @@ class TestCharmLifecycleFuncTestRunner(ut_utils.BaseTestCase): def test_func_test_runner_specify_bundle(self): self.patch_object(lc_func_test_runner.utils, 'get_charm_config') - self.patch_object(lc_func_test_runner, 'generate_model_name') + self.patch_object(lc_func_test_runner.utils, 'generate_model_name') self.patch_object(lc_func_test_runner.prepare, 'prepare') self.patch_object(lc_func_test_runner.deploy, 'deploy') self.patch_object(lc_func_test_runner.configure, 'configure') diff --git a/unit_tests/test_zaza_charm_lifecycle_prepare.py b/unit_tests/test_zaza_charm_lifecycle_prepare.py index ce7a21e..8213828 100644 --- a/unit_tests/test_zaza_charm_lifecycle_prepare.py +++ b/unit_tests/test_zaza_charm_lifecycle_prepare.py @@ -87,6 +87,10 @@ class TestCharmLifecyclePrepare(ut_utils.BaseTestCase): model_name='newmodel') def test_parser(self): + args = lc_prepare.parse_args([]) + self.assertTrue(args.model_name.startswith('zaza-')) + + def test_parser_model(self): args = lc_prepare.parse_args(['-m', 'newmodel']) self.assertEqual(args.model_name, 'newmodel') diff --git a/unit_tests/test_zaza_charm_lifecycle_utils.py b/unit_tests/test_zaza_charm_lifecycle_utils.py index 8050a0f..e61a2f9 100644 --- a/unit_tests/test_zaza_charm_lifecycle_utils.py +++ b/unit_tests/test_zaza_charm_lifecycle_utils.py @@ -20,6 +20,12 @@ import unit_tests.utils as ut_utils class TestCharmLifecycleUtils(ut_utils.BaseTestCase): + def test_generate_model_name(self): + self.patch_object(lc_utils.uuid, "uuid4") + self.uuid4.return_value = "longer-than-12characters" + self.assertEqual(lc_utils.generate_model_name(), + "zaza-12characters") + def test_get_charm_config(self): self.patch("builtins.open", new_callable=mock.mock_open(), diff --git a/zaza/charm_lifecycle/func_test_runner.py b/zaza/charm_lifecycle/func_test_runner.py index 29700c8..55c6bf1 100644 --- a/zaza/charm_lifecycle/func_test_runner.py +++ b/zaza/charm_lifecycle/func_test_runner.py @@ -18,7 +18,6 @@ import asyncio import logging import os import sys -import uuid import zaza.charm_lifecycle.configure as configure import zaza.charm_lifecycle.destroy as destroy @@ -28,15 +27,6 @@ import zaza.charm_lifecycle.deploy as deploy import zaza.charm_lifecycle.test as test -def generate_model_name(): - """Generate a unique model name. - - :returns: Model name - :rtype: str - """ - return 'zaza-{}'.format(str(uuid.uuid4())[-12:]) - - def func_test_runner(keep_model=False, smoke=False, dev=False, bundle=None): """Deploy the bundles and run the tests as defined by the charms tests.yaml. @@ -60,7 +50,7 @@ def func_test_runner(keep_model=False, smoke=False, dev=False, bundle=None): bundles = test_config[bundle_key] last_test = bundles[-1] for t in bundles: - model_name = generate_model_name() + model_name = utils.generate_model_name() # Prepare prepare.prepare(model_name) # Deploy diff --git a/zaza/charm_lifecycle/prepare.py b/zaza/charm_lifecycle/prepare.py index 51f9a96..32778b7 100644 --- a/zaza/charm_lifecycle/prepare.py +++ b/zaza/charm_lifecycle/prepare.py @@ -22,6 +22,8 @@ import sys import zaza.controller import zaza.model +import zaza.charm_lifecycle.utils as utils + MODEL_DEFAULTS = { # Model defaults from charm-test-infra # https://jujucharms.com/docs/2.1/models-config @@ -103,11 +105,11 @@ def parse_args(args): :rtype: Namespace """ parser = argparse.ArgumentParser() - parser.add_argument('-m', '--model-name', help='Name of model to add', - required=True) + parser.add_argument('-m', '--model-name', help='Name of model to add') parser.add_argument('--log', dest='loglevel', help='Loglevel [DEBUG|INFO|WARN|ERROR|CRITICAL]') parser.set_defaults(loglevel='INFO') + parser.set_defaults(model_name=utils.generate_model_name()) return parser.parse_args(args) @@ -118,4 +120,5 @@ def main(): if not isinstance(level, int): raise ValueError('Invalid log level: "{}"'.format(args.loglevel)) logging.basicConfig(level=level) + print('model_name: {}'.format(args.model_name)) prepare(args.model_name) diff --git a/zaza/charm_lifecycle/utils.py b/zaza/charm_lifecycle/utils.py index e3e8b28..f80e27d 100644 --- a/zaza/charm_lifecycle/utils.py +++ b/zaza/charm_lifecycle/utils.py @@ -14,6 +14,7 @@ """Utilities to support running lifecycle phases.""" import importlib +import uuid import yaml BUNDLE_DIR = "./tests/bundles/" @@ -49,3 +50,12 @@ def get_class(class_str): class_name = class_str.split('.')[-1] module = importlib.import_module(module_name) return getattr(module, class_name) + + +def generate_model_name(): + """Generate a unique model name. + + :returns: Model name + :rtype: str + """ + return 'zaza-{}'.format(str(uuid.uuid4())[-12:])