Because the failure is more likely to come from a sub-workflow in 'provide', the simple payload message formatting we usually do is a bit too rough to be useful:
$ openstack overcloud node provide 45dda8e9-f553-4301-ab0e-5c465a425136
Failed to set nodes to available state: [{u'result': u'Failure caused by error in tasks: set_provision_state\n\n set_provision_state [task_ex_id=d7d9ff22-a1f9-4489-8309-9c30ca94dc7a] -> Failed to run action [action_ex_id=6d31e9b1-aa70-4871-989f-5fb86d7becfd, action_cls=\'<class \'mistral.actions.action_factory.IronicAction\'>\', attributes=\'{u\'client_method_name\': u\'node.set_provision_state\'}\', params=\'{u\'state\': u\'provide\', u\'node_uuid\': u\'45dda8e9-f553-4301-ab0e-5c465a425136\', u\'configdrive\': None, u\'cleansteps\': None}\']\n IronicAction.node.set_provision_state failed: <class \'ironicclient.common.apiclient.exceptions.BadRequest\'>: The requested action "provide" can not be performed on node "45dda8e9-f553-4301-ab0e-5c465a425136" while it is in state "available".\n [action_ex_id=6d31e9b1-aa70-4871-989f-5fb86d7becfd, idx=0]: Failed to run action [action_ex_id=6d31e9b1-aa70-4871-989f-5fb86d7becfd, action_cls=\'<class \'mistral.actions.action_factory.IronicAction\'>\', attributes=\'{u\'client_method_name\': u\'node.set_provision_state\'}\', params=\'{u\'state\': u\'provide\', u\'node_uuid\': u\'45dda8e9-f553-4301-ab0e-5c465a425136\', u\'configdrive\': None, u\'cleansteps\': None}\']\n IronicAction.node.set_provision_state failed: <class \'ironicclient.common.apiclient.exceptions.BadRequest\'>: The requested action "provide" can not be performed on node "45dda8e9-f553-4301-ab0e-5c465a425136" while it is in state "available".\n'}]
A bit of simple massaging leads to this (for each failed node):
$ openstack overcloud node provide 45dda8e9-f553-4301-ab0e-5c465a425136
Failed to set nodes to available state:
Failure caused by error in tasks: set_provision_state
set_provision_state [task_ex_id=472bf915-7a0d-471d-8493-9e104c8fd7c6] -> Failed to run action [action_ex_id=9671e995-218a-43f2-adbf-bc5b8093bbfa, action_cls='<class 'mistral.actions.action_factory.IronicAction'>', attributes='{u'client_method_name': u'node.set_provision_state'}', params='{u'state': u'provide', u'node_uuid': u'45dda8e9-f553-4301-ab0e-5c465a425136', u'configdrive': None, u'cleansteps': None}']
IronicAction.node.set_provision_state failed: <class 'ironicclient.common.apiclient.exceptions.BadRequest'>: The requested action "provide" can not be performed on node "45dda8e9-f553-4301-ab0e-5c465a425136" while it is in state "available".
[action_ex_id=9671e995-218a-43f2-adbf-bc5b8093bbfa, idx=0]: Failed to run action [action_ex_id=9671e995-218a-43f2-adbf-bc5b8093bbfa, action_cls='<class 'mistral.actions.action_factory.IronicAction'>', attributes='{u'client_method_name': u'node.set_provision_state'}', params='{u'state': u'provide', u'node_uuid': u'45dda8e9-f553-4301-ab0e-5c465a425136', u'configdrive': None, u'cleansteps': None}']
IronicAction.node.set_provision_state failed: <class 'ironicclient.common.apiclient.exceptions.BadRequest'>: The requested action "provide" can not be performed on node "45dda8e9-f553-4301-ab0e-5c465a425136" while it is in state "available".
This is still a mouthful but I think/hope it's still easier to read and scan thus somewhat useful. I'm somewhat reluctant to make an attempt at more detailed string parsing so late in the cycle when the errors returned could be in any format.
There's plenty of additional work that could be done to improve error reporting in general but dealing with the task more broadly may be better suited for an Ocata task at this point.
Because the failure is more likely to come from a sub-workflow in 'provide', the simple payload message formatting we usually do is a bit too rough to be useful:
$ openstack overcloud node provide 45dda8e9- f553-4301- ab0e-5c465a4251 36 state\n\ n set_provision_state [task_ex_ id=d7d9ff22- a1f9-4489- 8309-9c30ca94dc 7a] -> Failed to run action [action_ ex_id=6d31e9b1- aa70-4871- 989f-5fb86d7bec fd, action_cls=\'<class \'mistral. actions. action_ factory. IronicAction\ '>\', attributes= \'{u\'client_ method_ name\': u\'node. set_provision_ state\' }\', params= \'{u\'state\ ': u\'provide\', u\'node_uuid\': u\'45dda8e9- f553-4301- ab0e-5c465a4251 36\', u\'configdrive\': None, u\'cleansteps\': None}\']\n IronicAction. node.set_ provision_ state failed: <class \'ironicclient. common. apiclient. exceptions. BadRequest\ '>: The requested action "provide" can not be performed on node "45dda8e9- f553-4301- ab0e-5c465a4251 36" while it is in state "available".\n [action_ ex_id=6d31e9b1- aa70-4871- 989f-5fb86d7bec fd, idx=0]: Failed to run action [action_ ex_id=6d31e9b1- aa70-4871- 989f-5fb86d7bec fd, action_cls=\'<class \'mistral. actions. action_ factory. IronicAction\ '>\', attributes= \'{u\'client_ method_ name\': u\'node. set_provision_ state\' }\', params= \'{u\'state\ ': u\'provide\', u\'node_uuid\': u\'45dda8e9- f553-4301- ab0e-5c465a4251 36\', u\'configdrive\': None, u\'cleansteps\': None}\']\n IronicAction. node.set_ provision_ state failed: <class \'ironicclient. common. apiclient. exceptions. BadRequest\ '>: The requested action "provide" can not be performed on node "45dda8e9- f553-4301- ab0e-5c465a4251 36" while it is in state "available".\n'}]
Failed to set nodes to available state: [{u'result': u'Failure caused by error in tasks: set_provision_
A bit of simple massaging leads to this (for each failed node):
$ openstack overcloud node provide 45dda8e9- f553-4301- ab0e-5c465a4251 36
Failed to set nodes to available state:
Failure caused by error in tasks: set_provision_state
set_provision _state [task_ex_ id=472bf915- 7a0d-471d- 8493-9e104c8fd7 c6] -> Failed to run action [action_ ex_id=9671e995- 218a-43f2- adbf-bc5b8093bb fa, action_cls='<class 'mistral. actions. action_ factory. IronicAction' >', attributes= '{u'client_ method_ name': u'node. set_provision_ state'} ', params='{u'state': u'provide', u'node_uuid': u'45dda8e9- f553-4301- ab0e-5c465a4251 36', u'configdrive': None, u'cleansteps': None}'] node.set_ provision_ state failed: <class 'ironicclient. common. apiclient. exceptions. BadRequest' >: The requested action "provide" can not be performed on node "45dda8e9- f553-4301- ab0e-5c465a4251 36" while it is in state "available". ex_id=9671e995- 218a-43f2- adbf-bc5b8093bb fa, idx=0]: Failed to run action [action_ ex_id=9671e995- 218a-43f2- adbf-bc5b8093bb fa, action_cls='<class 'mistral. actions. action_ factory. IronicAction' >', attributes= '{u'client_ method_ name': u'node. set_provision_ state'} ', params='{u'state': u'provide', u'node_uuid': u'45dda8e9- f553-4301- ab0e-5c465a4251 36', u'configdrive': None, u'cleansteps': None}'] node.set_ provision_ state failed: <class 'ironicclient. common. apiclient. exceptions. BadRequest' >: The requested action "provide" can not be performed on node "45dda8e9- f553-4301- ab0e-5c465a4251 36" while it is in state "available".
IronicAction.
[action_
IronicAction.
This is still a mouthful but I think/hope it's still easier to read and scan thus somewhat useful. I'm somewhat reluctant to make an attempt at more detailed string parsing so late in the cycle when the errors returned could be in any format.
There's plenty of additional work that could be done to improve error reporting in general but dealing with the task more broadly may be better suited for an Ocata task at this point.