diff --git a/workflows/argo-events/workflowtemplates/inspect-server.yaml b/workflows/argo-events/workflowtemplates/inspect-server.yaml new file mode 100644 index 000000000..5a33f9c9b --- /dev/null +++ b/workflows/argo-events/workflowtemplates/inspect-server.yaml @@ -0,0 +1,189 @@ +--- +apiVersion: argoproj.io/v1alpha1 +metadata: + name: inspect-server + annotations: + workflows.argoproj.io/title: Perform Ironic inspection on a node/server + workflows.argoproj.io/description: | + Defined in `workflows/argo-events/workflowtemplates/inspect-server.yaml` +kind: WorkflowTemplate +spec: + serviceAccountName: workflow + entrypoint: main + arguments: + parameters: + - name: node + templates: + - name: main + steps: + - - name: node-id + template: openstack-read-param + arguments: + parameters: + - name: object + value: node + - name: object_ref + value: "{{workflow.parameters.node}}" + - name: param + value: uuid + - - name: server-start-state + template: openstack-read-param + arguments: + parameters: + - name: object + value: node + - name: object_ref + value: "{{steps.node-id.outputs.result}}" + - name: param + value: provision_state + - - name: manage-server + 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 + template: openstack-set-cmd + arguments: + parameters: + - name: object + value: node + - name: flag + value: "--inspect-interface" + - name: value + value: "agent" + - name: obj_id + value: "{{steps.node-id.outputs.result}}" + - - name: server-manage-state + template: openstack-read-param + arguments: + parameters: + - name: object + value: node + - name: object_ref + value: "{{steps.node-id.outputs.result}}" + - name: param + value: provision_state + - - name: inspect-server + 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 + arguments: + parameters: + - name: object + value: node + - name: object_ref + value: "{{steps.node-id.outputs.result}}" + - name: param + value: provision_state + - - name: avail-server + template: openstack-wait-cmd + arguments: + parameters: + - name: operation + value: "provide" + - name: node_id + value: "{{steps.node-id.outputs.result}}" + when: "{{steps.server-inspect-state.outputs.result}} == manageable" + - name: openstack-wait-cmd + inputs: + parameters: + - name: operation + - name: node_id + container: + image: ghcr.io/rackerlabs/understack/openstack-client:2025.1-ubuntu_jammy + command: + - openstack + args: + - baremetal + - node + - "{{inputs.parameters.operation}}" + - --wait + - "0" + - "{{inputs.parameters.node_id}}" + env: + - name: OS_CLOUD + value: understack + volumeMounts: + - mountPath: /etc/openstack + name: baremetal-manage + volumes: + - name: baremetal-manage + secret: + secretName: baremetal-manage + items: + - key: clouds.yaml + path: clouds.yaml + - name: openstack-set-cmd + inputs: + parameters: + - name: object + - name: flag + - name: value + - name: obj_id + container: + image: ghcr.io/rackerlabs/understack/openstack-client:2025.1-ubuntu_jammy + command: + - openstack + args: + - baremetal + - "{{inputs.parameters.object}}" + - set + - "{{inputs.parameters.flag}}" + - "{{inputs.parameters.value}}" + - "{{inputs.parameters.obj_id}}" + env: + - name: OS_CLOUD + value: understack + volumeMounts: + - mountPath: /etc/openstack + name: baremetal-manage + volumes: + - name: baremetal-manage + secret: + secretName: baremetal-manage + items: + - key: clouds.yaml + path: clouds.yaml + - name: openstack-read-param + inputs: + parameters: + - name: object + - name: object_ref + - name: param + container: + image: ghcr.io/rackerlabs/understack/openstack-client:2025.1-ubuntu_jammy + command: + - openstack + args: + - baremetal + - "{{inputs.parameters.object}}" + - show + - "-f" + - "value" + - "-c" + - "{{inputs.parameters.param}}" + - "{{inputs.parameters.object_ref}}" + env: + - name: OS_CLOUD + value: understack + volumeMounts: + - mountPath: /etc/openstack + name: baremetal-manage + volumes: + - name: baremetal-manage + secret: + secretName: baremetal-manage + items: + - key: clouds.yaml + path: clouds.yaml