From 00cc27c3540c0285ccad27bd98135578cace907f Mon Sep 17 00:00:00 2001 From: Doug Goldstein Date: Thu, 13 Nov 2025 17:01:31 -0600 Subject: [PATCH] feat(workflows): update inspection workflow to use redfish and agent When we can use the redfish inspection we should utilize that first before utilizing the agent inspection. --- .../workflowtemplates/inspect-server.yaml | 101 +++++++++++++----- 1 file changed, 72 insertions(+), 29 deletions(-) diff --git a/workflows/argo-events/workflowtemplates/inspect-server.yaml b/workflows/argo-events/workflowtemplates/inspect-server.yaml index 5a33f9c9b..8dd18b1f2 100644 --- a/workflows/argo-events/workflowtemplates/inspect-server.yaml +++ b/workflows/argo-events/workflowtemplates/inspect-server.yaml @@ -15,8 +15,10 @@ spec: - name: node templates: - name: main - steps: - - - name: node-id + dag: + tasks: + - name: node-id + # convert a name to a UUID if needed template: openstack-read-param arguments: parameters: @@ -26,26 +28,44 @@ spec: value: "{{workflow.parameters.node}}" - name: param value: uuid - - - name: server-start-state + - name: server-start-state + # read the current server state + depends: "node-id.Succeeded" template: openstack-read-param arguments: parameters: - name: object value: node - name: object_ref - value: "{{steps.node-id.outputs.result}}" + value: "{{tasks.node-id.outputs.result}}" - name: param value: provision_state - - - name: manage-server + - name: server-driver + # read the currently used server driver + depends: "server-start-state.Succeeded" + template: openstack-read-param + arguments: + parameters: + - name: object + value: node + - name: object_ref + value: "{{tasks.node-id.outputs.result}}" + - name: param + value: driver + - name: manage-server + # move the server into manageable to inspect if needed + depends: "server-driver.Succeeded" template: openstack-wait-cmd arguments: parameters: - name: operation value: "manage" - name: node_id - value: "{{steps.node-id.outputs.result}}" - when: "{{steps.server-start-state.outputs.result}} != manageable" - - - name: server-set-agent-inspect + value: "{{tasks.node-id.outputs.result}}" + when: "{{tasks.server-start-state.outputs.result}} != 'manageable'" + - name: server-set-inspect-redfish + # change the server to redfish based inspection + depends: "server-driver.Succeeded && (manage-server.Succeeded || manage-server.Skipped)" template: openstack-set-cmd arguments: parameters: @@ -54,47 +74,70 @@ spec: - name: flag value: "--inspect-interface" - name: value - value: "agent" + value: "redfish" - name: obj_id - value: "{{steps.node-id.outputs.result}}" - - - name: server-manage-state - template: openstack-read-param + value: "{{tasks.node-id.outputs.result}}" + when: "{{tasks.server-driver.outputs.result}} == 'redfish'" + - name: server-set-inspect-idrac-redfish + # change the server to idrac-redfish based inspection + depends: "server-driver.Succeeded && (manage-server.Succeeded || manage-server.Skipped)" + template: openstack-set-cmd arguments: parameters: - name: object value: node - - name: object_ref - value: "{{steps.node-id.outputs.result}}" - - name: param - value: provision_state - - - name: inspect-server + - name: flag + value: "--inspect-interface" + - name: value + value: "idrac-redfish" + - name: obj_id + value: "{{tasks.node-id.outputs.result}}" + when: "{{tasks.server-driver.outputs.result}} == 'idrac'" + - name: inspect-server-redfish + # run redfish based inspection + depends: "server-set-inspect-redfish.Succeeded || server-set-inspect-idrac-redfish.Succeeded" template: openstack-wait-cmd arguments: parameters: - name: operation value: "inspect" - name: node_id - value: "{{steps.node-id.outputs.result}}" - when: "{{steps.server-manage-state.outputs.result}} == manageable" - - - name: server-inspect-state - template: openstack-read-param + value: "{{tasks.node-id.outputs.result}}" + - name: server-set-inspect-agent + # change the server to agent based inspection + depends: "inspect-server-redfish.Succeeded || inspect-server-redfish.Omitted" + template: openstack-set-cmd arguments: parameters: - name: object value: node - - name: object_ref - value: "{{steps.node-id.outputs.result}}" - - name: param - value: provision_state - - - name: avail-server + - name: flag + value: "--inspect-interface" + - name: value + value: "agent" + - name: obj_id + value: "{{tasks.node-id.outputs.result}}" + - name: inspect-server-agent + # run agent based inspection + depends: "server-set-inspect-agent.Succeeded" + template: openstack-wait-cmd + arguments: + parameters: + - name: operation + value: "inspect" + - name: node_id + value: "{{tasks.node-id.outputs.result}}" + - name: return-server + # returns a server to its previous state if needed + depends: "inspect-server-agent.Succeeded" template: openstack-wait-cmd arguments: parameters: - name: operation - value: "provide" + value: "{{tasks.server-start-state.outputs.result}}" - name: node_id - value: "{{steps.node-id.outputs.result}}" - when: "{{steps.server-inspect-state.outputs.result}} == manageable" + value: "{{tasks.node-id.outputs.result}}" + when: "{{tasks.server-start-state.outputs.result}} != 'manageable'" - name: openstack-wait-cmd inputs: parameters: