Merge "Consistent normalization of Machine objects in the cloud layer" into stable/train

This commit is contained in:
Zuul 2020-03-13 00:20:38 +00:00 committed by Gerrit Code Review
commit 211bdc68d1
4 changed files with 17 additions and 11 deletions

View File

@ -68,7 +68,7 @@ class BaremetalCloudMixin(_normalize.Normalizer):
:returns: list of ``munch.Munch`` representing machines.
"""
return [self._normalize_machine(node._to_munch())
return [self._normalize_machine(node)
for node in self.baremetal.nodes()]
def get_machine(self, name_or_id):
@ -83,8 +83,7 @@ class BaremetalCloudMixin(_normalize.Normalizer):
nodes are found.
"""
try:
return self._normalize_machine(
self.baremetal.get_node(name_or_id)._to_munch())
return self._normalize_machine(self.baremetal.get_node(name_or_id))
except exc.OpenStackCloudResourceNotFound:
return None
@ -159,7 +158,7 @@ class BaremetalCloudMixin(_normalize.Normalizer):
wait=True,
timeout=timeout)
return node._to_munch()
return self._normalize_machine(node)
def register_machine(self, nics, wait=False, timeout=3600,
lock_timeout=600, **kwargs):
@ -477,7 +476,7 @@ class BaremetalCloudMixin(_normalize.Normalizer):
change_list = [change['path'] for change in patch]
node = self.baremetal.update_node(machine, **attrs)
return dict(
node=self._normalize_machine(node._to_munch()),
node=self._normalize_machine(node),
changes=change_list
)
@ -573,7 +572,7 @@ class BaremetalCloudMixin(_normalize.Normalizer):
node = self.baremetal.set_node_provision_state(
name_or_id, target=state, config_drive=configdrive,
wait=wait, timeout=timeout)
return node._to_munch()
return self._normalize_machine(node)
def set_machine_maintenance_state(
self,

View File

@ -1168,13 +1168,14 @@ class Normalizer(object):
def _normalize_machine(self, machine):
"""Normalize Ironic Machine"""
machine = machine.copy()
if isinstance(machine, resource.Resource):
machine = machine._to_munch()
else:
machine = machine.copy()
# Discard noise
self._remove_novaclient_artifacts(machine)
# TODO(mordred) Normalize this resource
return machine
def _normalize_roles(self, roles):

View File

@ -213,8 +213,9 @@ class TestBaremetalNode(base.IronicTestCase):
json=self.fake_baremetal_node,
validate=dict(json=test_patch)),
])
self.cloud.patch_machine(
result = self.cloud.patch_machine(
self.fake_baremetal_node['uuid'], test_patch)
self.assertEqual(self.fake_baremetal_node['uuid'], result['uuid'])
self.assert_calls()
@ -759,10 +760,11 @@ class TestBaremetalNode(base.IronicTestCase):
append=[self.fake_baremetal_node['uuid']]),
json=self.fake_baremetal_node),
])
self.cloud.node_set_provision_state(
result = self.cloud.node_set_provision_state(
self.fake_baremetal_node['uuid'],
'active',
configdrive='http://host/file')
self.assertEqual(self.fake_baremetal_node['uuid'], result['uuid'])
self.assert_calls()

View File

@ -0,0 +1,4 @@
---
fixes:
- |
Fixes normalization of bare metal machines in the ``patch_machine`` call.