Fix node show detail image id error

This patch fix if image is not in server boot,Node detail
return dict

Closes-Bug:#1662053

Change-Id: I5bbabf1f5be000000a960df1df0279992ab75683
This commit is contained in:
Yuanbin.Chen 2017-02-06 12:53:16 +08:00 committed by chenyb4
parent 5bd1c2fffb
commit fa6252d9d3
2 changed files with 44 additions and 1 deletions

View File

@ -1006,8 +1006,12 @@ class ServerProfile(base.Profile):
if server is None:
return {}
server_data = server.to_dict()
if 'id' in server_data['image']:
image_id = server_data['image']['id']
else:
image_id = server_data['image']
details = {
'image': server_data['image']['id'],
'image': image_id,
'flavor': server_data['flavor']['id'],
}
for key in known_keys:

View File

@ -723,6 +723,45 @@ class TestNovaServerBasic(base.SenlinTestCase):
self.assertEqual(expected, res)
cc.server_get.assert_called_once_with('FAKE_ID')
def test_do_get_details_image_no_id_key(self):
cc = mock.Mock()
profile = server.ServerProfile('t', self.spec)
profile._computeclient = cc
node_obj = mock.Mock(physical_id='FAKE_ID')
# Test normal path
nova_server = mock.Mock()
nova_server.to_dict.return_value = {
'addresses': {
'private': [{
'version': 4,
'addr': '10.0.0.3',
}]
},
'flavor': {
'id': 'FAKE_FLAVOR',
},
'id': 'FAKE_ID',
'image': {},
'security_groups': [{'name': 'default'}],
}
cc.server_get.return_value = nova_server
res = profile.do_get_details(node_obj)
expected = {
'flavor': 'FAKE_FLAVOR',
'id': 'FAKE_ID',
'image': {},
'addresses': {
'private': [{
'version': 4,
'addr': '10.0.0.3',
}]
},
'security_groups': 'default',
}
self.assertEqual(expected, res)
cc.server_get.assert_called_once_with('FAKE_ID')
def test_do_get_details_with_more_network_or_sg(self):
cc = mock.Mock()
profile = server.ServerProfile('t', self.spec)