Merge "Make sure we always populate flavor_id" into stable/train
This commit is contained in:
commit
c87b5b4916
|
@ -1385,7 +1385,7 @@ class ServerProfile(base.Profile):
|
|||
details = {
|
||||
'image': image_id,
|
||||
'attached_volumes': attached_volumes,
|
||||
'flavor': server_data['flavor']['id'],
|
||||
'flavor': self._get_flavor_id(obj, server_data),
|
||||
}
|
||||
for key in known_keys:
|
||||
if key in server_data:
|
||||
|
@ -1425,6 +1425,20 @@ class ServerProfile(base.Profile):
|
|||
|
||||
return dict((k, details[k]) for k in sorted(details))
|
||||
|
||||
def _get_flavor_id(self, obj, server):
|
||||
"""Get flavor id.
|
||||
|
||||
:param obj: The node object.
|
||||
:param dict server: The server object.
|
||||
:return: The flavor_id for the server.
|
||||
"""
|
||||
flavor = server['flavor']
|
||||
|
||||
if 'id' in flavor:
|
||||
return flavor['id']
|
||||
|
||||
return self.compute(obj).flavor_find(flavor['original_name'], False).id
|
||||
|
||||
def _get_image_id(self, obj, server, op):
|
||||
"""Get image id.
|
||||
|
||||
|
|
|
@ -1228,6 +1228,51 @@ class TestNovaServerBasic(base.SenlinTestCase):
|
|||
self.assertEqual(expected, res)
|
||||
cc.server_get.assert_called_once_with('FAKE_ID')
|
||||
|
||||
def test_do_get_details_flavor_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': {
|
||||
'original_name': 'FAKE_FLAVOR',
|
||||
},
|
||||
'id': 'FAKE_ID',
|
||||
'image': {},
|
||||
'attached_volumes': [{
|
||||
'id': 'FAKE_VOLUME',
|
||||
}],
|
||||
'security_groups': [{'name': 'default'}],
|
||||
}
|
||||
cc.server_get.return_value = nova_server
|
||||
cc.flavor_find.return_value = mock.PropertyMock(id='FAKE_FLAVOR_ID')
|
||||
|
||||
res = profile.do_get_details(node_obj)
|
||||
expected = {
|
||||
'flavor': 'FAKE_FLAVOR_ID',
|
||||
'id': 'FAKE_ID',
|
||||
'image': {},
|
||||
'attached_volumes': ['FAKE_VOLUME'],
|
||||
'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_image_no_id_key(self):
|
||||
cc = mock.Mock()
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
|
|
Loading…
Reference in New Issue