From 0e0d211a45f9c396fb9c7eba1e31fc4c9acdf170 Mon Sep 17 00:00:00 2001 From: k8s-infra-cherrypick-robot <90416843+k8s-infra-cherrypick-robot@users.noreply.github.com> Date: Wed, 21 Jan 2026 09:13:26 -0800 Subject: [PATCH 1/4] add debug logging on deployment failure, update nfs image (#3051) Co-authored-by: Jesse Haka --- .../roles/install-csi-cinder/tasks/main.yaml | 10 ++++++++++ .../roles/install-csi-manila/tasks/main.yaml | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml b/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml index 23354effea..f37763e438 100644 --- a/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml +++ b/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml @@ -159,6 +159,16 @@ kubectl -n kube-system logs ds/openstack-cloud-controller-manager > /var/log/csi-pod/occm.log + - name: Collect pod logs for debug purpose (early collection on deployment failure) + shell: + executable: /bin/bash + cmd: | + set -x + mkdir -p /var/log/csi-pod + kubectl logs deployment/csi-cinder-controllerplugin -n kube-system -c cinder-csi-plugin > /var/log/csi-pod/deployment-csi-cinder-controllerplugin.log + kubectl logs daemonset/csi-cinder-nodeplugin -n kube-system -c cinder-csi-plugin > /var/log/csi-pod/deployment-csi-cinder-nodeplugin.log + ignore_errors: true + - name: &failmsg Stop due to prior failure of csi-cinder-plugin fail: msg: *failmsg diff --git a/tests/playbooks/roles/install-csi-manila/tasks/main.yaml b/tests/playbooks/roles/install-csi-manila/tasks/main.yaml index 9db71c027d..526ed879b3 100644 --- a/tests/playbooks/roles/install-csi-manila/tasks/main.yaml +++ b/tests/playbooks/roles/install-csi-manila/tasks/main.yaml @@ -92,7 +92,7 @@ capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: quay.io/k8scsi/nfsplugin:v2.0.0 + image: registry.k8s.io/sig-storage/nfsplugin:v4.12.1 args: - "--nodeid=\$(NODE_ID)" - "--endpoint=unix://plugin/csi.sock" @@ -187,6 +187,16 @@ debug: var: describe_csi.stdout_lines + - name: Collect pod logs for debug purpose (early collection on deployment failure) + shell: + executable: /bin/bash + cmd: | + set -x + mkdir -p /var/log/csi-pod + kubectl logs -l app=openstack-manila-csi,component=controllerplugin -n default -c nfs-nodeplugin --tail=-1 > /var/log/csi-pod/deployment-csi-manila-controllerplugin.log + kubectl logs -l app=openstack-manila-csi,component=nodeplugin -n default -c nfs-nodeplugin --tail=-1 > /var/log/csi-pod/deployment-csi-manila-nodeplugin.log + ignore_errors: true + - name: &failmsg Stop due to prior failure of manila-csi-plugin fail: msg: *failmsg From e9b49aedbff8e2ac396b1844beadb90496eba6cf Mon Sep 17 00:00:00 2001 From: k8s-infra-cherrypick-robot <90416843+k8s-infra-cherrypick-robot@users.noreply.github.com> Date: Wed, 21 Jan 2026 10:25:29 -0800 Subject: [PATCH 2/4] Allow manila e2e testing with DHSS=true (#3049) When using manila DHSS=true the network needs to be specified to allow using/creating the share. To allow e2e testing in a DHSS=true env I added an option to specify network via an environment variable keeping backward compatibility while allowing testing with DHSS=true Co-authored-by: eshulman2 --- tests/e2e/csi/manila/manilavolume.go | 19 +++++++++++++++---- tests/e2e/csi/manila/testdriver.go | 12 ++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/tests/e2e/csi/manila/manilavolume.go b/tests/e2e/csi/manila/manilavolume.go index a322236565..fa13381fcc 100644 --- a/tests/e2e/csi/manila/manilavolume.go +++ b/tests/e2e/csi/manila/manilavolume.go @@ -3,6 +3,7 @@ package test import ( "bytes" "context" + "os" "os/exec" "strconv" "strings" @@ -13,6 +14,10 @@ import ( storageframework "k8s.io/kubernetes/test/e2e/storage/framework" ) +// Environment variable for DHSS=True mode share network. +// This must match the variable in testdriver.go. +var manilaShareNetworkIDForVolume = os.Getenv("MANILA_SHARE_NETWORK_ID") + func runCmd(name string, args ...string) ([]byte, error) { var stdout, stderr bytes.Buffer cmd := exec.Command(name, args...) @@ -47,9 +52,8 @@ func manilaCreateVolume( ginkgo.By("Creating a test Manila volume externally") // Create share. - - out, err := runCmd( - "openstack", + // Build command arguments, optionally including share network for DHSS=True mode. + args := []string{ "share", "create", shareProto, @@ -58,7 +62,14 @@ func manilaCreateVolume( "--format=value", "--column=id", "--wait", - ) + } + + // Support for DHSS=True mode: include share network ID if specified + if manilaShareNetworkIDForVolume != "" { + args = append(args, "--share-network="+manilaShareNetworkIDForVolume) + } + + out, err := runCmd("openstack", args...) shareID := strings.TrimSpace(string(out)) diff --git a/tests/e2e/csi/manila/testdriver.go b/tests/e2e/csi/manila/testdriver.go index 1b29e9bd3f..da0634d3c1 100644 --- a/tests/e2e/csi/manila/testdriver.go +++ b/tests/e2e/csi/manila/testdriver.go @@ -3,6 +3,7 @@ package test import ( "context" "fmt" + "os" "github.com/onsi/gomega" v1 "k8s.io/api/core/v1" @@ -30,6 +31,12 @@ const ( manilaShareSizeGiB = 1 ) +// Environment variables for DHSS=True (driver_handles_share_servers) mode. +// Set MANILA_SHARE_NETWORK_ID to enable testing with share networks. +var ( + manilaShareNetworkID = os.Getenv("MANILA_SHARE_NETWORK_ID") +) + type manilaTestDriver struct { driverInfo storageframework.DriverInfo volumeAttributes []map[string]string @@ -129,6 +136,11 @@ func (d *manilaTestDriver) GetDynamicProvisionStorageClass(ctx context.Context, "csi.storage.k8s.io/node-publish-secret-namespace": manilaSecretNamespace, } + // Support for DHSS=True mode: include share network ID if specified + if manilaShareNetworkID != "" { + parameters["shareNetworkID"] = manilaShareNetworkID + } + sc := storageframework.GetStorageClass( d.driverInfo.Name, parameters, From 63374c548c945c01a436c832559823e2e6950754 Mon Sep 17 00:00:00 2001 From: k8s-infra-cherrypick-robot <90416843+k8s-infra-cherrypick-robot@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:29:26 -0800 Subject: [PATCH 3/4] [release-1.33] tests: bump devstack to stable/2025.2 (#3056) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * tests: bump devstack to stable/2025.2 * tests: show loadbalancer tags in raw format --------- Co-authored-by: pýrus --- tests/e2e/cloudprovider/test-lb-service.sh | 20 +++++++++---------- .../roles/install-devstack/defaults/main.yaml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/e2e/cloudprovider/test-lb-service.sh b/tests/e2e/cloudprovider/test-lb-service.sh index cb57d6ec8c..55617f773f 100755 --- a/tests/e2e/cloudprovider/test-lb-service.sh +++ b/tests/e2e/cloudprovider/test-lb-service.sh @@ -57,7 +57,7 @@ function _check_lb_tags { local tags=$3 if [ -z "$tags" ]; then - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) fi if [[ ! "$tags" =~ (^|[[:space:]])kube_service_(.+?)$svcName($|[[:space:]]) ]]; then @@ -468,7 +468,7 @@ EOF lbID=$(_check_service_lb_annotation "${service1}") printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -509,7 +509,7 @@ EOF fi printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -560,7 +560,7 @@ EOF wait_for_loadbalancer $lbID printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -605,7 +605,7 @@ EOF wait_for_service_address ${service3} printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service3 "$tags" if [ $? -ne 0 ]; then @@ -637,7 +637,7 @@ EOF sleep 10 printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -660,7 +660,7 @@ EOF sleep 5 printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -680,7 +680,7 @@ EOF wait_for_loadbalancer $lbID printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -eq 0 ]; then @@ -778,7 +778,7 @@ EOF lbID=$(_check_service_lb_annotation "${service1}") printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -ne 0 ]; then @@ -792,7 +792,7 @@ EOF wait_for_service_deleted ${service1} printf "\n>>>>>>> Validating tags of openstack load balancer %s \n" "$lbID" - tags=$(openstack loadbalancer show $lbID -f value -c tags) + tags=$(openstack loadbalancer show $lbID -f json -c tags | jq -r '.tags[]') tags=$(echo $tags) _check_lb_tags $lbID $service1 "$tags" if [ $? -eq 0 ]; then diff --git a/tests/playbooks/roles/install-devstack/defaults/main.yaml b/tests/playbooks/roles/install-devstack/defaults/main.yaml index c73699bbd5..7b2c47404f 100644 --- a/tests/playbooks/roles/install-devstack/defaults/main.yaml +++ b/tests/playbooks/roles/install-devstack/defaults/main.yaml @@ -1,7 +1,7 @@ --- user: "stack" workdir: "/home/{{ user }}/devstack" -branch: "stable/2025.1" +branch: "stable/2025.2" enable_services: - nova - glance From add1e66df23dcbfc97824df1e018c46e26ebb6f6 Mon Sep 17 00:00:00 2001 From: k8s-infra-cherrypick-robot <90416843+k8s-infra-cherrypick-robot@users.noreply.github.com> Date: Fri, 23 Jan 2026 06:03:34 -0800 Subject: [PATCH 4/4] tests: split kubectl download task into multiple with retries (#3061) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: pýrus --- .../roles/install-k3s/tasks/main.yaml | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tests/playbooks/roles/install-k3s/tasks/main.yaml b/tests/playbooks/roles/install-k3s/tasks/main.yaml index 75863d85eb..26530979d4 100644 --- a/tests/playbooks/roles/install-k3s/tasks/main.yaml +++ b/tests/playbooks/roles/install-k3s/tasks/main.yaml @@ -154,7 +154,7 @@ retries: 100 delay: 5 -- name: Prepare kubectl and kubeconfig file +- name: Prepare kubeconfig file shell: executable: /bin/bash cmd: | @@ -162,8 +162,31 @@ mkdir -p {{ ansible_user_dir }}/.kube scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {{ ansible_user_dir }}/.ssh/id_rsa ubuntu@{{ k3s_fip }}:/etc/rancher/k3s/k3s.yaml {{ ansible_user_dir }}/.kube/config - curl -sLO# https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl - chmod +x ./kubectl; sudo mv ./kubectl /usr/local/bin/kubectl + +- name: Get latest kubectl version + uri: + url: https://dl.k8s.io/release/stable.txt + return_content: yes + register: kubectl_version + retries: 5 + delay: 10 + until: kubectl_version.status == 200 + +- name: Download kubectl binary + get_url: + url: "https://dl.k8s.io/release/{{ kubectl_version.content | trim }}/bin/linux/amd64/kubectl" + dest: /usr/local/bin/kubectl + mode: '0755' + become: true + retries: 5 + delay: 10 + +- name: Set kubectl cluster config + shell: + executable: /bin/bash + cmd: | + set -ex + kubectl config set-cluster default --server=https://{{ k3s_fip }}:6443 --kubeconfig {{ ansible_user_dir }}/.kube/config - name: Wait for k8s node ready