Skip to content

Commit addde29

Browse files
committed
Parallel KUTTL test support
1 parent 5d3cc12 commit addde29

35 files changed

Lines changed: 69 additions & 153 deletions

test/kuttl/common/create_custom_cert.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function wait_for_state() {
88
local object="$1"
99
local state="$2"
1010
local timeout="$3"
11-
local namespace="${4:-openstack-kuttl-tests}"
11+
local namespace="${4:-${NAMESPACE:-openstack-kuttl-tests}}"
1212

1313
echo "Waiting for '${object}' in namespace '${namespace}' to become '${state}'..."
1414
oc wait --for=${state} --timeout=${timeout} ${object} -n="${namespace}"
@@ -17,7 +17,7 @@ function wait_for_state() {
1717

1818
# Create a self-signed issuer (prerequisite for CA certificate)
1919
function create_selfsigned_issuer() {
20-
local namespace="${1:-openstack-kuttl-tests}"
20+
local namespace="${1:-${NAMESPACE:-openstack-kuttl-tests}}"
2121

2222
echo "Creating self-signed issuer in namespace ${namespace}..."
2323
oc apply -f - << EOF
@@ -43,7 +43,7 @@ EOF
4343
# Usage: create_custom_issuer <issuer-name> <namespace>
4444
function create_custom_issuer() {
4545
local issuer_name="${1:-rootca-custom}"
46-
local namespace="${2:-openstack-kuttl-tests}"
46+
local namespace="${2:-${NAMESPACE:-openstack-kuttl-tests}}"
4747

4848
echo "Creating custom root CA and issuer: ${issuer_name} in namespace ${namespace}..."
4949

@@ -107,7 +107,7 @@ function create_wildcard_certificate() {
107107
local cert_name="${1}"
108108
local domain="${2}"
109109
local issuer_name="${3:-rootca-custom}"
110-
local namespace="${4:-openstack-kuttl-tests}"
110+
local namespace="${4:-${NAMESPACE:-openstack-kuttl-tests}}"
111111

112112
if [[ -z "${cert_name}" ]] || [[ -z "${domain}" ]]; then
113113
echo "Error: cert_name and domain are required"
@@ -157,7 +157,7 @@ EOF
157157
function create_service_route_certificate() {
158158
local service_name="${1}"
159159
local ingress_domain="${2}"
160-
local namespace="${3:-openstack-kuttl-tests}"
160+
local namespace="${3:-${NAMESPACE:-openstack-kuttl-tests}}"
161161
local issuer_name="rootca-ingress-custom"
162162
local cert_name="${service_name}-custom-route-cert"
163163
local route_secret_name="${service_name}-custom-route"
@@ -218,7 +218,7 @@ EOF
218218
# This creates ingress and internal issuers for comprehensive testing
219219
# Usage: setup_custom_certificate_infrastructure <namespace>
220220
function setup_custom_certificate_infrastructure() {
221-
local namespace="${1:-openstack-kuttl-tests}"
221+
local namespace="${1:-${NAMESPACE:-openstack-kuttl-tests}}"
222222

223223
echo "Setting up custom certificate infrastructure in namespace ${namespace}..."
224224

@@ -238,7 +238,7 @@ function setup_custom_certificate_infrastructure() {
238238
# Usage: create_barbican_placement_routes <ingress-domain> <namespace>
239239
function create_barbican_placement_routes() {
240240
local ingress_domain="${1}"
241-
local namespace="${2:-openstack-kuttl-tests}"
241+
local namespace="${2:-${NAMESPACE:-openstack-kuttl-tests}}"
242242

243243
if [[ -z "${ingress_domain}" ]]; then
244244
echo "Error: ingress_domain is required"
@@ -265,7 +265,7 @@ function create_barbican_placement_routes() {
265265
# Cleanup custom certificates and issuers
266266
# Usage: cleanup_custom_certificates <namespace>
267267
function cleanup_custom_certificates() {
268-
local namespace="${1:-openstack-kuttl-tests}"
268+
local namespace="${1:-${NAMESPACE:-openstack-kuttl-tests}}"
269269

270270
echo "Cleaning up custom certificates and issuers in namespace ${namespace}..."
271271

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
#!/bin/bash
22
set -x
33

4+
NS_SUFFIX="${NAMESPACE:+.${NAMESPACE}}"
5+
46
# Check if all services from before are present in after and have valid fingerprints
57
while IFS= read -r before; do
68
eval $(echo "$before" | awk '{print "service_name="$1" fp_before="$2}')
7-
fp_after=$(grep -F "$service_name" /tmp/endpoint_fingerprints_after | awk '{ print $2}')
9+
fp_after=$(grep -F "$service_name" /tmp/endpoint_fingerprints_after${NS_SUFFIX} | awk '{ print $2}')
810

911
echo -n "Endpoint $service_name - "
1012

1113
if [ -z "$fp_after" ]; then
12-
echo "not found in endpoint_fingerprints_after"
14+
echo "not found in endpoint_fingerprints_after${NS_SUFFIX}"
1315
exit 1
1416
fi
1517

@@ -19,6 +21,6 @@ while IFS= read -r before; do
1921
fi
2022

2123
echo "OK cert rotated - before: $fp_before - after: $fp_after"
22-
done < /tmp/endpoint_fingerprints_before
24+
done < /tmp/endpoint_fingerprints_before${NS_SUFFIX}
2325

2426
exit 0

test/kuttl/common/prepare_placement_certs.sh

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ echo "Fetching certificates from placement-custom-route secret and creating Conf
3939

4040
# Get the directory where the script is located
4141
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
42-
# Calculate the path to the kustomize directory
43-
KUSTOMIZE_DIR="${SCRIPT_DIR}/../../../config/samples/tls/custom_route_cert"
44-
CONFIGMAP_FILE="${KUSTOMIZE_DIR}/placement-cert-data.yaml"
42+
# Write to a temp file to avoid parallel workers clobbering a shared repo path.
43+
# The kustomize overlay at config/samples/tls/custom_route_cert references this
44+
# file, but since the parallel runner assigns each test directory to a single
45+
# worker, only one invocation of this test can run at a time.
46+
CONFIGMAP_FILE="/tmp/placement-cert-data-${NAMESPACE}.yaml"
4547

4648
echo "Creating ConfigMap file at: ${CONFIGMAP_FILE}"
4749

@@ -60,8 +62,10 @@ $(oc get secret placement-custom-route -n ${NAMESPACE} -o jsonpath='{.data.tls\.
6062
$(oc get secret placement-custom-route -n ${NAMESPACE} -o jsonpath='{.data.ca\.crt}' | base64 -d | sed 's/^/ /')
6163
EOF
6264

63-
# Also apply it to the cluster for verification
65+
# Copy to the kustomize directory so oc kustomize can find it
66+
KUSTOMIZE_DIR="${SCRIPT_DIR}/../../../config/samples/tls/custom_route_cert"
67+
cp "${CONFIGMAP_FILE}" "${KUSTOMIZE_DIR}/placement-cert-data.yaml"
68+
6469
oc apply -f "${CONFIGMAP_FILE}"
6570

6671
echo "ConfigMap placement-cert-data created at ${CONFIGMAP_FILE} and applied to namespace ${NAMESPACE}"
67-
echo "This file will be used by kustomize as a resource"

test/kuttl/tests/ctlplane-tls-cert-rotation/02-get-endpoints-certs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ kind: TestStep
33
commands:
44
- script: |
55
echo "Get fingerprints of all service certs"
6-
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_before
6+
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_before.${NAMESPACE}

test/kuttl/tests/ctlplane-tls-cert-rotation/04-assert-service-cert-rotation.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ commands:
99
- script: |
1010
echo "Checking endpoint cert rotation..."
1111
for i in $(seq 1 30); do
12-
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_after
13-
if bash ../../common/osp_check_fingerprints.sh 2>/dev/null; then
12+
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_after.${NAMESPACE}
13+
if NAMESPACE=$NAMESPACE bash ../../common/osp_check_fingerprints.sh 2>/dev/null; then
1414
echo "All endpoint certs rotated successfully."
1515
exit 0
1616
fi
1717
echo "Attempt $i/30: Not all certs rotated yet, waiting 20s..."
1818
sleep 20
1919
done
2020
echo "Collecting final fingerprints for failure diagnostics..."
21-
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_after
22-
bash -s < ../../common/osp_check_fingerprints.sh
21+
oc exec -i openstackclient -n $NAMESPACE -- bash -s < ../../common/osp_endpoint_fingerprints.sh > /tmp/endpoint_fingerprints_after.${NAMESPACE}
22+
NAMESPACE=$NAMESPACE bash ../../common/osp_check_fingerprints.sh

test/kuttl/tests/ctlplane-tls-custom-issuers/04-rotate-service-certs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ kind: TestStep
33
commands:
44
- script: |
55
echo "Deleting secrets..."
6-
oc get secret -l service-cert -n $NAMESPACE -o name > /tmp/deleted-secrets.txt
6+
oc get secret -l service-cert -n $NAMESPACE -o name > /tmp/deleted-secrets.${NAMESPACE}.txt
77
oc delete secret -l service-cert -n $NAMESPACE

test/kuttl/tests/ctlplane-tls-custom-issuers/10-rotate-service-certs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ kind: TestStep
33
commands:
44
- script: |
55
echo "Deleting secrets..."
6-
oc get secret -l service-cert -n $NAMESPACE -o name > /tmp/deleted-secrets.txt
6+
oc get secret -l service-cert -n $NAMESPACE -o name > /tmp/deleted-secrets.${NAMESPACE}.txt
77
oc delete secret -l service-cert -n $NAMESPACE

test/kuttl/tests/dataplane-deploy-global-service-test/00-assert.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kind: TestAssert
33
timeout: 600
44
collectors:
55
- type: command
6-
command: oc get OpenStackDataPlaneDeployment -n openstack-kuttl-tests edpm-compute-global -o yaml
6+
command: oc get OpenStackDataPlaneDeployment -n $NAMESPACE edpm-compute-global -o yaml
77
name: edpm-compute-global-deployment
88
- type: command
99
command: oc logs -n openstack-operators -l openstack.org/operator-name=openstack
@@ -13,7 +13,6 @@ apiVersion: dataplane.openstack.org/v1beta1
1313
kind: OpenStackDataPlaneNodeSet
1414
metadata:
1515
name: edpm-compute-global
16-
namespace: openstack-kuttl-tests
1716
spec:
1817
preProvisioned: true
1918
services:

test/kuttl/tests/dataplane-deploy-global-service-test/01-assert.yaml

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kind: TestAssert
33
timeout: 600
44
collectors:
55
- type: command
6-
command: oc get OpenStackDataPlaneDeployment -n openstack-kuttl-tests edpm-compute-global -o yaml
6+
command: oc get OpenStackDataPlaneDeployment -n $NAMESPACE edpm-compute-global -o yaml
77
name: edpm-compute-global-deployment
88
- type: command
99
command: oc logs -n openstack-operators -l openstack.org/operator-name=openstack
@@ -13,7 +13,6 @@ apiVersion: dataplane.openstack.org/v1beta1
1313
kind: OpenStackDataPlaneNodeSet
1414
metadata:
1515
name: edpm-compute-global
16-
namespace: openstack-kuttl-tests
1716
spec:
1817
services:
1918
- download-cache
@@ -80,7 +79,6 @@ metadata:
8079
openstackdataplanenodeset: edpm-compute-global
8180
openstackdataplaneservice: custom-global-service
8281
name: custom-global-service-edpm-compute-global
83-
namespace: openstack-kuttl-tests
8482
ownerReferences:
8583
- apiVersion: dataplane.openstack.org/v1beta1
8684
blockOwnerDeletion: true
@@ -188,7 +186,6 @@ metadata:
188186
openstackdataplanenodeset: edpm-compute-global
189187
openstackdataplaneservice: download-cache
190188
name: download-cache-edpm-compute-global-edpm-compute-global
191-
namespace: openstack-kuttl-tests
192189
ownerReferences:
193190
- apiVersion: dataplane.openstack.org/v1beta1
194191
blockOwnerDeletion: true
@@ -286,7 +283,6 @@ metadata:
286283
openstackdataplanenodeset: edpm-compute-global
287284
openstackdataplaneservice: bootstrap
288285
name: bootstrap-edpm-compute-global-edpm-compute-global
289-
namespace: openstack-kuttl-tests
290286
ownerReferences:
291287
- apiVersion: dataplane.openstack.org/v1beta1
292288
blockOwnerDeletion: true
@@ -390,7 +386,6 @@ metadata:
390386
openstackdataplanenodeset: edpm-compute-global
391387
openstackdataplaneservice: configure-network
392388
name: configure-network-edpm-compute-global-edpm-compute-global
393-
namespace: openstack-kuttl-tests
394389
ownerReferences:
395390
- apiVersion: dataplane.openstack.org/v1beta1
396391
blockOwnerDeletion: true
@@ -488,7 +483,6 @@ metadata:
488483
openstackdataplanenodeset: edpm-compute-global
489484
openstackdataplaneservice: validate-network
490485
name: validate-network-edpm-compute-global-edpm-compute-global
491-
namespace: openstack-kuttl-tests
492486
ownerReferences:
493487
- apiVersion: dataplane.openstack.org/v1beta1
494488
blockOwnerDeletion: true
@@ -586,7 +580,6 @@ metadata:
586580
openstackdataplanenodeset: edpm-compute-global
587581
openstackdataplaneservice: configure-os
588582
name: configure-os-edpm-compute-global-edpm-compute-global
589-
namespace: openstack-kuttl-tests
590583
ownerReferences:
591584
- apiVersion: dataplane.openstack.org/v1beta1
592585
blockOwnerDeletion: true
@@ -684,7 +677,6 @@ metadata:
684677
openstackdataplanenodeset: edpm-compute-global
685678
openstackdataplaneservice: install-certs
686679
name: install-certs-edpm-compute-global-edpm-compute-global
687-
namespace: openstack-kuttl-tests
688680
ownerReferences:
689681
- apiVersion: dataplane.openstack.org/v1beta1
690682
blockOwnerDeletion: true
@@ -831,7 +823,6 @@ metadata:
831823
openstackdataplanenodeset: edpm-compute-global
832824
openstackdataplaneservice: ovn
833825
name: ovn-edpm-compute-global-edpm-compute-global
834-
namespace: openstack-kuttl-tests
835826
ownerReferences:
836827
- apiVersion: dataplane.openstack.org/v1beta1
837828
blockOwnerDeletion: true
@@ -940,7 +931,6 @@ metadata:
940931
openstackdataplanenodeset: edpm-compute-global
941932
openstackdataplaneservice: neutron-metadata
942933
name: neutron-metadata-edpm-compute-global-edpm-compute-global
943-
namespace: openstack-kuttl-tests
944934
ownerReferences:
945935
- apiVersion: dataplane.openstack.org/v1beta1
946936
blockOwnerDeletion: true
@@ -1079,7 +1069,6 @@ metadata:
10791069
openstackdataplanenodeset: edpm-compute-global
10801070
openstackdataplaneservice: neutron-ovn
10811071
name: neutron-ovn-edpm-compute-global-edpm-compute-global
1082-
namespace: openstack-kuttl-tests
10831072
ownerReferences:
10841073
- apiVersion: dataplane.openstack.org/v1beta1
10851074
blockOwnerDeletion: true
@@ -1218,7 +1207,6 @@ metadata:
12181207
openstackdataplanenodeset: edpm-compute-global
12191208
openstackdataplaneservice: neutron-sriov
12201209
name: neutron-sriov-edpm-compute-global-edpm-compute-global
1221-
namespace: openstack-kuttl-tests
12221210
ownerReferences:
12231211
- apiVersion: dataplane.openstack.org/v1beta1
12241212
blockOwnerDeletion: true
@@ -1327,7 +1315,6 @@ metadata:
13271315
openstackdataplanenodeset: edpm-compute-global
13281316
openstackdataplaneservice: neutron-dhcp
13291317
name: neutron-dhcp-edpm-compute-global-edpm-compute-global
1330-
namespace: openstack-kuttl-tests
13311318
ownerReferences:
13321319
- apiVersion: dataplane.openstack.org/v1beta1
13331320
blockOwnerDeletion: true
@@ -1436,7 +1423,6 @@ metadata:
14361423
openstackdataplanenodeset: edpm-compute-global
14371424
openstackdataplaneservice: libvirt
14381425
name: libvirt-edpm-compute-global-edpm-compute-global
1439-
namespace: openstack-kuttl-tests
14401426
ownerReferences:
14411427
- apiVersion: dataplane.openstack.org/v1beta1
14421428
blockOwnerDeletion: true
@@ -1545,7 +1531,6 @@ metadata:
15451531
openstackdataplanenodeset: edpm-compute-global
15461532
openstackdataplaneservice: nova
15471533
name: nova-edpm-compute-global-edpm-compute-global
1548-
namespace: openstack-kuttl-tests
15491534
ownerReferences:
15501535
- apiVersion: dataplane.openstack.org/v1beta1
15511536
blockOwnerDeletion: true

test/kuttl/tests/dataplane-deploy-global-service-test/02-assert.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ apiVersion: dataplane.openstack.org/v1beta1
1010
kind: OpenStackDataPlaneNodeSet
1111
metadata:
1212
name: edpm-compute-beta-nodeset
13-
namespace: openstack-kuttl-tests
1413
spec:
1514
services:
1615
- download-cache
@@ -67,7 +66,6 @@ apiVersion: dataplane.openstack.org/v1beta1
6766
kind: OpenStackDataPlaneDeployment
6867
metadata:
6968
name: edpm-multinodeset
70-
namespace: openstack-kuttl-tests
7169
spec:
7270
nodeSets:
7371
- edpm-compute-global
@@ -81,7 +79,6 @@ metadata:
8179
openstackdataplanenodeset: edpm-compute-beta-nodeset
8280
openstackdataplaneservice: download-cache
8381
name: download-cache-edpm-multinodeset-edpm-compute-beta-nodeset
84-
namespace: openstack-kuttl-tests
8582
ownerReferences:
8683
- apiVersion: dataplane.openstack.org/v1beta1
8784
blockOwnerDeletion: true
@@ -178,7 +175,6 @@ metadata:
178175
openstackdataplanenodeset: edpm-compute-beta-nodeset
179176
openstackdataplaneservice: bootstrap
180177
name: bootstrap-edpm-multinodeset-edpm-compute-beta-nodeset
181-
namespace: openstack-kuttl-tests
182178
ownerReferences:
183179
- apiVersion: dataplane.openstack.org/v1beta1
184180
blockOwnerDeletion: true

0 commit comments

Comments
 (0)