11---
22stages :
33 - name : Apply ironic network-attachement-definition
4+ documentation : >-
5+ Creates a Multus NetworkAttachmentDefinition that allows pods to attach to the ironic
6+ provisioning network. This is required for sushy-emulator to communicate with baremetal
7+ nodes during provisioning operations via the dedicated provisioning network.
48 manifest : manifests/nad.yaml
59 wait_conditions :
610 - >-
711 oc wait -n sushy-emulator network-attachment-definitions.k8s.cni.cncf.io ironic
812 --for jsonpath='{.metadata.annotations}' --timeout=30s
913
1014 - name : Patch RedFish Sushy Emulator Deployment - add network attachment
15+ documentation : >-
16+ Modifies the sushy-emulator deployment to attach to the ironic provisioning network
17+ via CNI network annotation. This enables the BMC simulator to receive Redfish API
18+ calls on the correct network segment where baremetal nodes expect their BMC interfaces.
1119 shell : |
1220 set -xe -o pipefail
1321
@@ -29,6 +37,10 @@ stages:
2937 - " oc -n sushy-emulator wait deployments.apps sushy-emulator --for condition=Available --timeout=300s"
3038
3139 - name : Set a multiattach volume type and create it if needed
40+ documentation : >-
41+ Creates a Cinder volume type with multiattach capability enabled, allowing volumes
42+ to be simultaneously attached to multiple instances. This is essential for shared
43+ storage scenarios like clustered databases or file systems in the test environment.
3244 shell : |
3345 set -xe -o pipefail
3446 oc project openstack
@@ -39,6 +51,11 @@ stages:
3951 oc rsh openstackclient openstack volume type set --property multiattach="<is> True" multiattach
4052
4153 - name : Create public network if needed
54+ documentation : >-
55+ Establishes the external network that provides floating IP connectivity to instances.
56+ This network is mapped to the physical 'datacentre' network and serves as the gateway
57+ for external traffic routing. Essential for instances to reach external services and
58+ for external clients to access instance services via floating IPs.
4259 shell : |
4360 set -xe -o pipefail
4461 oc project openstack
@@ -52,6 +69,11 @@ stages:
5269 --provider-physical-network datacentre
5370
5471 - name : Create subnet on public network if needed
72+ documentation : >-
73+ Defines the IP address pool and routing configuration for the public network.
74+ The 192.168.122.0/24 range with allocation pool 171-250 provides floating IPs
75+ while preserving lower addresses for infrastructure. Gateway 192.168.122.1
76+ routes traffic to external networks.
5577 shell : |
5678 set -xe -o pipefail
5779 oc project openstack
@@ -65,6 +87,11 @@ stages:
6587 --dhcp
6688
6789 - name : Create private network if needed
90+ documentation : >-
91+ Creates the default tenant network for instance-to-instance communication.
92+ This shared network allows multiple tenants to deploy instances that can
93+ communicate privately while being isolated from external networks until
94+ floating IPs are assigned.
6895 shell : |
6996 set -xe -o pipefail
7097 oc project openstack
@@ -73,6 +100,11 @@ stages:
73100 oc rsh openstackclient openstack network create private --share
74101
75102 - name : Create subnet on private network if needed
103+ documentation : >-
104+ Configures the private tenant network with RFC1918 addressing (10.2.0.0/24).
105+ This subnet provides DHCP-assigned IP addresses for instances deployed on
106+ the private network, enabling inter-instance communication before floating
107+ IP assignment for external access.
76108 shell : |
77109 set -xe -o pipefail
78110 oc project openstack
@@ -86,6 +118,11 @@ stages:
86118 --dhcp
87119
88120 - name : Create network for ironic provisioning if needed
121+ documentation : >-
122+ Establishes the dedicated baremetal provisioning network mapped to the physical
123+ 'ironic' network interface. This isolated network carries PXE boot traffic, DHCP
124+ for baremetal nodes, and communication between Ironic services and nodes during
125+ deployment operations, keeping provisioning traffic separate from tenant networks.
89126 shell : |
90127 set -xe -o pipefail
91128 oc project openstack
@@ -99,6 +136,11 @@ stages:
99136 --provider-network-type flat
100137
101138 - name : Create subnet for ironic provisioning if needed
139+ documentation : >-
140+ Configures IP addressing for the baremetal provisioning network (172.20.1.0/24).
141+ DNS server 192.168.122.80 provides name resolution during node deployment.
142+ The allocation pool 100-200 reserves addresses for DHCP assignment to baremetal
143+ nodes during their provisioning lifecycle.
102144 shell : |
103145 set -xe -o pipefail
104146 oc project openstack
@@ -113,6 +155,12 @@ stages:
113155 --allocation-pool start=172.20.1.100,end=172.20.1.200
114156
115157 - name : Create baremetal flavor if needed
158+ documentation : >-
159+ Defines Nova flavor for baremetal instances with custom resource requirements.
160+ Uses CUSTOM_BAREMETAL=1 to match against baremetal node resource classes,
161+ while setting standard resources (VCPU, MEMORY_MB, DISK_GB) to 0 since
162+ physical resources are managed by Ironic rather than Nova's scheduler.
163+ UEFI boot mode ensures compatibility with modern baremetal hardware.
116164 shell : |
117165 set -xe -o pipefail
118166 oc project openstack
@@ -131,18 +179,33 @@ stages:
131179 --property capabilities:boot_mode=uefi
132180
133181 - name : Copy ironic_nodes.yaml to the openstackclient pod
182+ documentation : >-
183+ Transfers the baremetal node definition file containing BMC credentials,
184+ hardware specifications, and network configurations from the local filesystem
185+ to the OpenStack client pod. This file defines the physical infrastructure
186+ that Ironic will manage for baremetal provisioning.
134187 shell : |
135188 set -xe -o pipefail
136189 oc project openstack
137190 oc cp ~/data/ironic_nodes.yaml openstackclient:ironic_nodes.yaml
138191
139192 - name : Enroll nodes in ironic
193+ documentation : >-
194+ Registers physical baremetal nodes with the Ironic service using the node
195+ definitions from ironic_nodes.yaml. This creates Ironic node records with
196+ BMC access credentials, hardware profiles, and port configurations, marking
197+ the beginning of the node lifecycle management in OpenStack.
140198 shell : |
141199 set -xe -o pipefail
142200 oc project openstack
143201 oc rsh openstackclient openstack baremetal create ironic_nodes.yaml
144202
145203 - name : Wait for ironic nodes to get to state - enroll
204+ documentation : >-
205+ Monitors node state transition to 'enroll' status, indicating that Ironic
206+ has successfully registered the nodes and validated basic BMC connectivity.
207+ This is the first state in the baremetal provisioning lifecycle, confirming
208+ that nodes are recognized by the system before management operations begin.
146209 shell : |
147210 oc project openstack
148211
@@ -160,6 +223,11 @@ stages:
160223 done
161224
162225 - name : Manage ironic nodes
226+ documentation : >-
227+ Initiates the transition from 'enroll' to 'manageable' state by instructing
228+ Ironic to perform hardware introspection and validation. During this process,
229+ Ironic will power on nodes, inspect hardware capabilities, and prepare them
230+ for provisioning operations while validating BMC access and power management.
163231 shell : |
164232 set -xe -o pipefail
165233 oc project openstack
@@ -168,6 +236,11 @@ stages:
168236 oc rsh openstackclient openstack baremetal node manage ironic1
169237
170238 - name : Wait for ironic nodes to get to state - manageable
239+ documentation : >-
240+ Waits for nodes to complete hardware introspection and reach 'manageable' state.
241+ In this state, Ironic has successfully inventoried hardware resources, validated
242+ BMC functionality, and confirmed the nodes are ready for cleaning and provisioning
243+ operations. This is a prerequisite for making nodes available to tenants.
171244 shell : |
172245 oc project openstack
173246
@@ -185,22 +258,24 @@ stages:
185258 done
186259
187260 - name : Power off the ironic nodes
261+ documentation : >-
262+ Ensures all baremetal nodes are powered down before configuration changes.
263+ This prevents potential issues during capability updates and ensures a clean
264+ state before transitioning nodes to 'available'. Power management validation
265+ also confirms BMC functionality is working correctly.
188266 shell : |
189267 set -xe -o pipefail
190268 oc project openstack
191269
192270 oc rsh openstackclient openstack baremetal node power off ironic0
193271 oc rsh openstackclient openstack baremetal node power off ironic1
194272
195- - name : Set capabilities boot_mode:uefi for ironic nodes
196- shell : |
197- set -xe -o pipefail
198- oc project openstack
199-
200- oc rsh openstackclient openstack baremetal node set --property capabilities='boot_mode:uefi' ironic0
201- oc rsh openstackclient openstack baremetal node set --property capabilities='boot_mode:uefi' ironic1
202-
203273 - name : Ensure ironic nodes are powered off
274+ documentation : >-
275+ Verifies that power management commands have taken effect and all nodes
276+ report 'power off' status. This confirmation is critical before transitioning
277+ to 'available' state, as Nova expects baremetal nodes to be powered off
278+ when not actively hosting instances.
204279 shell : |
205280 oc project openstack
206281
@@ -218,6 +293,11 @@ stages:
218293 done
219294
220295 - name : Provide ironic nodes
296+ documentation : >-
297+ Transitions nodes from 'manageable' to 'available' state, making them eligible
298+ for tenant provisioning. This triggers automated cleaning processes to ensure
299+ nodes are in a pristine state, removing any residual data from previous
300+ deployments and preparing them for new instance launches.
221301 shell : |
222302 set -xe -o pipefail
223303 oc project openstack
@@ -226,6 +306,11 @@ stages:
226306 oc rsh openstackclient openstack baremetal node provide ironic1
227307
228308 - name : Wait for ironic nodes to get to state - available
309+ documentation : >-
310+ Confirms nodes have completed the cleaning process and reached 'available' state.
311+ Available nodes appear in Nova's resource inventory and can be allocated to
312+ instance requests that match the baremetal flavor. This state indicates the
313+ baremetal infrastructure is fully operational and ready for workload deployment.
229314 shell : |
230315 oc project openstack
231316
@@ -258,5 +343,61 @@ stages:
258343 sleep 10
259344 done
260345
346+ - name : Wait for expected compute services (OSPRH-10942)
347+ documentation : >-
348+ Waits for Nova compute services to register and become available in the
349+ Nova service registry. The hotstack-nova-discover-hosts utility ensures
350+ that all compute services (2 EDPM computes + 1 Ironic conductor) are
351+ properly registered as compute nodes, enabling Nova scheduler to place
352+ both VM and baremetal instances. References bug OSPRH-10942 related to
353+ compute service discovery timing issues.
354+ wait_conditions :
355+ - >-
356+ timeout --foreground 5m hotstack-nova-discover-hosts
357+ --namespace openstack --num-computes 3
358+
261359 - name : Run tempest
360+ documentation : >-
361+ Executes comprehensive OpenStack validation tests using the Tempest framework.
362+ These tests validate API functionality, resource management, and integration
363+ between OpenStack services in the baremetal environment.
364+
365+ Workflow steps:
366+ - Step 0: ironic-scenario-testing
367+ - Step 1: ironic-api-testing
368+ - Step 2: multi-thread-testing
369+ - Step 3: single-thread-testing
262370 manifest : tempest-tests.yml
371+ wait_conditions :
372+ - >-
373+ oc wait -n openstack tempests.test.openstack.org tempest-tests
374+ --for condition=ServiceConfigReady --timeout=120s
375+ wait_pod_completion :
376+ - namespace : openstack
377+ labels :
378+ operator : test-operator
379+ service : tempest
380+ workflowStep : " 0"
381+ timeout : 900
382+ poll_interval : 15
383+ - namespace : openstack
384+ labels :
385+ operator : test-operator
386+ service : tempest
387+ workflowStep : " 1"
388+ timeout : 900
389+ poll_interval : 15
390+ - namespace : openstack
391+ labels :
392+ operator : test-operator
393+ service : tempest
394+ workflowStep : " 2"
395+ timeout : 10800
396+ poll_interval : 30
397+ - namespace : openstack
398+ labels :
399+ operator : test-operator
400+ service : tempest
401+ workflowStep : " 3"
402+ timeout : 10800
403+ poll_interval : 30
0 commit comments