diff --git a/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py b/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py index 196d52b5b..2838c59db 100644 --- a/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py +++ b/tripleoclient/tests/v1/overcloud_node/test_overcloud_node.py @@ -101,6 +101,34 @@ class TestDeleteNode(fakes.TestDeleteNode): 'nodes': ['instance1', ] }) + def test_node_delete_wrong_instance(self): + + argslist = ['wrong_instance', '--templates', + '--stack', 'overcloud'] + verifylist = [ + ('stack', 'overcloud'), + ('nodes', ['wrong_instance']), + ] + parsed_args = self.check_parser(self.cmd, argslist, verifylist) + + self.websocket.wait_for_message.return_value = { + "status": "FAILED", + "message": """Failed to run action ERROR: Couldn't find \ + following instances in stack overcloud: wrong_instance""" + } + + self.assertRaises(exceptions.InvalidConfiguration, + self.cmd.take_action, parsed_args) + + # Verify + self.workflow.executions.create.assert_called_once_with( + 'tripleo.scale.v1.delete_node', + workflow_input={ + 'container': 'overcloud', + 'queue_name': 'UUID4', + 'nodes': ['wrong_instance', ] + }) + class TestProvideNode(fakes.TestOvercloudNode): diff --git a/tripleoclient/workflows/scale.py b/tripleoclient/workflows/scale.py index 6ac70963c..d73a5d307 100644 --- a/tripleoclient/workflows/scale.py +++ b/tripleoclient/workflows/scale.py @@ -14,9 +14,9 @@ # under the License. from __future__ import print_function -import pprint import uuid +from tripleoclient.exceptions import InvalidConfiguration from tripleoclient.workflows import base @@ -33,8 +33,9 @@ def delete_node(clients, **workflow_input): ) with tripleoclients.messaging_websocket(queue_name) as ws: - message = ws.wait_for_message(execution.id) - assert message['status'] == "SUCCESS", pprint.pformat(message) + rtn_message = ws.wait_for_message(execution.id) + if rtn_message['status'] != "SUCCESS": + raise InvalidConfiguration(rtn_message['message']) def scale_down(clients, plan_name, nodes, timeout=None):