Skip to content

Commit 6aa87c4

Browse files
committed
uni01alpha: wait tempest pod completion
Modernize uni01alpha test automation to match current patterns: - Add documentation fields to all stages explaining their purpose - Add wait_pod_completion for all 4 tempest workflow steps - Set 3-hour timeouts for multi/single-thread tests (steps 2-3) - Add "Wait for expected compute services" stage (OSPRH-10942) - Reorder tempest-tests.yml workflow: ironic tests first Fix incorrect documentation in other scenarios. Assisted-By: Claude (claude-4.5-sonnet) Signed-off-by: Harald Jensås <hjensas@redhat.com>
1 parent 7e1f500 commit 6aa87c4

5 files changed

Lines changed: 249 additions & 107 deletions

File tree

scenarios/multi-nodeset/test-operator/automation-vars.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ stages:
9292
documentation: >-
9393
Executes comprehensive OpenStack validation tests using the Tempest framework.
9494
These tests validate API functionality, resource management, and integration
95-
between OpenStack services in the baremetal environment. Includes both the
96-
test execution phase (workflowStep=0) and log collection phase (workflowStep=1)
95+
between OpenStack services. Includes multi-threaded testing (workflowStep=0)
9796
to ensure complete validation results are captured for analysis.
9897
manifest: tempest-tests.yml
9998
wait_conditions:

scenarios/sno-2-bm-ipv6/test-operator/automation-vars.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,8 +374,8 @@ stages:
374374
documentation: >-
375375
Executes comprehensive OpenStack validation tests using the Tempest framework.
376376
These tests validate API functionality, resource management, and integration
377-
between OpenStack services in the baremetal environment. Includes both the
378-
test execution phase (workflowStep=0) and log collection phase (workflowStep=1)
377+
between OpenStack services in the baremetal environment. Includes ironic
378+
scenario testing (workflowStep=0) and ironic API testing (workflowStep=1)
379379
to ensure complete validation results are captured for analysis.
380380
manifest: tempest-tests.yml
381381
wait_conditions:

scenarios/sno-2-bm/test-operator/automation-vars.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,8 +358,8 @@ stages:
358358
documentation: >-
359359
Executes comprehensive OpenStack validation tests using the Tempest framework.
360360
These tests validate API functionality, resource management, and integration
361-
between OpenStack services in the baremetal environment. Includes both the
362-
test execution phase (workflowStep=0) and log collection phase (workflowStep=1)
361+
between OpenStack services in the baremetal environment. Includes ironic
362+
scenario testing (workflowStep=0) and ironic API testing (workflowStep=1)
363363
to ensure complete validation results are captured for analysis.
364364
manifest: tempest-tests.yml
365365
wait_conditions:

scenarios/uni01alpha/test-operator/automation-vars.yml

Lines changed: 149 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
---
22
stages:
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

Comments
 (0)