From 037f3ae69ebddb434d4bb79aeda682bea78e70c1 Mon Sep 17 00:00:00 2001 From: chenhb-zte Date: Thu, 5 May 2016 14:30:58 -0400 Subject: [PATCH] fix bug on booting server from volume The arg of image must be None,when booting server from volume. Otherwise still boot server from image Change-Id: I348c5971f2375f8de08b9fd8f021ea09906ff844 Closes-Bug: #1578556 --- .../openstack/scenarios/nova/servers.py | 2 +- .../openstack/scenarios/nova/test_servers.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/rally/plugins/openstack/scenarios/nova/servers.py b/rally/plugins/openstack/scenarios/nova/servers.py index 04e841887f..e590a75b17 100644 --- a/rally/plugins/openstack/scenarios/nova/servers.py +++ b/rally/plugins/openstack/scenarios/nova/servers.py @@ -292,7 +292,7 @@ class NovaServers(utils.NovaScenario, """ volume = self._create_volume(volume_size, imageRef=image) block_device_mapping = {"vda": "%s:::1" % volume.id} - self._boot_server(image, flavor, auto_assign_nic=auto_assign_nic, + self._boot_server(None, flavor, auto_assign_nic=auto_assign_nic, block_device_mapping=block_device_mapping, **kwargs) diff --git a/tests/unit/plugins/openstack/scenarios/nova/test_servers.py b/tests/unit/plugins/openstack/scenarios/nova/test_servers.py index 1796455334..5cbf72a45d 100644 --- a/tests/unit/plugins/openstack/scenarios/nova/test_servers.py +++ b/tests/unit/plugins/openstack/scenarios/nova/test_servers.py @@ -320,6 +320,25 @@ class NovaServersTestCase(test.ScenarioTestCase): scenario.list_servers(True) scenario._list_servers.assert_called_once_with(True) + def test_boot_server_from_volume(self): + fake_server = object() + scenario = servers.NovaServers(self.context) + scenario._boot_server = mock.MagicMock(return_value=fake_server) + scenario.generate_random_name = mock.MagicMock(return_value="name") + + fake_volume = fakes.FakeVolumeManager().create() + fake_volume.id = "volume_id" + scenario._create_volume = mock.MagicMock(return_value=fake_volume) + + scenario.boot_server_from_volume("img", 0, 5, auto_assign_nic=False, + fakearg="f") + + scenario._create_volume.assert_called_once_with(5, imageRef="img") + scenario._boot_server.assert_called_once_with( + None, 0, auto_assign_nic=False, + block_device_mapping={"vda": "volume_id:::1"}, + fakearg="f") + def test_boot_server_from_volume_and_delete(self): fake_server = object() scenario = servers.NovaServers(self.context)