From e73e6319ef6362db3c09b2a7719e5efd16bb49b6 Mon Sep 17 00:00:00 2001 From: chenhb-zte Date: Wed, 5 Apr 2017 17:44:05 +0800 Subject: [PATCH] credentials is not updated after deployment is recreated We should update the engine's deployment after deployment is updated. Closes-Bug: #1675271 Change-Id: I9c3b07c1de3bd61121757c8c6075777f001310cb --- rally/deployment/engine.py | 5 ++++- rally/deployment/engines/multihost.py | 1 - tests/functional/test_cli_deployment.py | 1 + tests/unit/deployment/engines/test_devstack.py | 5 +++-- tests/unit/deployment/test_engine.py | 5 +++++ tests/unit/deployment/test_lxc.py | 4 ++++ tests/unit/deployment/test_multihost.py | 3 +++ 7 files changed, 20 insertions(+), 4 deletions(-) mode change 100755 => 100644 rally/deployment/engine.py diff --git a/rally/deployment/engine.py b/rally/deployment/engine.py old mode 100755 new mode 100644 index cac3369269..7f6d90bacd --- a/rally/deployment/engine.py +++ b/rally/deployment/engine.py @@ -71,7 +71,10 @@ class Engine(plugin.Plugin): """ def __init__(self, deployment): self.deployment = deployment - self.config = deployment["config"] + + @property + def config(self): + return self.deployment["config"] def validate(self, config=None): # TODO(sskripnick): remove this checking when config schema diff --git a/rally/deployment/engines/multihost.py b/rally/deployment/engines/multihost.py index c7ca3b0b50..8446410739 100644 --- a/rally/deployment/engines/multihost.py +++ b/rally/deployment/engines/multihost.py @@ -64,7 +64,6 @@ class MultihostEngine(engine.Engine): def __init__(self, *args, **kwargs): super(MultihostEngine, self).__init__(*args, **kwargs) - self.config = self.deployment["config"] self.nodes = [] def _deploy_node(self, config): diff --git a/tests/functional/test_cli_deployment.py b/tests/functional/test_cli_deployment.py index 29956fa421..9b1fe46285 100644 --- a/tests/functional/test_cli_deployment.py +++ b/tests/functional/test_cli_deployment.py @@ -97,6 +97,7 @@ class DeploymentTestCase(unittest.TestCase): self.assertIn("t_create_env", self.rally("deployment list")) self.assertEqual(config, json.loads(self.rally("deployment config"))) + self.assertIn("http://foo/", self.rally("deployment show")) def test_use(self): self.rally.env.update(utils.TEST_ENV) diff --git a/tests/unit/deployment/engines/test_devstack.py b/tests/unit/deployment/engines/test_devstack.py index b26bcd9774..b3790ebe3e 100644 --- a/tests/unit/deployment/engines/test_devstack.py +++ b/tests/unit/deployment/engines/test_devstack.py @@ -105,8 +105,9 @@ class DevstackEngineTestCase(test.TestCase): info="fake_credentials", provider_name="DevstackEngine", type="credentials") - repo = "https://git.openstack.org/openstack-dev/devstack" - cmd = "/bin/sh -e -s %s master" % repo + cmd = "/bin/sh -e -s %s %s" % ( + mock_deployment["config"].get("devstack_repo"), + mock_deployment["config"].get("devstack_branch")) server.ssh.run.assert_called_once_with(cmd, stdin="fake_script") ds_calls = [ mock.call.ssh.run("cat > ~/devstack/local.conf", stdin=mock.ANY), diff --git a/tests/unit/deployment/test_engine.py b/tests/unit/deployment/test_engine.py index 4670c1a8f2..7ef2d06feb 100644 --- a/tests/unit/deployment/test_engine.py +++ b/tests/unit/deployment/test_engine.py @@ -96,6 +96,11 @@ class EngineTestCase(test.TestCase): self.assertEqual(consts.DeployStatus.DEPLOY_FAILED, deployment["status"]) + def test_config(self): + deployment = make_fake_deployment() + engine = FakeEngine(deployment) + self.assertEqual(deployment["config"], engine.config) + @mock.patch.object(FakeDeployment, "set_completed") @mock.patch.object(FakeDeployment, "set_started") def test_make_deploy(self, mock_fake_deployment_set_started, diff --git a/tests/unit/deployment/test_lxc.py b/tests/unit/deployment/test_lxc.py index 1e48d2fd38..c4272aa988 100644 --- a/tests/unit/deployment/test_lxc.py +++ b/tests/unit/deployment/test_lxc.py @@ -51,6 +51,9 @@ class LxcEngineTestCase(test.TestCase): self.engine = engine.Engine.get_engine("LxcEngine", self.deployment) + def test_config(self): + self.assertEqual(self.deployment["config"], self.engine.config) + @mock.patch(MOD + "objects") @mock.patch(MOD + "engine") def test__deploy_first(self, mock_engine, mock_objects): @@ -142,6 +145,7 @@ class LxcEngineTestCase(test.TestCase): fake_deployment = mock.MagicMock() fake_deployment.add_resource = add_resource + fake_deployment.__getitem__.side_effect = self.deployment.__getitem__ with mock.patch.object(self.engine, "deployment", fake_deployment): credentials = self.engine.deploy() diff --git a/tests/unit/deployment/test_multihost.py b/tests/unit/deployment/test_multihost.py index 1fa11a53ae..440e178a57 100644 --- a/tests/unit/deployment/test_multihost.py +++ b/tests/unit/deployment/test_multihost.py @@ -52,6 +52,9 @@ class MultihostEngineTestCase(test.TestCase): self.engine = engine.Engine.get_engine("MultihostEngine", self.deployment) + def test_config(self): + self.assertEqual(self.deployment["config"], self.engine.config) + @mock.patch(MOD + "objects.Deployment") @mock.patch(MOD + "engine.Engine") def test__deploy_node(self, mock_engine, mock_deployment):