Support multiple messages from provide workflow

This updates the workflow wrapper to use the multiple message interface.

Change-Id: I8ec4c3db9a2bd84d8cb577febef177cf6b663a86
Partial-Bug: #1646887
This commit is contained in:
Dougal Matthews 2017-03-15 15:39:09 +00:00
parent af4e0726ce
commit 17f20bdaa6
3 changed files with 18 additions and 28 deletions

View File

@ -168,11 +168,16 @@ class TestProvideNode(fakes.TestOvercloudNode):
# Get the command object to test
self.cmd = overcloud_node.ProvideNode(self.app, None)
def test_provide_all_manageable_nodes(self):
self.websocket.wait_for_message.return_value = {
"status": "SUCCESS",
"message": ""
"message": "Success"
}
self.websocket.wait_for_messages.return_value = iter([{
"status": "SUCCESS",
"message": "Success"
}])
def test_provide_all_manageable_nodes(self):
parsed_args = self.check_parser(self.cmd,
['--all-manageable'],
@ -187,11 +192,6 @@ class TestProvideNode(fakes.TestOvercloudNode):
def test_provide_one_node(self):
node_id = 'node_uuid1'
self.websocket.wait_for_message.return_value = {
"status": "SUCCESS",
"message": "Success"
}
parsed_args = self.check_parser(self.cmd,
[node_id],
[('node_uuids', [node_id])])
@ -207,11 +207,6 @@ class TestProvideNode(fakes.TestOvercloudNode):
node_id1 = 'node_uuid1'
node_id2 = 'node_uuid2'
self.websocket.wait_for_message.return_value = {
"status": "SUCCESS",
"message": "Success"
}
argslist = [node_id1, node_id2]
verifylist = [('node_uuids', [node_id1, node_id2])]
@ -279,11 +274,10 @@ class TestIntrospectNode(fakes.TestOvercloudNode):
2 if provide else 1)
def _check_introspect_nodes(self, parsed_args, nodes, provide=False):
self.websocket.wait_for_message.return_value = {
self.websocket.wait_for_messages.return_value = [{
"status": "SUCCESS",
"message": "Success",
"introspected_nodes": {}
}
}]
self.cmd.take_action(parsed_args)

View File

@ -91,9 +91,7 @@ class TestBaremetalWorkflows(utils.TestCommand):
def test_provide_success(self):
self.websocket.wait_for_message.return_value = {
"status": "SUCCESS",
}
self.websocket.wait_for_messages.return_value = self.message_success
baremetal.provide(self.app.client_manager, node_uuids=[],
queue_name="QUEUE_NAME")
@ -107,10 +105,7 @@ class TestBaremetalWorkflows(utils.TestCommand):
def test_provide_error(self):
self.websocket.wait_for_message.return_value = {
"status": "FAIL",
"message": "Failed"
}
self.websocket.wait_for_messages.return_value = self.message_failed
self.assertRaises(
exceptions.NodeProvideError,
@ -135,10 +130,11 @@ class TestBaremetalWorkflows(utils.TestCommand):
def test_provide_error_with_format_message(self):
self.websocket.wait_for_message.return_value = {
self.websocket.wait_for_messages.return_value = iter([{
"execution": {"id": "IDID"},
"status": "FAIL",
"message": ['Error1', 'Error2']
}
}])
self.assertRaises(
exceptions.NodeProvideError,

View File

@ -82,11 +82,11 @@ def provide(clients, **workflow_input):
)
with tripleoclients.messaging_websocket(queue_name) as ws:
payload = ws.wait_for_message(execution.id)
for payload in base.wait_for_messages(workflow_client, ws, execution):
if 'message' in payload:
print(payload['message'])
if payload['status'] == 'SUCCESS':
print('Successfully set all nodes to available.')
else:
if payload['status'] != 'SUCCESS':
try:
message = _format_provide_errors(payload)
except Exception: