From 735aae777ede16deec7cc206d1d4e9ebdb5b7564 Mon Sep 17 00:00:00 2001 From: David Shrewsbury Date: Fri, 19 Jun 2015 09:47:23 -0400 Subject: [PATCH] Convert ironicclient node.update() call to Task Changes the node.update() calls to Task calls. Also adds missing test cases. Change-Id: Iaa97aef01b14c348b8cf9045b928a972151b0614 --- shade/__init__.py | 8 ++++++-- shade/_tasks.py | 5 +++++ shade/tests/unit/test_shade_operator.py | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/shade/__init__.py b/shade/__init__.py index f1136ce95..b391158b6 100644 --- a/shade/__init__.py +++ b/shade/__init__.py @@ -3382,7 +3382,9 @@ class OperatorCloud(OpenStackCloud): def set_node_instance_info(self, uuid, patch): try: return meta.obj_to_dict( - self.ironic_client.node.update(uuid, patch)) + self.manager.submitTask( + _tasks.MachineNodeUpdate(node_id=uuid, patch=patch)) + ) except Exception as e: self.log.debug( "Failed to update instance_info", exc_info=True) @@ -3393,7 +3395,9 @@ class OperatorCloud(OpenStackCloud): patch.append({'op': 'remove', 'path': '/instance_info'}) try: return meta.obj_to_dict( - self.ironic_client.node.update(uuid, patch)) + self.manager.submitTask( + _tasks.MachineNodeUpdate(node_id=uuid, patch=patch)) + ) except Exception as e: self.log.debug( "Failed to delete instance_info", exc_info=True) diff --git a/shade/_tasks.py b/shade/_tasks.py index 348a6d7c9..5fbb5d650 100644 --- a/shade/_tasks.py +++ b/shade/_tasks.py @@ -422,6 +422,11 @@ class MachineNodePortList(task_manager.Task): return client.ironic_client.node.list_ports(**self.args) +class MachineNodeUpdate(task_manager.Task): + def main(self, client): + return client.ironic_client.node.update(**self.args) + + class MachineNodeValidate(task_manager.Task): def main(self, client): return client.ironic_client.node.validate(**self.args) diff --git a/shade/tests/unit/test_shade_operator.py b/shade/tests/unit/test_shade_operator.py index c021229e8..48159b8cc 100644 --- a/shade/tests/unit/test_shade_operator.py +++ b/shade/tests/unit/test_shade_operator.py @@ -506,6 +506,24 @@ class TestShadeOperator(base.TestCase): state='deleted', configdrive=None) + @mock.patch.object(shade.OperatorCloud, 'ironic_client') + def test_set_node_instance_info(self, mock_client): + uuid = 'aaa' + patch = [{'op': 'add', 'foo': 'bar'}] + self.cloud.set_node_instance_info(uuid, patch) + mock_client.node.update.assert_called_with( + node_id=uuid, patch=patch + ) + + @mock.patch.object(shade.OperatorCloud, 'ironic_client') + def test_purge_node_instance_info(self, mock_client): + uuid = 'aaa' + expected_patch = [{'op': 'remove', 'path': '/instance_info'}] + self.cloud.purge_node_instance_info(uuid) + mock_client.node.update.assert_called_with( + node_id=uuid, patch=expected_patch + ) + @mock.patch.object(shade.OpenStackCloud, 'glance_client') def test_get_image_name(self, glance_mock):