~/src/github.com/openstack-k8s-operators/install_yamls ~/ci-framework-data/artifacts error: the server doesn't have a resource type "openstackversion" bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z openstack-kuttl-tests ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/namespace.yaml namespace/openstack-kuttl-tests created timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io openstack-kuttl-tests); do sleep 1; done" NAME DISPLAY NAME STATUS openstack-kuttl-tests Active oc project openstack-kuttl-tests Now using project "openstack-kuttl-tests" on server "https://api.crc.testing:6443". bash scripts/gen-input-kustomize.sh + OUT=/home/zuul/ci-framework-data/artifacts/manifests + '[' -z openstack-kuttl-tests ']' + '[' -z osp-secret ']' + '[' -z 12345678 ']' + '[' -z 1234567842 ']' + '[' -z 767c3ed056cbaa3b9dfedb8c6f825bf0 ']' + '[' -z sEFmdFjDUqRM2VemYslV5yGNWjokioJXsg8Nrlc3drU= ']' + '[' -z COX8bmlKAWn56XCGMrKQJj7dgHNAOl6f ']' + '[' -z openstack ']' + '[' -z libvirt-secret ']' + DIR=/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input + pushd /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input ~/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input ~/src/github.com/openstack-k8s-operators/install_yamls + cat oc get secret/osp-secret || oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/input | oc apply -f - Error from server (NotFound): secrets "osp-secret" not found secret/libvirt-secret created secret/octavia-ca-passphrase created secret/osp-secret created oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/manila/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/manila/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/manila: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/manila/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists manila;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/heat/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/heat/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/heat: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/heat/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/horizon/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/horizon/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/horizon: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/horizon/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nova/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nova/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nova: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/nova-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nova/cr oc rsh openstack-galera-0 mysql -u root --password=12**********78 -ss -e "show databases like 'nova_%';" | xargs -I '{}' oc rsh openstack-galera-0 mysql -u root --password=12**********78 -ss -e "flush tables; drop database if exists {};" Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra-redis/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra-redis/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra-redis: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator-redis /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra-redis/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/octavia/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/octavia/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/octavia: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/octavia/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists octavia;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/designate/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/designate/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/designate: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/designate/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists designate;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/neutron/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/neutron/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/neutron: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/neutron/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists neutron;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ovn/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ovn/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ovn: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ovn/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ironic/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ironic/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ironic: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/ironic/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists ironic;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists ironic_inspector;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/cinder/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/cinder/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/cinder: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/cinder/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists cinder;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/glance/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/glance/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/glance: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/glance/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists glance;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/placement/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/placement/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/placement: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/placement/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists placement;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/swift/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/swift/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/swift: no such file or directory No resources found rm -Rf -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/swift/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/barbican/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/barbican/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/barbican: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/barbican/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists barbican;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/keystone/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/keystone/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/keystone: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/keystone/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists keystone;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/mariadb/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/mariadb/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/mariadb: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/mariadb/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/telemetry/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/telemetry/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/telemetry: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/telemetry/cr rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ceilometer-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/telemetry/cr oc rsh -t openstack-galera-0 mysql -u root --password=12**********78 -e "flush tables; drop database if exists aodh;" || true Error from server (NotFound): pods "openstack-galera-0" not found oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr if oc get RabbitmqCluster; then oc delete --ignore-not-found=true RabbitmqCluster --all; fi error: the server doesn't have a resource type "RabbitmqCluster" rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/rabbitmq/cr bash scripts/validate-marketplace.sh + '[' -z 500s ']' + OPERATOR_NAMESPACE=openshift-marketplace + oc get pods -n openshift-marketplace + grep CrashLoopBackOff + '[' 1 -eq 0 ']' + OPERATORS='openshift-cert-manager-operator kubernetes-nmstate-operator metallb-operator' + for operator in $OPERATORS + n=0 + retries=20 + true + oc get packagemanifests -n openshift-marketplace + grep openshift-cert-manager-operator openshift-cert-manager-operator Red Hat Operators 134d + '[' 0 -eq 0 ']' + break + for operator in $OPERATORS + n=0 + retries=20 + true + oc get packagemanifests -n openshift-marketplace + grep kubernetes-nmstate-operator kubernetes-nmstate-operator Red Hat Operators 134d + '[' 0 -eq 0 ']' + break + for operator in $OPERATORS + n=0 + retries=20 + true + oc get packagemanifests -n openshift-marketplace + grep metallb-operator metallb-operator Red Hat Operators 134d + '[' 0 -eq 0 ']' + break bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z openshift-nmstate ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/namespace.yaml namespace/openshift-nmstate created timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io openshift-nmstate); do sleep 1; done" NAME DISPLAY NAME STATUS openshift-nmstate Active bash scripts/gen-olm-nmstate.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr + cat + cat + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/nmstate/op operatorgroup.operators.coreos.com/openshift-nmstate-tn6k8 created subscription.operators.coreos.com/kubernetes-nmstate-operator created timeout 500s bash -c "while ! (oc get deployments/nmstate-operator -n openshift-nmstate); do sleep 10; done" Error from server (NotFound): deployments.apps "nmstate-operator" not found Error from server (NotFound): deployments.apps "nmstate-operator" not found NAME READY UP-TO-DATE AVAILABLE AGE nmstate-operator 0/1 1 0 8s oc wait deployments/nmstate-operator -n openshift-nmstate --for condition=Available --timeout=500s deployment.apps/nmstate-operator condition met timeout 500s bash -c "while ! (oc wait pod -n openshift-apiserver -l apiserver=true --for condition=Ready); do sleep 10; done" pod/apiserver-9ddfb9f55-f7gz7 condition met oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openshift-nmstate/nmstate/cr nmstate.nmstate.io/nmstate created timeout 500s bash -c "while ! (oc get pod --no-headers=true -l component=kubernetes-nmstate-handler -n openshift-nmstate| grep nmstate-handler); do sleep 10; done" No resources found in openshift-nmstate namespace. nmstate-handler-6f7qf 0/1 Running 0 10s oc wait pod -n openshift-nmstate -l component=kubernetes-nmstate-handler --for condition=Ready --timeout=500s pod/nmstate-handler-6f7qf condition met timeout 500s bash -c "while ! (oc get deployments/nmstate-webhook -n openshift-nmstate); do sleep 10; done" NAME READY UP-TO-DATE AVAILABLE AGE nmstate-webhook 0/1 1 0 11s oc wait deployments/nmstate-webhook -n openshift-nmstate --for condition=Available --timeout=500s deployment.apps/nmstate-webhook condition met WORKERS='crc' \ bash scripts/gen-nncp.sh + check_var_set DEPLOY_DIR + [[ ! -v DEPLOY_DIR ]] + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr + check_var_set WORKERS + [[ ! -v WORKERS ]] + check_var_set INTERFACE + [[ ! -v INTERFACE ]] + check_var_set BRIDGE_NAME + [[ ! -v BRIDGE_NAME ]] + check_var_set INTERFACE_MTU + [[ ! -v INTERFACE_MTU ]] + check_var_set VLAN_START + [[ ! -v VLAN_START ]] + check_var_set VLAN_STEP + [[ ! -v VLAN_STEP ]] + check_var_set VLAN_STEP + [[ ! -v VLAN_STEP ]] + check_var_set INTERNALAPI_PREFIX + [[ ! -v INTERNALAPI_PREFIX ]] + check_var_set STORAGE_PREFIX + [[ ! -v STORAGE_PREFIX ]] + check_var_set STORAGEMGMT_PREFIX + [[ ! -v STORAGEMGMT_PREFIX ]] + check_var_set TENANT_PREFIX + [[ ! -v TENANT_PREFIX ]] + check_var_set DESIGNATE_PREFIX + [[ ! -v DESIGNATE_PREFIX ]] + check_var_set DESIGNATE_EXT_PREFIX + [[ ! -v DESIGNATE_EXT_PREFIX ]] + '[' -n '' ']' + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr + echo WORKERS crc WORKERS crc + echo INTERFACE enp7s0 INTERFACE enp7s0 + echo BRIDGE_NAME ospbr BRIDGE_NAME ospbr + echo INTERFACE_BGP_1 INTERFACE_BGP_1 + echo INTERFACE_BGP_2 INTERFACE_BGP_2 + echo INTERFACE_MTU 1440 INTERFACE_MTU 1440 + echo VLAN_START 20 VLAN_START 20 + echo VLAN_STEP 1 VLAN_STEP 1 + echo STORAGE_MACVLAN STORAGE_MACVLAN + '[' -n true ']' + echo CTLPLANE_IP_ADDRESS_PREFIX 192.168.122 CTLPLANE_IP_ADDRESS_PREFIX 192.168.122 + echo CTLPLANE_IP_ADDRESS_SUFFIX 10 CTLPLANE_IP_ADDRESS_SUFFIX 10 + '[' -n '' ']' + '[' -n '' ']' + IP_ADDRESS_SUFFIX=5 + IPV6_ADDRESS_SUFFIX=5 + rm --force '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr/*_nncp.yaml' + internalapi_vlan_id=20 + storage_vlan_id=21 + tenant_vlan_id=22 + storagemgmt_vlan_id=23 + octavia_vlan_id=24 + designate_vlan_id=25 + designate_ext_vlan_id=26 + for WORKER in ${WORKERS} + cat + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + '[' -n '' ']' + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + '[' -n '' ']' + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + '[' -n '' ']' + cat + IP_ADDRESS_SUFFIX=6 + IPV6_ADDRESS_SUFFIX=6 + CTLPLANE_IP_ADDRESS_SUFFIX=11 + CTLPLANE_IPV6_ADDRESS_SUFFIX=1 oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/nncp/cr/ nodenetworkconfigurationpolicy.nmstate.io/enp7s0-crc created timeout 240s bash -c "while ! (oc wait nncp -l osp/interface=enp7s0 --for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured); do sleep 10; done" nodenetworkconfigurationpolicy.nmstate.io/enp7s0-crc condition met if test -n "192.168.122.10"; then oc patch dns.operator/default --type merge -p '{"spec":{"upstreamResolvers":{"policy":"Sequential","upstreams":[{"type":"Network","address":"'192.168.122.10'","port":53},{"type":"SystemResolvConf"}]}}}'; fi dns.operator.openshift.io/default patched timeout 240s bash -c "while ! (oc wait dns.operator/default --for condition=available); do sleep 10; done" dns.operator.openshift.io/default condition met bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z metallb-system ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/metallb-system + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/namespace.yaml namespace/metallb-system created timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io metallb-system); do sleep 1; done" NAME DISPLAY NAME STATUS metallb-system Active bash scripts/gen-olm-metallb.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr + echo INTERFACE INTERFACE + cat + cat + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op operatorgroup.operators.coreos.com/metallb-operator created subscription.operators.coreos.com/metallb-operator-sub created timeout 500s bash -c "while ! (oc get pod --no-headers=true -l control-plane=controller-manager -n metallb-system| grep metallb-operator-controller); do sleep 10; done" No resources found in metallb-system namespace. No resources found in metallb-system namespace. metallb-operator-controller-manager-6cdcb85899-x7t65 0/1 ContainerCreating 0 5s oc wait pod -n metallb-system --for condition=Ready -l control-plane=controller-manager --timeout=500s pod/metallb-operator-controller-manager-6cdcb85899-x7t65 condition met timeout 500s bash -c "while ! (oc get pod --no-headers=true -l component=webhook-server -n metallb-system| grep metallb-operator-webhook); do sleep 10; done" metallb-operator-webhook-server-754d499d9c-wvks6 1/1 Running 0 38s oc wait pod -n metallb-system --for condition=Ready -l component=webhook-server --timeout=500s pod/metallb-operator-webhook-server-754d499d9c-wvks6 condition met oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/deploy_operator.yaml metallb.metallb.io/metallb created timeout 500s bash -c "while ! (oc get pod --no-headers=true -l component=speaker -n metallb-system | grep speaker); do sleep 10; done" No resources found in metallb-system namespace. speaker-ccvkx 1/2 Running 0 10s oc wait pod -n metallb-system -l component=speaker --for condition=Ready --timeout=500s pod/speaker-ccvkx condition met make operator_namespace make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' error: the server doesn't have a resource type "openstackversion" bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z cert-manager-operator ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/namespace.yaml namespace/cert-manager-operator created timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io cert-manager-operator); do sleep 1; done" NAME DISPLAY NAME STATUS cert-manager-operator Active oc project cert-manager-operator Now using project "cert-manager-operator" on server "https://api.crc.testing:6443". make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-olm-cert-manager.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op ']' + '[' -z cert-manager-operator ']' + '[' -z stable-v1 ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op + echo OPERATOR_NAMESPACE cert-manager-operator OPERATOR_NAMESPACE cert-manager-operator + echo CHANNEL stable-v1 CHANNEL stable-v1 + cat + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/cert-manager-operator/cert-manager/op operatorgroup.operators.coreos.com/cert-manager-operator-bccwx created subscription.operators.coreos.com/openshift-cert-manager-operator created while ! (oc get pod --no-headers=true -l name=cert-manager-operator -n cert-manager-operator| grep "cert-manager-operator"); do sleep 10; done No resources found in cert-manager-operator namespace. No resources found in cert-manager-operator namespace. cert-manager-operator-controller-manager-7f6f97fb86-nm6kj 1/1 Running 0 8s oc wait pod -n cert-manager-operator --for condition=Ready -l name=cert-manager-operator --timeout=300s pod/cert-manager-operator-controller-manager-7f6f97fb86-nm6kj condition met while ! (oc get pod --no-headers=true -l app=cainjector -n cert-manager | grep "cert-manager-cainjector"); do sleep 10; done No resources found in cert-manager namespace. cert-manager-cainjector-8966b78d4-9lvw8 1/1 Running 0 9s oc wait pod -n cert-manager -l app=cainjector --for condition=Ready --timeout=300s pod/cert-manager-cainjector-8966b78d4-9lvw8 condition met while ! (oc get pod --no-headers=true -l app=webhook -n cert-manager | grep "cert-manager-webhook"); do sleep 10; done cert-manager-webhook-597b96b99b-5xkqn 0/1 Running 0 10s oc wait pod -n cert-manager -l app=webhook --for condition=Ready --timeout=300s pod/cert-manager-webhook-597b96b99b-5xkqn condition met while ! (oc get pod --no-headers=true -l app=cert-manager -n cert-manager | grep "cert-manager"); do sleep 10; done No resources found in cert-manager namespace. cert-manager-759f64656b-g2hjp 1/1 Running 0 7s oc wait pod -n cert-manager -l app=cert-manager --for condition=Ready --timeout=300s pod/cert-manager-759f64656b-g2hjp condition met bash scripts/gen-netatt.sh + check_var_set DEPLOY_DIR + [[ ! -v DEPLOY_DIR ]] + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/netattach/cr ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/netattach/cr + check_var_set INTERFACE + [[ ! -v INTERFACE ]] + check_var_set BRIDGE_NAME + [[ ! -v BRIDGE_NAME ]] + check_var_set VLAN_START + [[ ! -v VLAN_START ]] + check_var_set VLAN_STEP + [[ ! -v VLAN_STEP ]] + '[' -z true ']' + '[' -n true ']' + '[' -n '' ']' + '[' -n true ']' + check_var_set INTERNALAPI_PREFIX + [[ ! -v INTERNALAPI_PREFIX ]] + check_var_set STORAGE_PREFIX + [[ ! -v STORAGE_PREFIX ]] + check_var_set STORAGEMGMT_PREFIX + [[ ! -v STORAGEMGMT_PREFIX ]] + check_var_set TENANT_PREFIX + [[ ! -v TENANT_PREFIX ]] + check_var_set DESIGNATE_PREFIX + [[ ! -v DESIGNATE_PREFIX ]] + check_var_set DESIGNATE_EXT_PREFIX + [[ ! -v DESIGNATE_EXT_PREFIX ]] + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/netattach/cr DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/netattach/cr + echo INTERFACE enp7s0 INTERFACE enp7s0 + echo VLAN_START 20 VLAN_START 20 + echo VLAN_STEP 1 VLAN_STEP 1 + '[' -n true ']' + echo CTLPLANE_IP_ADDRESS_PREFIX 192.168.122 CTLPLANE_IP_ADDRESS_PREFIX 192.168.122 + echo CTLPLANE_IP_ADDRESS_SUFFIX 10 CTLPLANE_IP_ADDRESS_SUFFIX 10 + echo 'INTERNALAPI_PREFIX 172.17.0' INTERNALAPI_PREFIX 172.17.0 + echo 'STORAGE_PREFIX 172.18.0' STORAGE_PREFIX 172.18.0 + echo 'STORAGEMGMT_PREFIX 172.20.0' STORAGEMGMT_PREFIX 172.20.0 + echo 'TENANT_PREFIX 172.19.0' TENANT_PREFIX 172.19.0 + echo 'DESIGNATE_PREFIX 172.28.0' DESIGNATE_PREFIX 172.28.0 + echo 'DESIGNATE_PREFIX 172.50.0' DESIGNATE_PREFIX 172.50.0 + '[' -n '' ']' + cat + '[' -n true ']' + cat + cat + cat + '[' -n true ']' + cat + cat + cat + '[' -n true ']' + cat + cat + cat + '[' -n true ']' + cat + cat + cat + cat + '[' -n true ']' + cat + cat + cat + '[' -n true ']' + cat + cat + cat + cat + '[' -n '' ']' + '[' -n '' ']' oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/netattach/cr/ networkattachmentdefinition.k8s.cni.cncf.io/ctlplane created networkattachmentdefinition.k8s.cni.cncf.io/datacentre created networkattachmentdefinition.k8s.cni.cncf.io/designate created networkattachmentdefinition.k8s.cni.cncf.io/designateext created networkattachmentdefinition.k8s.cni.cncf.io/internalapi created networkattachmentdefinition.k8s.cni.cncf.io/octavia created networkattachmentdefinition.k8s.cni.cncf.io/storage created networkattachmentdefinition.k8s.cni.cncf.io/storagemgmt created networkattachmentdefinition.k8s.cni.cncf.io/tenant created oc delete --ignore-not-found=true -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/ipaddresspools.yaml error: the path "/home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/ipaddresspools.yaml" does not exist make: [Makefile:2542: metallb_config_cleanup] Error 1 (ignored) oc delete --ignore-not-found=true -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/l2advertisement.yaml error: the path "/home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/l2advertisement.yaml" does not exist make: [Makefile:2543: metallb_config_cleanup] Error 1 (ignored) oc delete --ignore-not-found=true -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgppeers.yaml error: the path "/home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgppeers.yaml" does not exist make: [Makefile:2544: metallb_config_cleanup] Error 1 (ignored) oc delete --ignore-not-found=true -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpadvertisement.yaml error: the path "/home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpadvertisement.yaml" does not exist make: [Makefile:2545: metallb_config_cleanup] Error 1 (ignored) oc delete --ignore-not-found=true -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpextras.yaml error: the path "/home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpextras.yaml" does not exist make: [Makefile:2546: metallb_config_cleanup] Error 1 (ignored) rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/ipaddresspools.yaml /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/l2advertisement.yaml /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgppeers.yaml /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpadvertisement.yaml /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/bgpextras.yaml bash scripts/gen-metallb-config.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' + '[' -z enp7s0 ']' + '[' -z ospbr ']' + '[' -z 64999 ']' + '[' -z 64999 ']' + '[' -z 100.65.4.1 ']' + '[' -z 100.64.4.1 ']' + '[' -z 172.30.4.2 ']' + '[' -z true ']' + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr + echo INTERFACE enp7s0 INTERFACE enp7s0 + echo CTLPLANE_METALLB_POOL 192.168.122.80-192.168.122.90 CTLPLANE_METALLB_POOL 192.168.122.80-192.168.122.90 + echo CTLPLANE_METALLB_IPV6_POOL fd00:aaaa::80-fd00:aaaa::90 CTLPLANE_METALLB_IPV6_POOL fd00:aaaa::80-fd00:aaaa::90 + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + '[' -n true ']' + cat + '[' -n '' ']' + cat + cat + cat + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/ipaddresspools.yaml ipaddresspool.metallb.io/ctlplane created ipaddresspool.metallb.io/internalapi created ipaddresspool.metallb.io/storage created ipaddresspool.metallb.io/tenant created ipaddresspool.metallb.io/designateext created oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/l2advertisement.yaml l2advertisement.metallb.io/ctlplane created l2advertisement.metallb.io/internalapi created l2advertisement.metallb.io/storage created l2advertisement.metallb.io/tenant created l2advertisement.metallb.io/designateext created bash scripts/gen-olm.sh + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' -z quay.io/openstack-k8s-operators/openstack-operator-index:latest ']' + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op + OPERATOR_CHANNEL=alpha + OPERATOR_SOURCE=openstack-operator-index + OPERATOR_SOURCE_NAMESPACE=openstack-operators + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op + echo OPERATOR_CHANNEL alpha OPERATOR_CHANNEL alpha + echo OPERATOR_SOURCE openstack-operator-index OPERATOR_SOURCE openstack-operator-index + echo OPERATOR_SOURCE_NAMESPACE openstack-operators OPERATOR_SOURCE_NAMESPACE openstack-operators + cat + cat + cat bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z openstack-operators ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/openstack-operators + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/namespace.yaml Warning: resource namespaces/openstack-operators is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. namespace/openstack-operators configured timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io openstack-operators); do sleep 1; done" NAME DISPLAY NAME STATUS openstack-operators Active oc project openstack-operators Now using project "openstack-operators" on server "https://api.crc.testing:6443". oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op catalogsource.operators.coreos.com/openstack-operator-index created operatorgroup.operators.coreos.com/openstack created subscription.operators.coreos.com/openstack-operator created oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr | oc delete --ignore-not-found=true -f - error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/infra/cr oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr | oc delete --ignore-not-found=true -f - || true error: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack: no such file or directory No resources found rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/openstack/op /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr bash -c "test -d /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator || CHECKOUT_FROM_OPENSTACK_REF=false scripts/clone-operator-repo.sh" Cloning repo: git clone -b main https://github.com/openstack-k8s-operators/openstack-operator.git openstack-operator Cloning into 'openstack-operator'... cp /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/config/samples/core_v1beta1_openstackcontrolplane_galera_network_isolation.yaml /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr bash scripts/gen-service-kustomize.sh +++ dirname scripts/gen-service-kustomize.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only ++ set -e + '[' -z openstack-kuttl-tests ']' + '[' -z OpenStackControlPlane ']' + '[' -z osp-secret ']' + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr ']' + '[' -n '' ']' + REPLACEMENTS= + IMAGE=unused + IMAGE_PATH=containerImage + STORAGE_REQUEST=10G + INTERFACE_MTU=1500 + VLAN_START=20 + VLAN_STEP=1 + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr ']' + pushd /home/zuul/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr ~/ci-framework-data/artifacts/manifests/openstack-kuttl-tests/openstack/cr ~/src/github.com/openstack-k8s-operators/install_yamls + cat + [[ OpenStackControlPlane == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] + [[ '' != '' ]] + IFS=, + read -ra IMAGES + IFS=, + read -ra IMAGE_PATHS + '[' 1 '!=' 1 ']' + (( i=0 )) + (( i < 1 )) + SPEC_PATH=containerImage + SPEC_VALUE=unused + '[' unused '!=' unused ']' + (( i++ )) + (( i < 1 )) + '[' -n '' ']' + '[' OpenStackControlPlane == OpenStackControlPlane ']' + cat + '[' OpenStackControlPlane == Galera ']' + '[' OpenStackControlPlane == NetConfig ']' + '[' -n '' ']' + [[ OpenStackControlPlane == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] + [[ true == \t\r\u\e ]] + cat + [[ OpenStackControlPlane == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] + '[' -z true ']' + cat + '[' -n '' ']' + '[' -z true ']' + '[' -n true ']' + '[' -n '' ']' + '[' -n '' ']' + kustomization_add_resources + echo merge config dir merge config dir ++ find . -type f -name '*.yaml' ++ grep -v kustomization + yamls=./core_v1beta1_openstackcontrolplane_galera_network_isolation.yaml + for y in ${yamls[@]} + kustomize edit add resource ./core_v1beta1_openstackcontrolplane_galera_network_isolation.yaml + popd ~/src/github.com/openstack-k8s-operators/install_yamls # Wait until OLM installs openstack CRDs timeout 500s bash -c "while ! (oc get crd openstacks.operator.openstack.org); do sleep 1; done" Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "openstacks.operator.openstack.org" not found NAME CREATED AT openstacks.operator.openstack.org 2026-03-16T13:20:45Z make openstack_init make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' error: the server doesn't have a resource type "openstackversion" # call make_openstack if it isn't already bash -c '(oc get subscription -n openstack-operators openstack-operator || make openstack) || true' NAME PACKAGE SOURCE CHANNEL openstack-operator openstack-operator openstack-operator-index alpha timeout 500s bash -c 'until $(oc get csv -l operators.coreos.com/openstack-operator.openstack-operators -n openstack-operators | grep -q Succeeded); do sleep 1; done' No resources found in openstack-operators namespace. bash -c 'test -f /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/config/samples/operator_v1beta1_openstack.yaml || make openstack_repo' oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/config/samples/operator_v1beta1_openstack.yaml openstack.operator.openstack.org/openstack created # FIXME: Ugly hack to prevent OpenStack Baremetal operator from crashing when BMO is not installed if ! echo "" | grep -q "baremetalhosts.metal3.io"; then \ curl -o /tmp/bmh_crd.yaml --retry-all-errors --retry 5 --retry-delay 10 https://raw.githubusercontent.com/metal3-io/baremetal-operator/refs/heads/main/config/base/crds/bases/metal3.io_baremetalhosts.yaml; \ oc apply -f /tmp/bmh_crd.yaml; \ rm -f /tmp/bmh_crd.yaml; \ fi % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 65898 100 65898 0 0 431k 0 --:--:-- --:--:-- --:--:-- 434k customresourcedefinition.apiextensions.k8s.io/baremetalhosts.metal3.io created oc wait openstack/openstack -n openstack-operators --for condition=Ready --timeout=500s openstack.operator.openstack.org/openstack condition met timeout 500s bash -c "while ! (oc get services -n openstack-operators | grep -E '^(openstack|openstack-baremetal|infra)-operator-webhook-service' | wc -l | grep -q -e 3); do sleep 5; done" make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make wait make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/operator-wait.sh + TIMEOUT=500s +++ dirname scripts/operator-wait.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq ']' + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq-cluster ']' + DEPL_NAME=openstack-operator-controller-manager ++ oc get -n openstack-operators deployment openstack-operator-controller-manager -o json ++ jq -e .status.availableReplicas + REPLICAS=1 + '[' 1 '!=' 1 ']' + echo Succeeded + exit 0 + rc=0 + popd ~/src/github.com/openstack-k8s-operators/install_yamls + exit 0 make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make wait make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/operator-wait.sh + TIMEOUT=500s +++ dirname scripts/operator-wait.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq ']' + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq-cluster ']' + DEPL_NAME=openstack-operator-controller-manager ++ oc get -n openstack-operators deployment openstack-operator-controller-manager -o json ++ jq -e .status.availableReplicas + REPLICAS=1 + '[' 1 '!=' 1 ']' + echo Succeeded + exit 0 + rc=0 + popd ~/src/github.com/openstack-k8s-operators/install_yamls + exit 0 make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make wait make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/operator-wait.sh + TIMEOUT=500s +++ dirname scripts/operator-wait.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq ']' + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' + '[' -z openstack-operators ']' + '[' -z openstack ']' + '[' openstack = rabbitmq-cluster ']' + DEPL_NAME=openstack-operator-controller-manager ++ oc get -n openstack-operators deployment openstack-operator-controller-manager -o json ++ jq -e .status.availableReplicas + REPLICAS=1 + '[' 1 '!=' 1 ']' + echo Succeeded + exit 0 + rc=0 + popd ~/src/github.com/openstack-k8s-operators/install_yamls + exit 0 make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make openstack_kuttl_run make[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' set -e; \ for test_dir in ctlplane-basic-deployment ctlplane-basic-deployment-with-appcred ctlplane-basic-deployment-with-nicMappings ctlplane-collapsed ctlplane-galera-3replicas ctlplane-nodeselectors ctlplane-staged-deployment ctlplane-tls-cert-rotation ctlplane-tls-custom-issuers ctlplane-tls-custom-route dataplane-create-test dataplane-deploy-global-service-test dataplane-deploy-multiple-secrets dataplane-deploy-no-nodes-test dataplane-deploy-tls-test dataplane-extramounts dataplane-multinode-nodeset-create-test dataplane-service-config dataplane-service-custom-image dataplane-service-failure; do \ oc delete osctlplane --all --namespace openstack-kuttl-tests; \ make crc_storage_cleanup_with_retries; \ make crc_storage_with_retries; \ kubectl-kuttl test --config /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/kuttl-test.yaml /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests --test ${test_dir}; \ done No resources found make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage_cleanup.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/crc-storage + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage created timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Now using project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/cleanup-crc-pv.sh ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $6}' ++ grep Bound No resources found ++ awk '{print $1}' ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers No resources found if oc get sc "local-storage"; then oc delete sc "local-storage"; fi NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer true 5m4s storageclass.storage.k8s.io "local-storage" deleted bash scripts/delete-pv.sh +++ dirname scripts/delete-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage created ++ cat ++ oc apply -f - serviceaccount/crc-storage created ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role created ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding created + PV_NUM=20 + TIMEOUT=500s ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc delete ++ set -ex ++ NODE=crc ++ OPERATION=delete ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/create-pv.sh +++ dirname scripts/create-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get pv -o json ++ jq -r '.items[] | select(.status.phase | test("Released")).metadata.name' + released= ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc create ++ set -ex ++ NODE=crc ++ OPERATION=create ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met bash scripts/gen-crc-pv-kustomize.sh + OUT=/home/zuul/ci-framework-data/artifacts/manifests + '[' -z '"local-storage"' ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc ']' + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/crc + PV_NUM=20 + STORAGE_CAPACITY=10 ++ oc get node -o name -l node-role.kubernetes.io/worker ++ head -c-1 ++ sed -e 's|node/||' ++ tr '\n' ' ' + NODE_NAMES=crc + '[' -z crc ']' + cat + for node in $NODE_NAMES ++ seq -w 20 + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc/storage.yaml storageclass.storage.k8s.io/local-storage created Warning: resource persistentvolumes/local-storage01-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage01-crc configured Warning: resource persistentvolumes/local-storage02-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage02-crc configured Warning: resource persistentvolumes/local-storage03-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage03-crc configured Warning: resource persistentvolumes/local-storage04-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage04-crc configured Warning: resource persistentvolumes/local-storage05-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage05-crc configured Warning: resource persistentvolumes/local-storage06-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage06-crc configured Warning: resource persistentvolumes/local-storage07-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage07-crc configured Warning: resource persistentvolumes/local-storage08-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage08-crc configured Warning: resource persistentvolumes/local-storage09-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage09-crc configured Warning: resource persistentvolumes/local-storage10-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage10-crc configured Warning: resource persistentvolumes/local-storage11-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage11-crc configured Warning: resource persistentvolumes/local-storage12-crc is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically. persistentvolume/local-storage12-crc configured persistentvolume/local-storage13-crc created persistentvolume/local-storage14-crc created persistentvolume/local-storage15-crc created persistentvolume/local-storage16-crc created persistentvolume/local-storage17-crc created persistentvolume/local-storage18-crc created persistentvolume/local-storage19-crc created persistentvolume/local-storage20-crc created persistentvolumeclaim/ansible-ee-logs created make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' 2026/03/16 13:22:26 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests ] === RUN kuttl harness.go:463: starting setup harness.go:255: running tests using configured kubeconfig. harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443 logger.go:42: 13:22:26 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_netconfig.yaml] logger.go:42: 13:22:26 | | netconfig.network.openstack.org/netconfig created logger.go:42: 13:22:26 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_dnsmasq.yaml] logger.go:42: 13:22:27 | | dnsmasq.network.openstack.org/dnsmasq created logger.go:42: 13:22:27 | | running command: [sh -c if [ ! -f ansibleee-ssh-key-id_rsa ]; then ssh-keygen -f ansibleee-ssh-key-id_rsa -N "" -t rsa -b 4096 fi oc create secret generic dataplane-ansible-ssh-private-key-secret \ --save-config \ --dry-run=client \ --from-file=authorized_keys=ansibleee-ssh-key-id_rsa.pub \ --from-file=ssh-privatekey=an**********sa \ --from-file=ssh-publickey=ansibleee-ssh-key-id_rsa.pub \ -n openstack-kuttl-tests \ -o yaml | \ oc apply -f - ] logger.go:42: 13:22:27 | | Generating public/private rsa key pair. logger.go:42: 13:22:27 | | Your identification has been saved in ansibleee-ssh-key-id_rsa logger.go:42: 13:22:27 | | Your public key has been saved in ansibleee-ssh-key-id_rsa.pub logger.go:42: 13:22:27 | | The key fingerprint is: logger.go:42: 13:22:27 | | SHA256:dOaS3eduFIwRmdQzdm5h3DAhZhErn8G9x/tRxOwh9/k zuul@controller logger.go:42: 13:22:27 | | The key's randomart image is: logger.go:42: 13:22:27 | | +---[RSA 4096]----+ logger.go:42: 13:22:27 | | | .OB=o.| logger.go:42: 13:22:27 | | | +++=Bo| logger.go:42: 13:22:27 | | | . + +*oB=| logger.go:42: 13:22:27 | | | . * +.o==*| logger.go:42: 13:22:27 | | | S o + o+*| logger.go:42: 13:22:27 | | | . o..+| logger.go:42: 13:22:27 | | | ..oE| logger.go:42: 13:22:27 | | | .. o| logger.go:42: 13:22:27 | | | .. .| logger.go:42: 13:22:27 | | +----[SHA256]-----+ logger.go:42: 13:22:27 | | secret/dataplane-ansible-ssh-private-key-secret created harness.go:363: running tests harness.go:75: going to run test suite with timeout of 1380 seconds for each step harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests has 20 tests === RUN kuttl/harness === RUN kuttl/harness/ctlplane-basic-deployment === PAUSE kuttl/harness/ctlplane-basic-deployment === RUN kuttl/harness/ctlplane-basic-deployment-with-appcred === PAUSE kuttl/harness/ctlplane-basic-deployment-with-appcred === RUN kuttl/harness/ctlplane-basic-deployment-with-nicMappings === PAUSE kuttl/harness/ctlplane-basic-deployment-with-nicMappings === CONT kuttl/harness/ctlplane-basic-deployment logger.go:42: 13:22:27 | ctlplane-basic-deployment | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:22:27 | ctlplane-basic-deployment/1-deploy-openstack | starting test step 1-deploy-openstack logger.go:42: 13:22:27 | ctlplane-basic-deployment/1-deploy-openstack | running command: [sh -c oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:22:27 | ctlplane-basic-deployment/1-deploy-openstack | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:22:27 | ctlplane-basic-deployment/1-deploy-openstack | Warning: spec.galera.template[openstack-cell1].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:22:27 | ctlplane-basic-deployment/1-deploy-openstack | openstackcontrolplane.core.openstack.org/openstack created logger.go:42: 13:27:17 | ctlplane-basic-deployment/1-deploy-openstack | test step completed 1-deploy-openstack logger.go:42: 13:27:17 | ctlplane-basic-deployment/2-deploy-custom-cacert-secret | starting test step 2-deploy-custom-cacert-secret logger.go:42: 13:27:17 | ctlplane-basic-deployment/2-deploy-custom-cacert-secret | running command: [sh -c oc apply -n $NAMESPACE -f ../../common/custom-ca.yaml ] logger.go:42: 13:27:17 | ctlplane-basic-deployment/2-deploy-custom-cacert-secret | secret/ca-custom-kuttl created logger.go:42: 13:27:17 | ctlplane-basic-deployment/2-deploy-custom-cacert-secret | test step completed 2-deploy-custom-cacert-secret logger.go:42: 13:27:17 | ctlplane-basic-deployment/3-deploy-custom-cacert | starting test step 3-deploy-custom-cacert logger.go:42: 13:27:17 | ctlplane-basic-deployment/3-deploy-custom-cacert | running command: [sh -c oc kustomize ../../../../config/samples/tls/custom_ca | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:27:21 | ctlplane-basic-deployment/3-deploy-custom-cacert | openstackcontrolplane.core.openstack.org/openstack configured logger.go:42: 13:27:21 | ctlplane-basic-deployment/3-deploy-custom-cacert | test step completed 3-deploy-custom-cacert logger.go:42: 13:27:21 | ctlplane-basic-deployment/4- | starting test step 4- logger.go:42: 13:27:21 | ctlplane-basic-deployment/4- | running command: [sh -c echo "Checking ca-custom-kuttl.pem is present in combined-ca-bundle..." CUSTOM_CERT_CONTENT=$(oc get secret ca-custom-kuttl -n $NAMESPACE -o jsonpath="{.data['ca-custom-kuttl\.pem']}" | base64 --decode | tr -d '\n') TLS_BUNDLE_CONTENT=$(oc get secret combined-ca-bundle -n $NAMESPACE -o jsonpath="{.data['tls-ca-bundle\.pem']}" | base64 --decode | tr -d '\n') if [[ "$TLS_BUNDLE_CONTENT" == *"$CUSTOM_CERT_CONTENT"* ]]; then echo "OK" exit 0 else echo "Not present" exit 1 fi ] logger.go:42: 13:27:21 | ctlplane-basic-deployment/4- | Checking ca-custom-kuttl.pem is present in combined-ca-bundle... logger.go:42: 13:27:21 | ctlplane-basic-deployment/4- | OK logger.go:42: 13:27:21 | ctlplane-basic-deployment/4- | test step completed 4- logger.go:42: 13:27:21 | ctlplane-basic-deployment/5-cleanup | starting test step 5-cleanup logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | running command: [sh -c oc delete --ignore-not-found=true -n $NAMESPACE pvc \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE oc delete secret -l ca-cert -n $NAMESPACE ] logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "combined-ca-bundle" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-barbican-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-barbican-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-barbican-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-ceilometer-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-cinder-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-cinder-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-cinder-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-galera-openstack-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-galera-openstack-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-glance-default-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-glance-default-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-glance-default-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-keystone-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-keystone-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-keystone-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-kube-state-metrics-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-memcached-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-neutron-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-neutron-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-neutron-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-neutron-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:23 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-novncproxy-cell1-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-novncproxy-cell1-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-novncproxy-cell1-vencrypt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-nova-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-ovn-metrics" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-ovndbcluster-nb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-ovndbcluster-sb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-ovnnorthd-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-placement-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-placement-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-placement-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-rabbitmq-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-rabbitmq-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-swift-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-swift-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:24 | ctlplane-basic-deployment/5-cleanup | secret "cert-swift-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:30 | ctlplane-basic-deployment/5-cleanup | secret "rootca-internal" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:30 | ctlplane-basic-deployment/5-cleanup | secret "rootca-libvirt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:30 | ctlplane-basic-deployment/5-cleanup | secret "rootca-ovn" deleted from openstack-kuttl-tests namespace logger.go:42: 13:27:30 | ctlplane-basic-deployment/5-cleanup | secret "rootca-public" deleted from openstack-kuttl-tests namespace Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice logger.go:42: 13:28:01 | ctlplane-basic-deployment/5-cleanup | test step completed 5-cleanup logger.go:42: 13:28:01 | ctlplane-basic-deployment | skipping kubernetes event logging === CONT kuttl/harness/ctlplane-basic-deployment-with-nicMappings logger.go:42: 13:28:01 | ctlplane-basic-deployment-with-nicMappings | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:28:01 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | starting test step 1-create-nic-mappings logger.go:42: 13:28:01 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | running command: [sh -c oc apply -n $NAMESPACE -f ../../../../config/samples/nad_datacentre.yaml ] logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | networkattachmentdefinition.k8s.cni.cncf.io/datacentre configured logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | test step completed 1-create-nic-mappings logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | starting test step 2-deploy-openstack logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | running command: [sh -c oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | Warning: spec.galera.template[openstack-cell1].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:28:02 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | openstackcontrolplane.core.openstack.org/openstack created logger.go:42: 13:32:17 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | test step completed 2-deploy-openstack logger.go:42: 13:32:17 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | starting test step 3-add-ovn-nic-mappings logger.go:42: 13:32:17 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | running command: [sh -c oc patch openstackcontrolplane -n $NAMESPACE openstack --type='json' -p='[{ "op": "replace", "path": "/spec/ovn/template/ovnController/nicMappings", "value":{"datacentre":"ospbr"} }]' ] logger.go:42: 13:32:17 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:32:23 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | test step completed 3-add-ovn-nic-mappings logger.go:42: 13:32:23 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | starting test step 4-remove-ovn-nic-mappings logger.go:42: 13:32:23 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c oc patch OpenStackControlPlane -n $NAMESPACE openstack --type='json' -p='[{ "op": "remove", "path": "/spec/ovn/template/ovnController/nicMappings", }]' ] logger.go:42: 13:32:23 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:32:23 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:25 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:26 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:27 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:28 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:30 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:31 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:32 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:33 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:34 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:36 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:37 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:38 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:39 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:40 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:42 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:43 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:44 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:45 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:47 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:48 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:49 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:50 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:51 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:53 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:54 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:55 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:56 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | test step completed 4-remove-ovn-nic-mappings logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | starting test step 5-cleanup logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | running command: [sh -c oc delete --ignore-not-found=true -n $NAMESPACE pvc \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE oc delete secret -l ca-cert -n $NAMESPACE ] logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "combined-ca-bundle" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:58 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ceilometer-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-galera-openstack-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-galera-openstack-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-kube-state-metrics-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-memcached-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-vencrypt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovn-metrics" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovncontroller-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovndbcluster-nb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovndbcluster-sb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovnnorthd-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-rabbitmq-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-rabbitmq-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:32:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:33:05 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-internal" deleted from openstack-kuttl-tests namespace logger.go:42: 13:33:05 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-libvirt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:33:05 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-ovn" deleted from openstack-kuttl-tests namespace logger.go:42: 13:33:05 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-public" deleted from openstack-kuttl-tests namespace logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | test step completed 5-cleanup logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-nicMappings | skipping kubernetes event logging === CONT kuttl/harness/ctlplane-basic-deployment-with-appcred logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | starting test step 1-deploy-openstack logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | running command: [sh -c oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | Warning: spec.galera.template[openstack-cell1].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:33:31 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | openstackcontrolplane.core.openstack.org/openstack created logger.go:42: 13:38:01 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | test step completed 1-deploy-openstack logger.go:42: 13:38:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | starting test step 2-deploy-appcred-config logger.go:42: 13:38:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c oc kustomize ../../../../config/samples/applicationcredentials | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | openstackcontrolplane.core.openstack.org/openstack configured logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:02 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:09 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:10 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:10 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:10 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:10 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:10 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:38:11 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.expirationDays = 730 logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.gracePeriodDays = 364 logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.roles = [admin service] logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.unrestricted = false logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-cinder (full custom overrides) === logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-cinder to be Ready... logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-cinder condition met logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.expirationDays = 10 logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.gracePeriodDays = 5 logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.roles = [admin service] logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.unrestricted = true logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-glance (partial overrides) === logger.go:42: 13:38:12 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-glance to be Ready... logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-glance condition met logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.expirationDays = 180 logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.gracePeriodDays = 60 logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.roles = [admin service] logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.unrestricted = false logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-swift (roles override) === logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-swift to be Ready... logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-swift condition met logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.expirationDays = 730 logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.gracePeriodDays = 364 logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.roles = [service] logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.unrestricted = false logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-neutron (inherits defaults) === logger.go:42: 13:38:13 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-neutron to be Ready... logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-neutron condition met logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.expirationDays = 730 logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.gracePeriodDays = 364 logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.roles = [admin service] logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.unrestricted = false logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-placement (expiration override) === logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-placement to be Ready... logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-placement condition met logger.go:42: 13:38:14 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.expirationDays = 90 logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.gracePeriodDays = 30 logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.roles = [admin service] logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.unrestricted = false logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-nova (multiple roles) === logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-nova to be Ready... logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-nova condition met logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.expirationDays = 730 logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.gracePeriodDays = 364 logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.roles = [admin service member] logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.unrestricted = false logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-ceilometer (telemetry/ceilometer) === logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-ceilometer to be Ready... logger.go:42: 13:38:15 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-ceilometer condition met logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.expirationDays = 45 logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.gracePeriodDays = 20 logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.roles = [service] logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.unrestricted = false logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | All ApplicationCredential CRs validated successfully logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | test step completed 2-deploy-appcred-config logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | starting test step 3-update-appcred-config logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c # Change barbican's expirationDays from the default (730) to 365 oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p \ '{"spec":{"barbican":{"applicationCredential":{"expirationDays":365,"gracePeriodDays":180}}}}' # Change glance's roles from [admin,service] to [service] only oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p \ '{"spec":{"glance":{"applicationCredential":{"roles":["service"]}}}}' ] logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done local role_count role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing ApplicationCredential Spec Propagation" echo "=========================================" echo # ---- ac-barbican: expirationDays 730 -> 365, gracePeriodDays 364 -> 180 ---- echo "=== Verifying expirationDays propagation on ac-barbican ===" wait_ready barbican check_field barbican expirationDays 365 check_field barbican gracePeriodDays 180 echo # ---- ac-glance: roles [admin,service] -> [service] ---- echo "=== Verifying roles propagation on ac-glance ===" wait_ready glance check_roles glance "service" echo echo "All spec changes propagated to existing ApplicationCredential CRs successfully"] logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Testing ApplicationCredential Spec Propagation logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying expirationDays propagation on ac-barbican === logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:16 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:38:17 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ERROR: ac-barbican.expirationDays: expected '365', got '730' logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done local role_count role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing ApplicationCredential Spec Propagation" echo "=========================================" echo # ---- ac-barbican: expirationDays 730 -> 365, gracePeriodDays 364 -> 180 ---- echo "=== Verifying expirationDays propagation on ac-barbican ===" wait_ready barbican check_field barbican expirationDays 365 check_field barbican gracePeriodDays 180 echo # ---- ac-glance: roles [admin,service] -> [service] ---- echo "=== Verifying roles propagation on ac-glance ===" wait_ready glance check_roles glance "service" echo echo "All spec changes propagated to existing ApplicationCredential CRs successfully"] logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Testing ApplicationCredential Spec Propagation logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying expirationDays propagation on ac-barbican === logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-barbican.expirationDays = 365 logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-barbican.gracePeriodDays = 180 logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying roles propagation on ac-glance === logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-glance to be Ready... logger.go:42: 13:38:18 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-glance condition met logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-glance.roles = [service] logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | All spec changes propagated to existing ApplicationCredential CRs successfully logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | test step completed 3-update-appcred-config logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | starting test step 4-disable-appcred-config logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | running command: [sh -c oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p '{"spec":{"applicationCredential":{"enabled":false}}}' ] logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" SERVICES=(barbican cinder glance swift neutron placement nova ceilometer) wait_deleted() { local kind=$1 name=$2 timeout=${3:-180} echo "Waiting for $kind/$name to be deleted..." local end=$((SECONDS + timeout)) while [ $SECONDS -lt $end ]; do if ! oc get "$kind" "$name" -n "$NS" &>/dev/null; then echo "✓ $kind/$name deleted" return 0 fi sleep 5 done echo "ERROR: $kind/$name still exists after ${timeout}s" exit 1 } echo "=========================================" echo "Testing Application Credential Cleanup" echo "=========================================" echo echo "=== Verifying global ApplicationCredential is disabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "false" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'false', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = false" echo echo "=== Verifying AC CRs are deleted ===" for svc in "${SERVICES[@]}"; do wait_deleted appcred "ac-$svc" 180 done echo echo "=== Verifying AC Secrets are cleaned up ===" for svc in "${SERVICES[@]}"; do wait_deleted secret "ac-$svc-secret" 120 done echo echo "All ApplicationCredential CRs and Secrets cleaned up successfully"] logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ========================================= logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Testing Application Credential Cleanup logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ========================================= logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying global ApplicationCredential is disabled === logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = false logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying AC CRs are deleted === logger.go:42: 13:38:19 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-barbican to be deleted... logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-barbican deleted logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-cinder to be deleted... logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-cinder deleted logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-glance to be deleted... logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-glance deleted logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-swift to be deleted... logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-swift deleted logger.go:42: 13:38:24 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-neutron to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-neutron deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-placement to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-placement deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-nova to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-nova deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-ceilometer to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-ceilometer deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying AC Secrets are cleaned up === logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-barbican-secret to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-barbican-secret deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-cinder-secret to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-cinder-secret deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-glance-secret to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-glance-secret deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-swift-secret to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-swift-secret deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-neutron-secret to be deleted... logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-neutron-secret deleted logger.go:42: 13:38:25 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-placement-secret to be deleted... logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-placement-secret deleted logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-nova-secret to be deleted... logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-nova-secret deleted logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-ceilometer-secret to be deleted... logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-ceilometer-secret deleted logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | All ApplicationCredential CRs and Secrets cleaned up successfully logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | test step completed 4-disable-appcred-config logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | starting test step 5-cleanup logger.go:42: 13:38:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | running command: [sh -c oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE oc delete secret -l ca-cert -n $NAMESPACE ] logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "combined-ca-bundle" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ceilometer-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-galera-openstack-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-galera-openstack-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-kube-state-metrics-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-memcached-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-vencrypt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovn-metrics" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovndbcluster-nb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovndbcluster-sb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovnnorthd-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-rabbitmq-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:27 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-rabbitmq-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:28 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:28 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:28 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:33 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-internal" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:33 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-libvirt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:33 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-ovn" deleted from openstack-kuttl-tests namespace logger.go:42: 13:38:33 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-public" deleted from openstack-kuttl-tests namespace logger.go:42: 13:39:01 | ctlplane-basic-deployment-with-appcred/5-cleanup | test step completed 5-cleanup logger.go:42: 13:39:01 | ctlplane-basic-deployment-with-appcred | skipping kubernetes event logging === NAME kuttl harness.go:406: run tests finished harness.go:514: cleaning up harness.go:571: removing temp folder: "" --- PASS: kuttl (994.83s) --- PASS: kuttl/harness (0.00s) --- PASS: kuttl/harness/ctlplane-basic-deployment (334.64s) --- PASS: kuttl/harness/ctlplane-basic-deployment-with-nicMappings (329.77s) --- PASS: kuttl/harness/ctlplane-basic-deployment-with-appcred (329.38s) PASS No resources found make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage_cleanup.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/cleanup-crc-pv.sh ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $6}' ++ grep Bound + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-galera-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-cell1-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-cell1-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-cell1-galera-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 2 + NAME=swift-swift-storage-0 + oc delete -n openstack-kuttl-tests pvc/swift-swift-storage-0 --ignore-not-found persistentvolumeclaim "swift-swift-storage-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 2 + NAME=glance-glance-default-external-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-external-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-external-api-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ cut -d / -f 2 ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 + NAME=glance-glance-default-internal-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-internal-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-internal-api-0" deleted from openstack-kuttl-tests namespace ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $1}' + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage01-crc persistentvolume "local-storage01-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage02-crc persistentvolume "local-storage02-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage03-crc persistentvolume "local-storage03-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage04-crc persistentvolume "local-storage04-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage05-crc persistentvolume "local-storage05-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage06-crc persistentvolume "local-storage06-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage07-crc persistentvolume "local-storage07-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage08-crc persistentvolume "local-storage08-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage09-crc persistentvolume "local-storage09-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage10-crc persistentvolume "local-storage10-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage11-crc persistentvolume "local-storage11-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage12-crc persistentvolume "local-storage12-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage13-crc persistentvolume "local-storage13-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage14-crc persistentvolume "local-storage14-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage15-crc persistentvolume "local-storage15-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage16-crc persistentvolume "local-storage16-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage17-crc persistentvolume "local-storage17-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage18-crc persistentvolume "local-storage18-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage19-crc persistentvolume "local-storage19-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage20-crc persistentvolume "local-storage20-crc" deleted if oc get sc "local-storage"; then oc delete sc "local-storage"; fi NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer true 16m storageclass.storage.k8s.io "local-storage" deleted bash scripts/delete-pv.sh +++ dirname scripts/delete-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc delete ++ set -ex ++ NODE=crc ++ OPERATION=delete ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/create-pv.sh +++ dirname scripts/create-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get pv -o json ++ jq -r '.items[] | select(.status.phase | test("Released")).metadata.name' + released= ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc create ++ set -ex ++ NODE=crc ++ OPERATION=create ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met bash scripts/gen-crc-pv-kustomize.sh + OUT=/home/zuul/ci-framework-data/artifacts/manifests + '[' -z '"local-storage"' ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc ']' + PV_NUM=20 + STORAGE_CAPACITY=10 ++ oc get node -o name -l node-role.kubernetes.io/worker ++ head -c-1 ++ sed -e 's|node/||' ++ tr '\n' ' ' + NODE_NAMES=crc + '[' -z crc ']' + cat + for node in $NODE_NAMES ++ seq -w 20 + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc/storage.yaml storageclass.storage.k8s.io/local-storage created persistentvolume/local-storage01-crc created persistentvolume/local-storage02-crc created persistentvolume/local-storage03-crc created persistentvolume/local-storage04-crc created persistentvolume/local-storage05-crc created persistentvolume/local-storage06-crc created persistentvolume/local-storage07-crc created persistentvolume/local-storage08-crc created persistentvolume/local-storage09-crc created persistentvolume/local-storage10-crc created persistentvolume/local-storage11-crc created persistentvolume/local-storage12-crc created persistentvolume/local-storage13-crc created persistentvolume/local-storage14-crc created persistentvolume/local-storage15-crc created persistentvolume/local-storage16-crc created persistentvolume/local-storage17-crc created persistentvolume/local-storage18-crc created persistentvolume/local-storage19-crc created persistentvolume/local-storage20-crc created persistentvolumeclaim/ansible-ee-logs unchanged make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' 2026/03/16 13:39:20 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests ] === RUN kuttl harness.go:463: starting setup harness.go:255: running tests using configured kubeconfig. harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443 logger.go:42: 13:39:20 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_netconfig.yaml] logger.go:42: 13:39:20 | | netconfig.network.openstack.org/netconfig configured logger.go:42: 13:39:20 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_dnsmasq.yaml] logger.go:42: 13:39:21 | | dnsmasq.network.openstack.org/dnsmasq configured logger.go:42: 13:39:21 | | running command: [sh -c if [ ! -f ansibleee-ssh-key-id_rsa ]; then ssh-keygen -f ansibleee-ssh-key-id_rsa -N "" -t rsa -b 4096 fi oc create secret generic dataplane-ansible-ssh-private-key-secret \ --save-config \ --dry-run=client \ --from-file=authorized_keys=ansibleee-ssh-key-id_rsa.pub \ --from-file=ssh-privatekey=an**********sa \ --from-file=ssh-publickey=ansibleee-ssh-key-id_rsa.pub \ -n openstack-kuttl-tests \ -o yaml | \ oc apply -f - ] logger.go:42: 13:39:21 | | secret/dataplane-ansible-ssh-private-key-secret unchanged harness.go:363: running tests harness.go:75: going to run test suite with timeout of 1380 seconds for each step harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests has 20 tests === RUN kuttl/harness === RUN kuttl/harness/ctlplane-basic-deployment-with-appcred === PAUSE kuttl/harness/ctlplane-basic-deployment-with-appcred === CONT kuttl/harness/ctlplane-basic-deployment-with-appcred logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | starting test step 1-deploy-openstack logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | running command: [sh -c oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | Warning: spec.galera.template[openstack-cell1].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:39:21 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | openstackcontrolplane.core.openstack.org/openstack created logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/1-deploy-openstack | test step completed 1-deploy-openstack logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | starting test step 2-deploy-appcred-config logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c oc kustomize ../../../../config/samples/applicationcredentials | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | openstackcontrolplane.core.openstack.org/openstack configured logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:52 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:53 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:54 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:55 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:56 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:57 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:43:58 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:43:59 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:44:00 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:44:00 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:00 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:44:00 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:44:00 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-barbican" not found logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') # Check each expected role is present for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done # Check role count matches local role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing Application Credential CRs" echo "=========================================" echo echo "=== Checking global ApplicationCredential is enabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "true" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'true', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = true" echo # ---- ac-barbican ---- # Pure defaults: expirationDays=730, gracePeriodDays=364, roles=[admin,service], unrestricted=false echo "=== Testing ac-barbican (pure defaults) ===" wait_ready barbican check_field barbican expirationDays 730 check_field barbican gracePeriodDays 364 check_roles barbican "admin" "service" check_field barbican unrestricted "false" echo # ---- ac-cinder ---- # Full custom overrides echo "=== Testing ac-cinder (full custom overrides) ===" wait_ready cinder check_field cinder expirationDays 10 check_field cinder gracePeriodDays 5 check_roles cinder "admin" "service" check_field cinder unrestricted "true" echo # ---- ac-glance ---- # Partial overrides (expiration values only) echo "=== Testing ac-glance (partial overrides) ===" wait_ready glance check_field glance expirationDays 180 check_field glance gracePeriodDays 60 check_roles glance "admin" "service" check_field glance unrestricted "false" echo # ---- ac-swift ---- # Role override only echo "=== Testing ac-swift (roles override) ===" wait_ready swift check_field swift expirationDays 730 check_field swift gracePeriodDays 364 check_roles swift "service" check_field swift unrestricted "false" echo # ---- ac-neutron ---- # Inherits all defaults echo "=== Testing ac-neutron (inherits defaults) ===" wait_ready neutron check_field neutron expirationDays 730 check_field neutron gracePeriodDays 364 check_roles neutron "admin" "service" check_field neutron unrestricted "false" echo # ---- ac-placement ---- # Custom expiration only echo "=== Testing ac-placement (expiration override) ===" wait_ready placement check_field placement expirationDays 90 check_field placement gracePeriodDays 30 check_roles placement "admin" "service" check_field placement unrestricted "false" echo # ---- ac-nova ---- # Multiple roles echo "=== Testing ac-nova (multiple roles) ===" wait_ready nova check_field nova expirationDays 730 check_field nova gracePeriodDays 364 check_roles nova "admin" "service" "member" check_field nova unrestricted "false" echo # ---- ac-ceilometer ---- # Telemetry/Ceilometer component (enabled by default in base sample) echo "=== Testing ac-ceilometer (telemetry/ceilometer) ===" wait_ready ceilometer check_field ceilometer expirationDays 45 check_field ceilometer gracePeriodDays 20 check_roles ceilometer "service" check_field ceilometer unrestricted "false" echo echo "All ApplicationCredential CRs validated successfully"] logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Testing Application Credential CRs logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ========================================= logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Checking global ApplicationCredential is enabled === logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = true logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-barbican (pure defaults) === logger.go:42: 13:44:01 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:44:03 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.expirationDays = 730 logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.gracePeriodDays = 364 logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.roles = [admin service] logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-barbican.unrestricted = false logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-cinder (full custom overrides) === logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-cinder to be Ready... logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-cinder condition met logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.expirationDays = 10 logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.gracePeriodDays = 5 logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.roles = [admin service] logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-cinder.unrestricted = true logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-glance (partial overrides) === logger.go:42: 13:44:04 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-glance to be Ready... logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-glance condition met logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.expirationDays = 180 logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.gracePeriodDays = 60 logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.roles = [admin service] logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-glance.unrestricted = false logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-swift (roles override) === logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-swift to be Ready... logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-swift condition met logger.go:42: 13:44:05 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.expirationDays = 730 logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.gracePeriodDays = 364 logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.roles = [service] logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-swift.unrestricted = false logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-neutron (inherits defaults) === logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-neutron to be Ready... logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-neutron condition met logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.expirationDays = 730 logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.gracePeriodDays = 364 logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.roles = [admin service] logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-neutron.unrestricted = false logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-placement (expiration override) === logger.go:42: 13:44:06 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-placement to be Ready... logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-placement condition met logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.expirationDays = 90 logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.gracePeriodDays = 30 logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.roles = [admin service] logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-placement.unrestricted = false logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-nova (multiple roles) === logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-nova to be Ready... logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-nova condition met logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.expirationDays = 730 logger.go:42: 13:44:07 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.gracePeriodDays = 364 logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.roles = [admin service member] logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-nova.unrestricted = false logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | === Testing ac-ceilometer (telemetry/ceilometer) === logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | Waiting for appcred/ac-ceilometer to be Ready... logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-ceilometer condition met logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.expirationDays = 45 logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.gracePeriodDays = 20 logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.roles = [service] logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | ✓ ac-ceilometer.unrestricted = false logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | All ApplicationCredential CRs validated successfully logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/2-deploy-appcred-config | test step completed 2-deploy-appcred-config logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | starting test step 3-update-appcred-config logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c # Change barbican's expirationDays from the default (730) to 365 oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p \ '{"spec":{"barbican":{"applicationCredential":{"expirationDays":365,"gracePeriodDays":180}}}}' # Change glance's roles from [admin,service] to [service] only oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p \ '{"spec":{"glance":{"applicationCredential":{"roles":["service"]}}}}' ] logger.go:42: 13:44:08 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done local role_count role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing ApplicationCredential Spec Propagation" echo "=========================================" echo # ---- ac-barbican: expirationDays 730 -> 365, gracePeriodDays 364 -> 180 ---- echo "=== Verifying expirationDays propagation on ac-barbican ===" wait_ready barbican check_field barbican expirationDays 365 check_field barbican gracePeriodDays 180 echo # ---- ac-glance: roles [admin,service] -> [service] ---- echo "=== Verifying roles propagation on ac-glance ===" wait_ready glance check_roles glance "service" echo echo "All spec changes propagated to existing ApplicationCredential CRs successfully"] logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Testing ApplicationCredential Spec Propagation logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying expirationDays propagation on ac-barbican === logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:44:09 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ERROR: ac-barbican.expirationDays: expected '365', got '730' logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" wait_ready() { echo "Waiting for appcred/ac-$1 to be Ready..." oc wait appcred/ac-$1 -n "$NS" --for=condition=Ready --timeout=180s } check_field() { local name=$1 field=$2 expected=$3 local actual actual=$(oc get appcred ac-$name -n "$NS" -o jsonpath="{.spec.$field}" 2>/dev/null || echo "") if [ "$actual" != "$expected" ]; then echo "ERROR: ac-$name.$field: expected '$expected', got '$actual'" exit 1 fi echo "✓ ac-$name.$field = $expected" } check_roles() { local name=$1 shift local expected_roles=("$@") local roles roles=$(oc get appcred ac-$name -n "$NS" -o jsonpath='{.spec.roles[*]}') for role in "${expected_roles[@]}"; do if [[ ! " $roles " =~ " $role " ]]; then echo "ERROR: ac-$name: Role '$role' not found. Got: $roles" exit 1 fi done local role_count role_count=$(echo "$roles" | wc -w) if [ "$role_count" -ne "${#expected_roles[@]}" ]; then echo "ERROR: ac-$name: Expected ${#expected_roles[@]} roles, got $role_count: $roles" exit 1 fi echo "✓ ac-$name.roles = [${expected_roles[*]}]" } echo "=========================================" echo "Testing ApplicationCredential Spec Propagation" echo "=========================================" echo # ---- ac-barbican: expirationDays 730 -> 365, gracePeriodDays 364 -> 180 ---- echo "=== Verifying expirationDays propagation on ac-barbican ===" wait_ready barbican check_field barbican expirationDays 365 check_field barbican gracePeriodDays 180 echo # ---- ac-glance: roles [admin,service] -> [service] ---- echo "=== Verifying roles propagation on ac-glance ===" wait_ready glance check_roles glance "service" echo echo "All spec changes propagated to existing ApplicationCredential CRs successfully"] logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Testing ApplicationCredential Spec Propagation logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ========================================= logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying expirationDays propagation on ac-barbican === logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-barbican to be Ready... logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-barbican condition met logger.go:42: 13:44:10 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-barbican.expirationDays = 365 logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-barbican.gracePeriodDays = 180 logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | === Verifying roles propagation on ac-glance === logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | Waiting for appcred/ac-glance to be Ready... logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | keystoneapplicationcredential.keystone.openstack.org/ac-glance condition met logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | ✓ ac-glance.roles = [service] logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | All spec changes propagated to existing ApplicationCredential CRs successfully logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/3-update-appcred-config | test step completed 3-update-appcred-config logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | starting test step 4-disable-appcred-config logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | running command: [sh -c oc patch openstackcontrolplane openstack -n $NAMESPACE --type merge -p '{"spec":{"applicationCredential":{"enabled":false}}}' ] logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | running command: [sh -c set -euo pipefail NS="${NAMESPACE}" SERVICES=(barbican cinder glance swift neutron placement nova ceilometer) wait_deleted() { local kind=$1 name=$2 timeout=${3:-180} echo "Waiting for $kind/$name to be deleted..." local end=$((SECONDS + timeout)) while [ $SECONDS -lt $end ]; do if ! oc get "$kind" "$name" -n "$NS" &>/dev/null; then echo "✓ $kind/$name deleted" return 0 fi sleep 5 done echo "ERROR: $kind/$name still exists after ${timeout}s" exit 1 } echo "=========================================" echo "Testing Application Credential Cleanup" echo "=========================================" echo echo "=== Verifying global ApplicationCredential is disabled ===" global_enabled=$(oc get openstackcontrolplane openstack -n "$NS" -o jsonpath='{.spec.applicationCredential.enabled}') if [ "$global_enabled" != "false" ]; then echo "ERROR: OpenStackControlPlane.spec.applicationCredential.enabled expected 'false', got '$global_enabled'" exit 1 fi echo "✓ OpenStackControlPlane.spec.applicationCredential.enabled = false" echo echo "=== Verifying AC CRs are deleted ===" for svc in "${SERVICES[@]}"; do wait_deleted appcred "ac-$svc" 180 done echo echo "=== Verifying AC Secrets are cleaned up ===" for svc in "${SERVICES[@]}"; do wait_deleted secret "ac-$svc-secret" 120 done echo echo "All ApplicationCredential CRs and Secrets cleaned up successfully"] logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ========================================= logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Testing Application Credential Cleanup logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ========================================= logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying global ApplicationCredential is disabled === logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ OpenStackControlPlane.spec.applicationCredential.enabled = false logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying AC CRs are deleted === logger.go:42: 13:44:11 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-barbican to be deleted... logger.go:42: 13:44:16 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-barbican deleted logger.go:42: 13:44:16 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-cinder to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-cinder deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-glance to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-glance deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-swift to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-swift deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-neutron to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-neutron deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-placement to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-placement deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-nova to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-nova deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for appcred/ac-ceilometer to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ appcred/ac-ceilometer deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | === Verifying AC Secrets are cleaned up === logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-barbican-secret to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-barbican-secret deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-cinder-secret to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-cinder-secret deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-glance-secret to be deleted... logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-glance-secret deleted logger.go:42: 13:44:17 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-swift-secret to be deleted... logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-swift-secret deleted logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-neutron-secret to be deleted... logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-neutron-secret deleted logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-placement-secret to be deleted... logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-placement-secret deleted logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-nova-secret to be deleted... logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-nova-secret deleted logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | Waiting for secret/ac-ceilometer-secret to be deleted... logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | ✓ secret/ac-ceilometer-secret deleted logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | All ApplicationCredential CRs and Secrets cleaned up successfully logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/4-disable-appcred-config | test step completed 4-disable-appcred-config logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/5-cleanup | starting test step 5-cleanup logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/5-cleanup | running command: [sh -c oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE oc delete secret -l ca-cert -n $NAMESPACE ] logger.go:42: 13:44:18 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "combined-ca-bundle" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-barbican-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ceilometer-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-cinder-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-galera-openstack-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-galera-openstack-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-glance-default-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-keystone-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-kube-state-metrics-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-memcached-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-neutron-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-novncproxy-cell1-vencrypt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-nova-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovn-metrics" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovndbcluster-nb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:19 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovndbcluster-sb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-ovnnorthd-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-placement-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-rabbitmq-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-rabbitmq-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:20 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "cert-swift-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-internal" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-libvirt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-ovn" deleted from openstack-kuttl-tests namespace logger.go:42: 13:44:26 | ctlplane-basic-deployment-with-appcred/5-cleanup | secret "rootca-public" deleted from openstack-kuttl-tests namespace Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice logger.go:42: 13:44:51 | ctlplane-basic-deployment-with-appcred/5-cleanup | test step completed 5-cleanup logger.go:42: 13:44:51 | ctlplane-basic-deployment-with-appcred | skipping kubernetes event logging === NAME kuttl harness.go:406: run tests finished harness.go:514: cleaning up harness.go:571: removing temp folder: "" --- PASS: kuttl (331.69s) --- PASS: kuttl/harness (0.00s) --- PASS: kuttl/harness/ctlplane-basic-deployment-with-appcred (330.33s) PASS No resources found make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage_cleanup.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/cleanup-crc-pv.sh ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $6}' ++ grep Bound + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 2 + NAME=swift-swift-storage-0 + oc delete -n openstack-kuttl-tests pvc/swift-swift-storage-0 --ignore-not-found persistentvolumeclaim "swift-swift-storage-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-cell1-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-cell1-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-cell1-galera-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 ++ cut -d / -f 2 + NAME=glance-glance-default-internal-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-internal-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-internal-api-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 2 + NAME=glance-glance-default-external-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-external-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-external-api-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-galera-0" deleted from openstack-kuttl-tests namespace ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $1}' + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage01-crc persistentvolume "local-storage01-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage02-crc persistentvolume "local-storage02-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage03-crc persistentvolume "local-storage03-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage04-crc persistentvolume "local-storage04-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage05-crc persistentvolume "local-storage05-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage06-crc persistentvolume "local-storage06-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage07-crc persistentvolume "local-storage07-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage08-crc persistentvolume "local-storage08-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage09-crc persistentvolume "local-storage09-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage10-crc persistentvolume "local-storage10-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage11-crc persistentvolume "local-storage11-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage12-crc persistentvolume "local-storage12-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage13-crc persistentvolume "local-storage13-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage14-crc persistentvolume "local-storage14-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage15-crc persistentvolume "local-storage15-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage16-crc persistentvolume "local-storage16-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage17-crc persistentvolume "local-storage17-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage18-crc persistentvolume "local-storage18-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage19-crc persistentvolume "local-storage19-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage20-crc persistentvolume "local-storage20-crc" deleted if oc get sc "local-storage"; then oc delete sc "local-storage"; fi NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer true 5m39s storageclass.storage.k8s.io "local-storage" deleted bash scripts/delete-pv.sh +++ dirname scripts/delete-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc delete ++ set -ex ++ NODE=crc ++ OPERATION=delete ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/create-pv.sh +++ dirname scripts/create-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get pv -o json ++ jq -r '.items[] | select(.status.phase | test("Released")).metadata.name' + released= ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc create ++ set -ex ++ NODE=crc ++ OPERATION=create ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met bash scripts/gen-crc-pv-kustomize.sh + OUT=/home/zuul/ci-framework-data/artifacts/manifests + '[' -z '"local-storage"' ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc ']' + PV_NUM=20 + STORAGE_CAPACITY=10 ++ oc get node -o name -l node-role.kubernetes.io/worker ++ head -c-1 ++ sed -e 's|node/||' ++ tr '\n' ' ' + NODE_NAMES=crc + '[' -z crc ']' + cat + for node in $NODE_NAMES ++ seq -w 20 + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc/storage.yaml storageclass.storage.k8s.io/local-storage created persistentvolume/local-storage01-crc created persistentvolume/local-storage02-crc created persistentvolume/local-storage03-crc created persistentvolume/local-storage04-crc created persistentvolume/local-storage05-crc created persistentvolume/local-storage06-crc created persistentvolume/local-storage07-crc created persistentvolume/local-storage08-crc created persistentvolume/local-storage09-crc created persistentvolume/local-storage10-crc created persistentvolume/local-storage11-crc created persistentvolume/local-storage12-crc created persistentvolume/local-storage13-crc created persistentvolume/local-storage14-crc created persistentvolume/local-storage15-crc created persistentvolume/local-storage16-crc created persistentvolume/local-storage17-crc created persistentvolume/local-storage18-crc created persistentvolume/local-storage19-crc created persistentvolume/local-storage20-crc created persistentvolumeclaim/ansible-ee-logs unchanged make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' 2026/03/16 13:45:10 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests ] === RUN kuttl harness.go:463: starting setup harness.go:255: running tests using configured kubeconfig. harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443 logger.go:42: 13:45:10 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_netconfig.yaml] logger.go:42: 13:45:11 | | netconfig.network.openstack.org/netconfig configured logger.go:42: 13:45:11 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_dnsmasq.yaml] logger.go:42: 13:45:11 | | dnsmasq.network.openstack.org/dnsmasq configured logger.go:42: 13:45:11 | | running command: [sh -c if [ ! -f ansibleee-ssh-key-id_rsa ]; then ssh-keygen -f ansibleee-ssh-key-id_rsa -N "" -t rsa -b 4096 fi oc create secret generic dataplane-ansible-ssh-private-key-secret \ --save-config \ --dry-run=client \ --from-file=authorized_keys=ansibleee-ssh-key-id_rsa.pub \ --from-file=ssh-privatekey=an**********sa \ --from-file=ssh-publickey=ansibleee-ssh-key-id_rsa.pub \ -n openstack-kuttl-tests \ -o yaml | \ oc apply -f - ] logger.go:42: 13:45:12 | | secret/dataplane-ansible-ssh-private-key-secret unchanged harness.go:363: running tests harness.go:75: going to run test suite with timeout of 1380 seconds for each step harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests has 20 tests === RUN kuttl/harness === RUN kuttl/harness/ctlplane-basic-deployment-with-nicMappings === PAUSE kuttl/harness/ctlplane-basic-deployment-with-nicMappings === CONT kuttl/harness/ctlplane-basic-deployment-with-nicMappings logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | starting test step 1-create-nic-mappings logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | running command: [sh -c oc apply -n $NAMESPACE -f ../../../../config/samples/nad_datacentre.yaml ] logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | networkattachmentdefinition.k8s.cni.cncf.io/datacentre unchanged logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/1-create-nic-mappings | test step completed 1-create-nic-mappings logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | starting test step 2-deploy-openstack logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | running command: [sh -c oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f - ] logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | Warning: spec.galera.template[openstack-cell1].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:45:12 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | openstackcontrolplane.core.openstack.org/openstack created logger.go:42: 13:49:50 | ctlplane-basic-deployment-with-nicMappings/2-deploy-openstack | test step completed 2-deploy-openstack logger.go:42: 13:49:50 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | starting test step 3-add-ovn-nic-mappings logger.go:42: 13:49:50 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | running command: [sh -c oc patch openstackcontrolplane -n $NAMESPACE openstack --type='json' -p='[{ "op": "replace", "path": "/spec/ovn/template/ovnController/nicMappings", "value":{"datacentre":"ospbr"} }]' ] logger.go:42: 13:49:50 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:49:55 | ctlplane-basic-deployment-with-nicMappings/3-add-ovn-nic-mappings | test step completed 3-add-ovn-nic-mappings logger.go:42: 13:49:55 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | starting test step 4-remove-ovn-nic-mappings logger.go:42: 13:49:55 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c oc patch OpenStackControlPlane -n $NAMESPACE openstack --type='json' -p='[{ "op": "remove", "path": "/spec/ovn/template/ovnController/nicMappings", }]' ] logger.go:42: 13:49:55 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | openstackcontrolplane.core.openstack.org/openstack patched logger.go:42: 13:49:55 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:49:56 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:49:58 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:49:59 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | running command: [sh -c ovs_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller-ovs --no-headers=true --ignore-not-found=true | wc -l) ovn_controller_pod_count=$(oc get pod -n $NAMESPACE -l service=ovn-controller --no-headers=true --ignore-not-found=true | wc -l) if [ $ovs_controller_pod_count -eq 0 ] && [ $ovn_controller_pod_count -eq 0 ]; then exit 0 fi exit 1 ] logger.go:42: 13:49:59 | ctlplane-basic-deployment-with-nicMappings/4-remove-ovn-nic-mappings | test step completed 4-remove-ovn-nic-mappings logger.go:42: 13:49:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | starting test step 5-cleanup logger.go:42: 13:49:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | running command: [sh -c oc delete --ignore-not-found=true -n $NAMESPACE pvc \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE oc delete secret -l ca-cert -n $NAMESPACE ] logger.go:42: 13:49:59 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "combined-ca-bundle" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-barbican-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ceilometer-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-cinder-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-galera-openstack-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-galera-openstack-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-glance-default-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-keystone-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-kube-state-metrics-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-memcached-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-neutron-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-novncproxy-cell1-vencrypt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-nova-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovn-metrics" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovncontroller-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovndbcluster-nb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovndbcluster-sb-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-ovnnorthd-ovndbs" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-placement-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-rabbitmq-cell1-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-rabbitmq-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-internal-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-public-route" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:00 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "cert-swift-public-svc" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:06 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-internal" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:06 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-libvirt" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:06 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-ovn" deleted from openstack-kuttl-tests namespace logger.go:42: 13:50:06 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | secret "rootca-public" deleted from openstack-kuttl-tests namespace Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice logger.go:42: 13:50:32 | ctlplane-basic-deployment-with-nicMappings/5-cleanup | test step completed 5-cleanup logger.go:42: 13:50:32 | ctlplane-basic-deployment-with-nicMappings | skipping kubernetes event logging === NAME kuttl harness.go:406: run tests finished harness.go:514: cleaning up harness.go:571: removing temp folder: "" --- PASS: kuttl (322.27s) --- PASS: kuttl/harness (0.00s) --- PASS: kuttl/harness/ctlplane-basic-deployment-with-nicMappings (320.82s) PASS No resources found make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage_cleanup.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/cleanup-crc-pv.sh ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $6}' ++ grep Bound + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-cell1-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-cell1-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-cell1-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-cell1-galera-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-sb-etc-ovn-ovsdbserver-sb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/glance-glance-default-external-api-0 ++ cut -d / -f 2 + NAME=glance-glance-default-external-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-external-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-external-api-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 ++ cut -d / -f 2 + NAME=ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 + oc delete -n openstack-kuttl-tests pvc/ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0 --ignore-not-found persistentvolumeclaim "ovndbcluster-nb-etc-ovn-ovsdbserver-nb-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/glance-glance-default-internal-api-0 ++ cut -d / -f 2 + NAME=glance-glance-default-internal-api-0 + oc delete -n openstack-kuttl-tests pvc/glance-glance-default-internal-api-0 --ignore-not-found persistentvolumeclaim "glance-glance-default-internal-api-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/mysql-db-openstack-galera-0 ++ cut -d / -f 2 + NAME=mysql-db-openstack-galera-0 + oc delete -n openstack-kuttl-tests pvc/mysql-db-openstack-galera-0 --ignore-not-found persistentvolumeclaim "mysql-db-openstack-galera-0" deleted from openstack-kuttl-tests namespace + for pvc in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | grep Bound | awk '{print $6}'` ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 1 + NS=openstack-kuttl-tests ++ echo openstack-kuttl-tests/swift-swift-storage-0 ++ cut -d / -f 2 + NAME=swift-swift-storage-0 + oc delete -n openstack-kuttl-tests pvc/swift-swift-storage-0 --ignore-not-found persistentvolumeclaim "swift-swift-storage-0" deleted from openstack-kuttl-tests namespace ++ oc get pv --selector provisioned-by=crc-devsetup --no-headers ++ awk '{print $1}' + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage01-crc persistentvolume "local-storage01-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage02-crc persistentvolume "local-storage02-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage03-crc persistentvolume "local-storage03-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage04-crc persistentvolume "local-storage04-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage05-crc persistentvolume "local-storage05-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage06-crc persistentvolume "local-storage06-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage07-crc persistentvolume "local-storage07-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage08-crc persistentvolume "local-storage08-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage09-crc persistentvolume "local-storage09-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage10-crc persistentvolume "local-storage10-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage11-crc persistentvolume "local-storage11-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage12-crc persistentvolume "local-storage12-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage13-crc persistentvolume "local-storage13-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage14-crc persistentvolume "local-storage14-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage15-crc persistentvolume "local-storage15-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage16-crc persistentvolume "local-storage16-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage17-crc persistentvolume "local-storage17-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage18-crc persistentvolume "local-storage18-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage19-crc persistentvolume "local-storage19-crc" deleted + for pv in `oc get pv --selector provisioned-by=crc-devsetup --no-headers | awk '{print $1}'` + oc delete pv/local-storage20-crc persistentvolume "local-storage20-crc" deleted if oc get sc "local-storage"; then oc delete sc "local-storage"; fi NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer true 5m29s storageclass.storage.k8s.io "local-storage" deleted bash scripts/delete-pv.sh +++ dirname scripts/delete-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ oc apply -f - ++ cat serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc delete ++ set -ex ++ NODE=crc ++ OPERATION=delete ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/retry_make_crc_storage.sh 3 make[3]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' bash scripts/gen-namespace.sh + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' + '[' -z crc-storage ']' + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/crc-storage + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc-storage ']' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc-storage/namespace.yaml namespace/crc-storage unchanged timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io crc-storage); do sleep 1; done" NAME DISPLAY NAME STATUS crc-storage Active oc project crc-storage Already on project "crc-storage" on server "https://api.crc.testing:6443". bash scripts/create-pv.sh +++ dirname scripts/create-pv.sh ++ cd scripts ++ pwd -P + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_common.sh ++ set -ex ++ OPERATION=create ++ cat ++ oc apply -f - configmap/crc-storage unchanged ++ cat ++ oc apply -f - serviceaccount/crc-storage unchanged ++ cat ++ oc apply -f - role.rbac.authorization.k8s.io/crc-storage-role unchanged ++ cat ++ oc apply -f - rolebinding.rbac.authorization.k8s.io/crc-storage-rolebinding unchanged + PV_NUM=20 + TIMEOUT=500s ++ oc get pv -o json ++ jq -r '.items[] | select(.status.phase | test("Released")).metadata.name' + released= ++ oc get node -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -l node-role.kubernetes.io/worker + NODE_NAMES=crc + '[' -z crc ']' + for node in $NODE_NAMES + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/storage_apply.sh crc create ++ set -ex ++ NODE=crc ++ OPERATION=create ++ oc delete -n crc-storage job crc-storage-crc --ignore-not-found job.batch "crc-storage-crc" deleted from crc-storage namespace ++ cat ++ oc apply -f - Warning: would violate PodSecurity "restricted:latest": privileged (container "storage" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "storage" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "storage" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "node-mnt" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "storage" must set securityContext.runAsNonRoot=true), runAsUser=0 (pod and container "storage" must not set runAsUser=0) job.batch/crc-storage-crc created + oc wait job -n crc-storage -l install-yamls.crc.storage --for condition=Complete --timeout 500s job.batch/crc-storage-crc condition met bash scripts/gen-crc-pv-kustomize.sh + OUT=/home/zuul/ci-framework-data/artifacts/manifests + '[' -z '"local-storage"' ']' + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/crc ']' + PV_NUM=20 + STORAGE_CAPACITY=10 ++ oc get node -o name -l node-role.kubernetes.io/worker ++ head -c-1 ++ sed -e 's|node/||' ++ tr '\n' ' ' + NODE_NAMES=crc + '[' -z crc ']' + cat + for node in $NODE_NAMES ++ seq -w 20 + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + for i in `seq -w $PV_NUM` + cat ++ sed -e 's/^"//' -e 's/"$//' + cat oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/crc/storage.yaml storageclass.storage.k8s.io/local-storage created persistentvolume/local-storage01-crc created persistentvolume/local-storage02-crc created persistentvolume/local-storage03-crc created persistentvolume/local-storage04-crc created persistentvolume/local-storage05-crc created persistentvolume/local-storage06-crc created persistentvolume/local-storage07-crc created persistentvolume/local-storage08-crc created persistentvolume/local-storage09-crc created persistentvolume/local-storage10-crc created persistentvolume/local-storage11-crc created persistentvolume/local-storage12-crc created persistentvolume/local-storage13-crc created persistentvolume/local-storage14-crc created persistentvolume/local-storage15-crc created persistentvolume/local-storage16-crc created persistentvolume/local-storage17-crc created persistentvolume/local-storage18-crc created persistentvolume/local-storage19-crc created persistentvolume/local-storage20-crc created persistentvolumeclaim/ansible-ee-logs unchanged make[3]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make[2]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' 2026/03/16 13:50:51 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests ] === RUN kuttl harness.go:463: starting setup harness.go:255: running tests using configured kubeconfig. harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443 logger.go:42: 13:50:51 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_netconfig.yaml] logger.go:42: 13:50:51 | | netconfig.network.openstack.org/netconfig configured logger.go:42: 13:50:51 | | running command: [oc apply -n openstack-kuttl-tests -f https://raw.githubusercontent.com/openstack-k8s-operators/infra-operator/main/config/samples/network_v1beta1_dnsmasq.yaml] logger.go:42: 13:50:52 | | dnsmasq.network.openstack.org/dnsmasq configured logger.go:42: 13:50:52 | | running command: [sh -c if [ ! -f ansibleee-ssh-key-id_rsa ]; then ssh-keygen -f ansibleee-ssh-key-id_rsa -N "" -t rsa -b 4096 fi oc create secret generic dataplane-ansible-ssh-private-key-secret \ --save-config \ --dry-run=client \ --from-file=authorized_keys=ansibleee-ssh-key-id_rsa.pub \ --from-file=ssh-privatekey=an**********sa \ --from-file=ssh-publickey=ansibleee-ssh-key-id_rsa.pub \ -n openstack-kuttl-tests \ -o yaml | \ oc apply -f - ] logger.go:42: 13:50:53 | | secret/dataplane-ansible-ssh-private-key-secret unchanged harness.go:363: running tests harness.go:75: going to run test suite with timeout of 1380 seconds for each step harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests has 20 tests === RUN kuttl/harness === RUN kuttl/harness/ctlplane-collapsed === PAUSE kuttl/harness/ctlplane-collapsed === CONT kuttl/harness/ctlplane-collapsed logger.go:42: 13:50:53 | ctlplane-collapsed | Skipping creation of user-supplied namespace: openstack-kuttl-tests logger.go:42: 13:50:53 | ctlplane-collapsed/0-deps | starting test step 0-deps logger.go:42: 13:50:53 | ctlplane-collapsed/0-deps | running command: [sh -c oc apply -f ../../common/rhobs.yaml until oc api-resources | grep -q rhobs; do sleep 1; done ] logger.go:42: 13:50:53 | ctlplane-collapsed/0-deps | subscription.operators.coreos.com/cluster-observability-operator created logger.go:42: 13:51:07 | ctlplane-collapsed/0-deps | test step completed 0-deps logger.go:42: 13:51:07 | ctlplane-collapsed/1-deploy-openstack-collapsed-cell | starting test step 1-deploy-openstack-collapsed-cell logger.go:42: 13:51:07 | ctlplane-collapsed/1-deploy-openstack-collapsed-cell | running command: [sh -c oc apply -n $NAMESPACE -f ../../../../config/samples/core_v1beta1_openstackcontrolplane_collapsed_cell.yaml ] logger.go:42: 13:51:08 | ctlplane-collapsed/1-deploy-openstack-collapsed-cell | Warning: spec.galera.template[openstack].storageRequest: 500M is not appropriate for production! For production use at least 5G! logger.go:42: 13:51:08 | ctlplane-collapsed/1-deploy-openstack-collapsed-cell | The OpenStackControlPlane "openstack-collapsed-cell" is invalid: metadata.name: Invalid value: "openstack-collapsed-cell": OpenStackControlPlane 'openstack-collapsed-cell' must have same name as the existing 'openstack' OpenStackVersion case.go:396: failed in step 1-deploy-openstack-collapsed-cell case.go:398: command "oc apply -n $NAMESPACE -f ../../../../config/samples/core_v1beta1_o..." failed, exit status 1 logger.go:42: 13:51:08 | ctlplane-collapsed | skipping kubernetes event logging === NAME kuttl harness.go:406: run tests finished harness.go:514: cleaning up harness.go:571: removing temp folder: "" --- FAIL: kuttl (16.56s) --- FAIL: kuttl/harness (0.00s) --- FAIL: kuttl/harness/ctlplane-collapsed (14.96s) FAIL make[1]: *** [Makefile:2100: openstack_kuttl_run] Error 1 make[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls' make: *** [Makefile:2117: openstack_kuttl] Error 2