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)
|
||||
|
||||
# If parsed_args.image is not set, default to the currently used one.
|
||||
image_id = parsed_args.image or server.to_dict().get(
|
||||
'image', {}).get('id')
|
||||
image = image_client.get_image(image_id)
|
||||
if parsed_args.image:
|
||||
image = image_client.find_image(
|
||||
parsed_args.image, ignore_missing=False)
|
||||
else:
|
||||
image_id = server.to_dict().get('image', {}).get('id')
|
||||
image = image_client.get_image(image_id)
|
||||
|
||||
kwargs = {}
|
||||
if parsed_args.property:
|
||||
|
@ -3577,6 +3577,41 @@ class TestServerRebuild(TestServer):
|
||||
|
||||
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):
|
||||
arglist = [
|
||||
self.server.id,
|
||||
@ -3590,6 +3625,7 @@ class TestServerRebuild(TestServer):
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
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.server.rebuild.assert_called_with(self.image, None)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user