Correct image lookup during server rebuild
The switch to using glance from the SDK accidentally used get_image directly during a server rebuild, when it should have used find_image to match existing functionality. Bug introduced in: I36f292fb70c98f6e558f58be55d533d979c47ca7 Change-Id: I2005bd40a1bd6719670c7f7854316b4f9801b140 Story: 2007620 Task: 39643
This commit is contained in:
parent
fdefe5558b
commit
ae67317109
@ -1921,9 +1921,12 @@ class RebuildServer(command.ShowOne):
|
|||||||
compute_client.servers, parsed_args.server)
|
compute_client.servers, parsed_args.server)
|
||||||
|
|
||||||
# If parsed_args.image is not set, default to the currently used one.
|
# If parsed_args.image is not set, default to the currently used one.
|
||||||
image_id = parsed_args.image or server.to_dict().get(
|
if parsed_args.image:
|
||||||
'image', {}).get('id')
|
image = image_client.find_image(
|
||||||
image = image_client.get_image(image_id)
|
parsed_args.image, ignore_missing=False)
|
||||||
|
else:
|
||||||
|
image_id = server.to_dict().get('image', {}).get('id')
|
||||||
|
image = image_client.get_image(image_id)
|
||||||
|
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
if parsed_args.property:
|
if parsed_args.property:
|
||||||
|
@ -3577,6 +3577,41 @@ class TestServerRebuild(TestServer):
|
|||||||
|
|
||||||
self.cmd = server.RebuildServer(self.app, None)
|
self.cmd = server.RebuildServer(self.app, None)
|
||||||
|
|
||||||
|
def test_rebuild_with_image_name(self):
|
||||||
|
image_name = 'my-custom-image'
|
||||||
|
user_image = image_fakes.FakeImage.create_one_image(
|
||||||
|
attrs={'name': image_name})
|
||||||
|
self.find_image_mock.return_value = user_image
|
||||||
|
|
||||||
|
attrs = {
|
||||||
|
'image': {
|
||||||
|
'id': user_image.id
|
||||||
|
},
|
||||||
|
'networks': {},
|
||||||
|
'adminPass': 'passw0rd',
|
||||||
|
}
|
||||||
|
new_server = compute_fakes.FakeServer.create_one_server(attrs=attrs)
|
||||||
|
self.server.rebuild.return_value = new_server
|
||||||
|
|
||||||
|
arglist = [
|
||||||
|
self.server.id,
|
||||||
|
'--image', image_name
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('server', self.server.id),
|
||||||
|
('image', image_name)
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
# Get the command object to test.
|
||||||
|
self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
self.servers_mock.get.assert_called_with(self.server.id)
|
||||||
|
self.find_image_mock.assert_called_with(
|
||||||
|
image_name, ignore_missing=False)
|
||||||
|
self.get_image_mock.assert_called_with(user_image.id)
|
||||||
|
self.server.rebuild.assert_called_with(user_image, None)
|
||||||
|
|
||||||
def test_rebuild_with_current_image(self):
|
def test_rebuild_with_current_image(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
self.server.id,
|
self.server.id,
|
||||||
@ -3590,6 +3625,7 @@ class TestServerRebuild(TestServer):
|
|||||||
self.cmd.take_action(parsed_args)
|
self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
self.servers_mock.get.assert_called_with(self.server.id)
|
self.servers_mock.get.assert_called_with(self.server.id)
|
||||||
|
self.find_image_mock.assert_not_called()
|
||||||
self.get_image_mock.assert_called_with(self.image.id)
|
self.get_image_mock.assert_called_with(self.image.id)
|
||||||
self.server.rebuild.assert_called_with(self.image, None)
|
self.server.rebuild.assert_called_with(self.image, None)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user