diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 84% rename from .github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE/bug_report.md index 2380ad460d..9602732586 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,3 +1,12 @@ +--- +name: Bug report +about: Bug report +title: '' +labels: '' +assignees: '' + +--- + -**Is this a BUG REPORT or FEATURE REQUEST?**: - -> Uncomment only one, leave it on its own line: -> -> /kind bug -> /kind feature +/kind bug **What happened**: diff --git a/.github/ISSUE_TEMPLATE/feature_report.md b/.github/ISSUE_TEMPLATE/feature_report.md new file mode 100644 index 0000000000..5470a1036f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_report.md @@ -0,0 +1,43 @@ +--- +name: Feature report +about: Feature report +title: '' +labels: '' +assignees: '' + +--- + + + +/kind feature + +**What happened**: + + +**What you expected to happen**: + + +**How to reproduce it**: + + +**Anything else we need to know?**: + + +**Environment**: +- openstack-cloud-controller-manager(or other related binary) version: +- OpenStack version: +- Others: diff --git a/Dockerfile b/Dockerfile index 0abb3acb87..d623f825d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ## BUILD ARGS ## ################################################################################ # This build arg allows the specification of a custom Golang image. -ARG GOLANG_IMAGE=golang:1.23.6 +ARG GOLANG_IMAGE=golang:1.23.11 # The distroless image on which the CPI manager image is built. # @@ -22,11 +22,11 @@ ARG GOLANG_IMAGE=golang:1.23.6 # deterministic builds. Follow what kubernetes uses to build # kube-controller-manager, for example for 1.27.x: # https://github.com/kubernetes/kubernetes/blob/release-1.27/build/common.sh#L99 -ARG DISTROLESS_IMAGE=registry.k8s.io/build-image/go-runner:v2.4.0-go1.23.6-bookworm.0 +ARG DISTROLESS_IMAGE=registry.k8s.io/build-image/go-runner:v2.4.0-go1.23.11-bookworm.0 # We use Alpine as the source for default CA certificates and some output # images -ARG ALPINE_IMAGE=alpine:3.21.2 +ARG ALPINE_IMAGE=alpine:3.21.4 # cinder-csi-plugin uses Debian as a base image ARG DEBIAN_IMAGE=registry.k8s.io/build-image/debian-base:bookworm-v1.0.4 diff --git a/Makefile b/Makefile index 5c16a12845..46883ffad8 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,7 @@ $(BUILD_CMDS): $(SOURCES) test: unit functional check: work - go run github.com/golangci/golangci-lint/cmd/golangci-lint@v1.61.0 run --timeout=20m ./... + go run github.com/golangci/golangci-lint/cmd/golangci-lint@v1.63.4 run --timeout=20m ./... unit: work go test -tags=unit $(shell go list ./... | sed -e '/sanity/ { N; d; }' | sed -e '/tests/ {N; d;}') $(TESTARGS) diff --git a/charts/cinder-csi-plugin/Chart.yaml b/charts/cinder-csi-plugin/Chart.yaml index 298b8cdc13..5949eedd81 100644 --- a/charts/cinder-csi-plugin/Chart.yaml +++ b/charts/cinder-csi-plugin/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 -appVersion: v1.32.0 +appVersion: v1.32.1 description: Cinder CSI Chart for OpenStack name: openstack-cinder-csi -version: 2.32.0 +version: 2.32.2 home: https://github.com/kubernetes/cloud-provider-openstack icon: https://github.com/kubernetes/kubernetes/blob/master/logo/logo.png maintainers: diff --git a/charts/manila-csi-plugin/Chart.yaml b/charts/manila-csi-plugin/Chart.yaml index 7311e698f0..e03d6c141a 100644 --- a/charts/manila-csi-plugin/Chart.yaml +++ b/charts/manila-csi-plugin/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 -appVersion: v1.32.0 +appVersion: v1.32.1 description: Manila CSI Chart for OpenStack name: openstack-manila-csi -version: 2.32.0 +version: 2.32.1 home: http://github.com/kubernetes/cloud-provider-openstack icon: https://github.com/kubernetes/kubernetes/blob/master/logo/logo.png maintainers: diff --git a/charts/openstack-cloud-controller-manager/Chart.yaml b/charts/openstack-cloud-controller-manager/Chart.yaml index b183f34447..ec15f93e2e 100644 --- a/charts/openstack-cloud-controller-manager/Chart.yaml +++ b/charts/openstack-cloud-controller-manager/Chart.yaml @@ -1,10 +1,10 @@ apiVersion: v2 -appVersion: v1.32.0 +appVersion: v1.32.1 description: Openstack Cloud Controller Manager Helm Chart icon: https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/www-images-prod/openstack-logo/OpenStack-Logo-Vertical.png home: https://github.com/kubernetes/cloud-provider-openstack name: openstack-cloud-controller-manager -version: 2.32.0 +version: 2.32.1 maintainers: - name: eumel8 email: f.kloeker@telekom.de diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 1f80394b82..3cd2651c1c 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -9,7 +9,7 @@ options: substitution_option: ALLOW_LOOSE machineType: 'N1_HIGHCPU_8' steps: - - name: gcr.io/k8s-testimages/gcb-docker-gcloud + - name: gcr.io/k8s-staging-test-infra/gcb-docker-gcloud entrypoint: bash env: # default cloudbuild has HOME=/builder/home and docker buildx is in /root/.docker/cli-plugins/docker-buildx diff --git a/docs/cinder-csi-plugin/multi-region-clouds.md b/docs/cinder-csi-plugin/multi-region-clouds.md index 7ad6a9b80b..8d4e0b9be5 100644 --- a/docs/cinder-csi-plugin/multi-region-clouds.md +++ b/docs/cinder-csi-plugin/multi-region-clouds.md @@ -166,7 +166,7 @@ spec: - name: liveness-probe ... - name: cinder-csi-plugin - image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.0 + image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.1 args: - /bin/cinder-csi-plugin - --endpoint=$(CSI_ENDPOINT) @@ -216,7 +216,7 @@ spec: - name: liveness-probe ... - name: cinder-csi-plugin - image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.0 + image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.1 args: - /bin/cinder-csi-plugin - --endpoint=$(CSI_ENDPOINT) @@ -282,7 +282,7 @@ spec: - Topology=true ... - name: cinder-csi-plugin - image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.0 + image: docker.io/k8scloudprovider/cinder-csi-plugin:v1.32.1 args: - /bin/cinder-csi-plugin - --endpoint=$(CSI_ENDPOINT) diff --git a/docs/keystone-auth/using-keystone-webhook-authenticator-and-authorizer.md b/docs/keystone-auth/using-keystone-webhook-authenticator-and-authorizer.md index aac38c8fc1..d9442ef275 100644 --- a/docs/keystone-auth/using-keystone-webhook-authenticator-and-authorizer.md +++ b/docs/keystone-auth/using-keystone-webhook-authenticator-and-authorizer.md @@ -252,7 +252,7 @@ it as a service. There are several things we need to notice in the deployment manifest: - We are using image - `registry.k8s.io/provider-os/k8s-keystone-auth:v1.32.0` + `registry.k8s.io/provider-os/k8s-keystone-auth:v1.32.1` - We use `k8s-auth-policy` configmap created above. - The pod uses service account `keystone-auth` created above. - We use `keystone-auth-certs` secret created above to inject the diff --git a/docs/magnum-auto-healer/using-magnum-auto-healer.md b/docs/magnum-auto-healer/using-magnum-auto-healer.md index def28c9dee..08e5c175aa 100644 --- a/docs/magnum-auto-healer/using-magnum-auto-healer.md +++ b/docs/magnum-auto-healer/using-magnum-auto-healer.md @@ -73,7 +73,7 @@ user_id=ceb61464a3d341ebabdf97d1d4b97099 user_project_id=b23a5e41d1af4c20974bf58b4dff8e5a password=password region=RegionOne -image=registry.k8s.io/provider-os/magnum-auto-healer:v1.32.0 +image=registry.k8s.io/provider-os/magnum-auto-healer:v1.32.1 cat < /etc/kubernetes/octavia-ingress-controller/deployment.yaml --- diff --git a/examples/webhook/keystone-deployment.yaml b/examples/webhook/keystone-deployment.yaml index b1ebe72909..b3eb6353c8 100644 --- a/examples/webhook/keystone-deployment.yaml +++ b/examples/webhook/keystone-deployment.yaml @@ -18,7 +18,7 @@ spec: serviceAccountName: k8s-keystone containers: - name: k8s-keystone-auth - image: registry.k8s.io/provider-os/k8s-keystone-auth:v1.32.0 + image: registry.k8s.io/provider-os/k8s-keystone-auth:v1.32.1 args: - ./bin/k8s-keystone-auth - --tls-cert-file diff --git a/go.mod b/go.mod index 3d21f3f679..0e99699cc6 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ module k8s.io/cloud-provider-openstack -go 1.23.6 +go 1.23.11 require ( github.com/container-storage-interface/spec v1.11.0 - github.com/go-chi/chi/v5 v5.2.1 + github.com/go-chi/chi/v5 v5.2.2 github.com/google/uuid v1.6.0 github.com/gophercloud/gophercloud/v2 v2.5.0 github.com/gophercloud/utils/v2 v2.0.0-20250212084022-725b94822eeb @@ -29,32 +29,33 @@ require ( gopkg.in/gcfg.v1 v1.2.3 gopkg.in/godo.v2 v2.0.9 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.32.2 - k8s.io/apimachinery v0.32.2 - k8s.io/apiserver v0.32.2 - k8s.io/client-go v0.32.2 - k8s.io/cloud-provider v0.32.2 - k8s.io/component-base v0.32.2 + k8s.io/api v0.32.7 + k8s.io/apimachinery v0.32.7 + k8s.io/apiserver v0.32.7 + k8s.io/client-go v0.32.7 + k8s.io/cloud-provider v0.32.7 + k8s.io/component-base v0.32.7 k8s.io/klog/v2 v2.130.1 - k8s.io/kms v0.32.2 - k8s.io/kubernetes v1.32.2 - k8s.io/mount-utils v0.32.2 + k8s.io/kms v0.32.7 + k8s.io/kubernetes v1.32.7 + k8s.io/mount-utils v0.32.7 k8s.io/utils v0.0.0-20241210054802-24370beab758 software.sslmate.com/src/go-pkcs12 v0.5.0 ) // the below fixes the "go list -m all" execution replace ( - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.32.2 - k8s.io/cri-client => k8s.io/cri-client v0.32.2 - k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.32.2 - k8s.io/endpointslice => k8s.io/endpointslice v0.32.2 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.32.2 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.32.2 - k8s.io/kube-proxy => k8s.io/kube-proxy v0.32.2 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.32.2 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.32.2 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.32.2 + k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.32.7 + k8s.io/cri-client => k8s.io/cri-client v0.32.7 + k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.32.7 + k8s.io/endpointslice => k8s.io/endpointslice v0.32.7 + k8s.io/externaljwt => k8s.io/externaljwt v0.32.7 + k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.32.7 + k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.32.7 + k8s.io/kube-proxy => k8s.io/kube-proxy v0.32.7 + k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.32.7 + k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.32.7 + k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.32.7 ) require ( @@ -175,18 +176,18 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.32.2 // indirect - k8s.io/component-helpers v0.32.2 // indirect - k8s.io/controller-manager v0.32.2 // indirect - k8s.io/cri-api v0.32.2 // indirect - k8s.io/cri-client v0.32.2 // indirect - k8s.io/csi-translation-lib v0.32.2 // indirect - k8s.io/dynamic-resource-allocation v0.32.2 // indirect + k8s.io/apiextensions-apiserver v0.32.7 // indirect + k8s.io/component-helpers v0.32.7 // indirect + k8s.io/controller-manager v0.32.7 // indirect + k8s.io/cri-api v0.32.7 // indirect + k8s.io/cri-client v0.32.7 // indirect + k8s.io/csi-translation-lib v0.32.7 // indirect + k8s.io/dynamic-resource-allocation v0.32.7 // indirect k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect - k8s.io/kube-scheduler v0.32.2 // indirect - k8s.io/kubectl v0.32.2 // indirect - k8s.io/kubelet v0.32.2 // indirect - k8s.io/pod-security-admission v0.32.2 // indirect + k8s.io/kube-scheduler v0.32.7 // indirect + k8s.io/kubectl v0.32.7 // indirect + k8s.io/kubelet v0.32.7 // indirect + k8s.io/pod-security-admission v0.32.7 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect diff --git a/go.sum b/go.sum index 2213044f54..aa90c324cb 100644 --- a/go.sum +++ b/go.sum @@ -97,8 +97,8 @@ github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8 github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8= -github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= +github.com/go-chi/chi/v5 v5.2.2 h1:CMwsvRVTbXVytCk1Wd72Zy1LAsAh9GxMmSNWLHCG618= +github.com/go-chi/chi/v5 v5.2.2/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= @@ -560,51 +560,51 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw= -k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y= -k8s.io/apiextensions-apiserver v0.32.2 h1:2YMk285jWMk2188V2AERy5yDwBYrjgWYggscghPCvV4= -k8s.io/apiextensions-apiserver v0.32.2/go.mod h1:GPwf8sph7YlJT3H6aKUWtd0E+oyShk/YHWQHf/OOgCA= -k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ= -k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/apiserver v0.32.2 h1:WzyxAu4mvLkQxwD9hGa4ZfExo3yZZaYzoYvvVDlM6vw= -k8s.io/apiserver v0.32.2/go.mod h1:PEwREHiHNU2oFdte7BjzA1ZyjWjuckORLIK/wLV5goM= -k8s.io/client-go v0.32.2 h1:4dYCD4Nz+9RApM2b/3BtVvBHw54QjMFUl1OLcJG5yOA= -k8s.io/client-go v0.32.2/go.mod h1:fpZ4oJXclZ3r2nDOv+Ux3XcJutfrwjKTCHz2H3sww94= -k8s.io/cloud-provider v0.32.2 h1:8EC+fCYo0r0REczSjOZcVuQPCMxXxCKlgxDbYMrzC30= -k8s.io/cloud-provider v0.32.2/go.mod h1:2s8TeAXhVezp5VISaTxM6vW3yDonOZXoN4Aryz1p1PQ= -k8s.io/component-base v0.32.2 h1:1aUL5Vdmu7qNo4ZsE+569PV5zFatM9hl+lb3dEea2zU= -k8s.io/component-base v0.32.2/go.mod h1:PXJ61Vx9Lg+P5mS8TLd7bCIr+eMJRQTyXe8KvkrvJq0= -k8s.io/component-helpers v0.32.2 h1:2usSAm3zNE5yu5DdAdrKBWLfSYNpU4OPjZywJY5ovP8= -k8s.io/component-helpers v0.32.2/go.mod h1:fvQAoiiOP7jUEUBc9qR0PXiBPuB0I56WTxTkkpcI8g8= -k8s.io/controller-manager v0.32.2 h1:/9XuHWEqofO2Aqa4l7KJGckJUcLVRWfx+qnVkdXoStI= -k8s.io/controller-manager v0.32.2/go.mod h1:o5uo2tLCQhuoMt0RfKcQd0eqaNmSKOKiT+0YELCqXOk= -k8s.io/cri-api v0.32.2 h1:7DuaOHpOcXweZeBUbRdK0iCroxctGp73VwgrA0u7kho= -k8s.io/cri-api v0.32.2/go.mod h1:DCzMuTh2padoinefWME0G678Mc3QFbLMF2vEweGzBAI= -k8s.io/cri-client v0.32.2 h1:vjowJUyu14IbmifqCKJHE9rK/BPSfkXvltqN42W1Zuo= -k8s.io/cri-client v0.32.2/go.mod h1:fRZhmmZW16Qviln8hfy+e8dd2wP/n9B6TiGxLE3zBe0= -k8s.io/csi-translation-lib v0.32.2 h1:aLzAyaoJUc5rgtLi8Xd4No1tet6UpvUsGIgRoGnPSSE= -k8s.io/csi-translation-lib v0.32.2/go.mod h1:PlOKan6Vc0G6a+giQbm36plJ+E1LH+GPRLAVMQMSMcY= -k8s.io/dynamic-resource-allocation v0.32.2 h1:6wP8/GGvhhvTJLrzwPSoMJDnspmosFj1CKmfrAH6m5U= -k8s.io/dynamic-resource-allocation v0.32.2/go.mod h1:+3qnQfvikLHVZrdZ0/gYkRiV96weUR9j7+Ph3Ui/hYU= +k8s.io/api v0.32.7 h1:CBhHkoi3YJW8QQI6VL/Hu9f1HHVImmuIh513d4H4VfQ= +k8s.io/api v0.32.7/go.mod h1:YEB46LZ/M0/9t0m+R2FxW5fkZAUR/eoS6sZQKS3mBYk= +k8s.io/apiextensions-apiserver v0.32.7 h1:w7IzqA3SZG9KNm5YMtrrqY3ipPgt13rZevDaZSubARA= +k8s.io/apiextensions-apiserver v0.32.7/go.mod h1:CelzsiBUTLZeJ+MxBEcuDEgu9Qr3LQkZqmydvA/W9UA= +k8s.io/apimachinery v0.32.7 h1:1vTegNQIfM7dvZrMV5//6jJv2odKAnadv9Bg+doJmaA= +k8s.io/apimachinery v0.32.7/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/apiserver v0.32.7 h1:BJADFQpbKM1LC5GTueefdnDjzu5PUXAcEgWZrs2gj18= +k8s.io/apiserver v0.32.7/go.mod h1:a3O36FgT3dQ26oufk9/1VVmWcna/OLQjofirYiocfQI= +k8s.io/client-go v0.32.7 h1:ZDhv3JTaQ/IejnNXRePBZdRecAEvxf8+pFdt/ruuWXc= +k8s.io/client-go v0.32.7/go.mod h1:/he4Akuzee/lTiWmcsrpZfCQ2LPNLTC2qqumLVAw/Fw= +k8s.io/cloud-provider v0.32.7 h1:81n3e4FGuP68KbEJlVO8L1EMHCx7eQxkfzC9imQFzlY= +k8s.io/cloud-provider v0.32.7/go.mod h1:rwtQrju5yQGBe6kiHjg3NztcBal8wNHV5EonmldUPss= +k8s.io/component-base v0.32.7 h1:iXfcDveIsx0CyB0b8qo0/4pfgmhwshaO/u4ij1hZeAM= +k8s.io/component-base v0.32.7/go.mod h1:Qfa6+z8IIyIdyqewerOlWaibCsxKbpBNd3ATNrPKe/A= +k8s.io/component-helpers v0.32.7 h1:JNbuCz1BG0yj0EIx1ez2g/czmflksb8yy1jNd59Og0w= +k8s.io/component-helpers v0.32.7/go.mod h1:vbUT/zEqcd5QSPTZdC9cjQwgkCrjfBohQGHEWK6Ned4= +k8s.io/controller-manager v0.32.7 h1:Iz2QQNRABr2/Mg39rPPVx7cYwiLzHWJOl58C9jLhTqI= +k8s.io/controller-manager v0.32.7/go.mod h1:4mX3GpBhYjBWFoCJ9pD2A3Vkc+ljrheczQlOXHvQmEY= +k8s.io/cri-api v0.32.7 h1:y9uecUIxheAqEqfyuyTfEW9zV7HIMxA8ABG+vqyTQlc= +k8s.io/cri-api v0.32.7/go.mod h1:DCzMuTh2padoinefWME0G678Mc3QFbLMF2vEweGzBAI= +k8s.io/cri-client v0.32.7 h1:sE1NcfMk0+qORQiAk6GzmIILMpvfjLG/SGc6aTeOTZA= +k8s.io/cri-client v0.32.7/go.mod h1:+30i9F5mLvO9AfVEFAenkWllraMR7MG3Cie2zVn+6NU= +k8s.io/csi-translation-lib v0.32.7 h1:rMefCiDWa3b/RWczM0GN2ahJTVPYXyoazxZCaiLrAPc= +k8s.io/csi-translation-lib v0.32.7/go.mod h1:05iIDF0dixCHwkJoI+j84SBxgQerGjXlIX+467rFre8= +k8s.io/dynamic-resource-allocation v0.32.7 h1:nGXrvL9DAXVHOwCBVevJ3V2eKXEQ/uw6fbTzyoN6xyo= +k8s.io/dynamic-resource-allocation v0.32.7/go.mod h1:aGng8dXxPEKWcqRcjZ+zrtsF1o5LLHGRzGDqBjgGtm0= k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kms v0.32.2 h1:7Ff23ht7W40gTcDwUC8G5WjX5W/nxD8WxbNhIYYNZCI= -k8s.io/kms v0.32.2/go.mod h1:Bk2evz/Yvk0oVrvm4MvZbgq8BD34Ksxs2SRHn4/UiOM= +k8s.io/kms v0.32.7 h1:9naij6wpzt/w4oOCZmt/3ohjWDnFV/AAAs7K6EXCA2g= +k8s.io/kms v0.32.7/go.mod h1:Bk2evz/Yvk0oVrvm4MvZbgq8BD34Ksxs2SRHn4/UiOM= k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= -k8s.io/kube-scheduler v0.32.2 h1:vBm6iIjWaD10OPmtkt/503LTKvrN8dWVceeBcpKj/ns= -k8s.io/kube-scheduler v0.32.2/go.mod h1:dD5yuYpnsCfgZmzvncUNPdvXGJXA1hw3gXq7DH3+aCQ= -k8s.io/kubectl v0.32.2 h1:TAkag6+XfSBgkqK9I7ZvwtF0WVtUAvK8ZqTt+5zi1Us= -k8s.io/kubectl v0.32.2/go.mod h1:+h/NQFSPxiDZYX/WZaWw9fwYezGLISP0ud8nQKg+3g8= -k8s.io/kubelet v0.32.2 h1:WFTSYdt3BB1aTApDuKNI16x/4MYqqX8WBBBBh3KupDg= -k8s.io/kubelet v0.32.2/go.mod h1:cC1ms5RS+lu0ckVr6AviCQXHLSPKEBC3D5oaCBdTGkI= -k8s.io/kubernetes v1.32.2 h1:mShetlA102UpjRVSGzB+5vjJwy8oPy8FMWrkTH5f37o= -k8s.io/kubernetes v1.32.2/go.mod h1:tiIKO63GcdPRBHW2WiUFm3C0eoLczl3f7qi56Dm1W8I= -k8s.io/mount-utils v0.32.2 h1:aDwp+ucWiVnDr/LpRg88/dsXf/vm6gI1VZkYH3+3+Vw= -k8s.io/mount-utils v0.32.2/go.mod h1:Kun5c2svjAPx0nnvJKYQWhfeNW+O0EpzHgRhDcYoSY0= -k8s.io/pod-security-admission v0.32.2 h1:zDfAb/t0LbNU3z0ZMHtCb1zp8x05gWCGhmBYpUptm9A= -k8s.io/pod-security-admission v0.32.2/go.mod h1:yxMPB3i1pGMLfxbe4BiWMuowMD7cdHR32y4nCj4wH+s= +k8s.io/kube-scheduler v0.32.7 h1:QOvu/fNEYGg1gzzpowWHFCI8SD3vJs5Iz0qebEQADd4= +k8s.io/kube-scheduler v0.32.7/go.mod h1:ez/2BnvZv2Bq1K9LpBsDgRsTvwJLAzkcpRMfY7rhLMA= +k8s.io/kubectl v0.32.7 h1:0I9J+y4MMwn1w/U+4FZMxW55Yk8jzVBCFlC/qGZF7t0= +k8s.io/kubectl v0.32.7/go.mod h1:0xBY/uZgeqib3ffk0XLCS1SQ6aVL3rLCv9i99IAhrMU= +k8s.io/kubelet v0.32.7 h1:CUtUfKI8lTsPhJQrGv6bUDO3rgMw5mmnxgmOzLrEBfs= +k8s.io/kubelet v0.32.7/go.mod h1:i5zft911hyR0H6npwW4ePaGaU+9TW6YB4Qk6sJe1Ea8= +k8s.io/kubernetes v1.32.7 h1:izcZ6PLoXERxrzKQMNch8/9Nbedv94iTHrVjB+IJ17g= +k8s.io/kubernetes v1.32.7/go.mod h1:REY0Gok66BTTrbGyZaFMNKO9JhxvgBDW9B7aksWRFoY= +k8s.io/mount-utils v0.32.7 h1:H78ywb+gaRLtAeBR30CV1k+nOYoaDi3uVT9dNCcJhq0= +k8s.io/mount-utils v0.32.7/go.mod h1:Kun5c2svjAPx0nnvJKYQWhfeNW+O0EpzHgRhDcYoSY0= +k8s.io/pod-security-admission v0.32.7 h1:Qmfx9OxpAr6p7PILHcNLgMakNZsAasUbcHMR0RDtyCg= +k8s.io/pod-security-admission v0.32.7/go.mod h1:9CPS/urYDos+h4jfWJGWWmv8DJg+1IJQDOxf2eTy1fc= k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM= diff --git a/manifests/barbican-kms/ds.yaml b/manifests/barbican-kms/ds.yaml index 0a63d929f4..ba8795d15a 100644 --- a/manifests/barbican-kms/ds.yaml +++ b/manifests/barbican-kms/ds.yaml @@ -30,7 +30,7 @@ spec: serviceAccountName: cloud-controller-manager containers: - name: barbican-kms - image: registry.k8s.io/provider-os/barbican-kms-plugin:v1.32.0 + image: registry.k8s.io/provider-os/barbican-kms-plugin:v1.32.1 args: - /bin/barbican-kms-plugin - --socketpath=$(KMS_ENDPOINT) diff --git a/manifests/barbican-kms/pod.yaml b/manifests/barbican-kms/pod.yaml index 46dbb1629f..55fa833a8f 100644 --- a/manifests/barbican-kms/pod.yaml +++ b/manifests/barbican-kms/pod.yaml @@ -5,7 +5,7 @@ metadata: spec: containers: - name: barbican-kms - image: registry.k8s.io/provider-os/barbican-kms-plugin:v1.32.0 + image: registry.k8s.io/provider-os/barbican-kms-plugin:v1.32.1 args: - "--socketpath=/kms/kms.sock" - "--cloud-config=/etc/kubernetes/cloud-config" diff --git a/manifests/cinder-csi-plugin/cinder-csi-controllerplugin.yaml b/manifests/cinder-csi-plugin/cinder-csi-controllerplugin.yaml index 65ebee22cf..ebb026d1e6 100644 --- a/manifests/cinder-csi-plugin/cinder-csi-controllerplugin.yaml +++ b/manifests/cinder-csi-plugin/cinder-csi-controllerplugin.yaml @@ -93,7 +93,7 @@ spec: - mountPath: /var/lib/csi/sockets/pluginproxy/ name: socket-dir - name: cinder-csi-plugin - image: registry.k8s.io/provider-os/cinder-csi-plugin:v1.32.0 + image: registry.k8s.io/provider-os/cinder-csi-plugin:v1.32.1 args: - /bin/cinder-csi-plugin - "--endpoint=$(CSI_ENDPOINT)" diff --git a/manifests/cinder-csi-plugin/cinder-csi-nodeplugin.yaml b/manifests/cinder-csi-plugin/cinder-csi-nodeplugin.yaml index 6f4d86e891..39f1166432 100644 --- a/manifests/cinder-csi-plugin/cinder-csi-nodeplugin.yaml +++ b/manifests/cinder-csi-plugin/cinder-csi-nodeplugin.yaml @@ -53,7 +53,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: registry.k8s.io/provider-os/cinder-csi-plugin:v1.32.0 + image: registry.k8s.io/provider-os/cinder-csi-plugin:v1.32.1 args: - /bin/cinder-csi-plugin - "--endpoint=$(CSI_ENDPOINT)" diff --git a/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml b/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml index 9968c9b7ec..6909921a58 100644 --- a/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml +++ b/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml @@ -38,7 +38,7 @@ spec: serviceAccountName: cloud-controller-manager containers: - name: openstack-cloud-controller-manager - image: registry.k8s.io/provider-os/openstack-cloud-controller-manager:v1.32.0 + image: registry.k8s.io/provider-os/openstack-cloud-controller-manager:v1.32.1 args: - /bin/openstack-cloud-controller-manager - --v=1 diff --git a/manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml b/manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml index c6c145c35f..def3e4fda9 100644 --- a/manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml +++ b/manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml @@ -11,7 +11,7 @@ metadata: spec: containers: - name: openstack-cloud-controller-manager - image: registry.k8s.io/provider-os/openstack-cloud-controller-manager:v1.32.0 + image: registry.k8s.io/provider-os/openstack-cloud-controller-manager:v1.32.1 args: - /bin/openstack-cloud-controller-manager - --v=1 diff --git a/manifests/magnum-auto-healer/magnum-auto-healer.yaml b/manifests/magnum-auto-healer/magnum-auto-healer.yaml index 4d952e1cee..9187ea3182 100644 --- a/manifests/magnum-auto-healer/magnum-auto-healer.yaml +++ b/manifests/magnum-auto-healer/magnum-auto-healer.yaml @@ -88,7 +88,7 @@ spec: node-role.kubernetes.io/control-plane: "" containers: - name: magnum-auto-healer - image: registry.k8s.io/provider-os/magnum-auto-healer:v1.32.0 + image: registry.k8s.io/provider-os/magnum-auto-healer:v1.32.1 imagePullPolicy: Always args: - /bin/magnum-auto-healer diff --git a/manifests/manila-csi-plugin/csi-controllerplugin.yaml b/manifests/manila-csi-plugin/csi-controllerplugin.yaml index 84dbf840c9..3d7ef9d515 100644 --- a/manifests/manila-csi-plugin/csi-controllerplugin.yaml +++ b/manifests/manila-csi-plugin/csi-controllerplugin.yaml @@ -78,7 +78,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: registry.k8s.io/provider-os/manila-csi-plugin:v1.32.0 + image: registry.k8s.io/provider-os/manila-csi-plugin:v1.32.1 command: ["/bin/sh", "-c", '/bin/manila-csi-plugin --endpoint=$(CSI_ENDPOINT) diff --git a/manifests/manila-csi-plugin/csi-nodeplugin.yaml b/manifests/manila-csi-plugin/csi-nodeplugin.yaml index 9ee75c8d11..6ad4d72bf5 100644 --- a/manifests/manila-csi-plugin/csi-nodeplugin.yaml +++ b/manifests/manila-csi-plugin/csi-nodeplugin.yaml @@ -50,7 +50,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: registry.k8s.io/provider-os/manila-csi-plugin:v1.32.0 + image: registry.k8s.io/provider-os/manila-csi-plugin:v1.32.1 command: ["/bin/sh", "-c", '/bin/manila-csi-plugin --endpoint=$(CSI_ENDPOINT) diff --git a/pkg/csi/cinder/driver.go b/pkg/csi/cinder/driver.go index 04356a0eba..047572242e 100644 --- a/pkg/csi/cinder/driver.go +++ b/pkg/csi/cinder/driver.go @@ -101,7 +101,7 @@ func NewDriver(o *DriverOpts) *Driver { klog.Info("Driver: ", d.name) klog.Info("Driver version: ", d.fqVersion) klog.Info("CSI Spec version: ", specVersion) - klog.Infof("Topology awareness: %T", d.withTopology) + klog.Infof("Topology awareness: %t", d.withTopology) d.AddControllerServiceCapabilities( []csi.ControllerServiceCapability_RPC_Type{ diff --git a/pkg/csi/cinder/identityserver.go b/pkg/csi/cinder/identityserver.go index 3db28c04a5..ca30bc10b8 100644 --- a/pkg/csi/cinder/identityserver.go +++ b/pkg/csi/cinder/identityserver.go @@ -53,36 +53,39 @@ func (ids *identityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*c func (ids *identityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { klog.V(5).Infof("GetPluginCapabilities called with req %+v", req) - return &csi.GetPluginCapabilitiesResponse{ - Capabilities: []*csi.PluginCapability{ - { - Type: &csi.PluginCapability_Service_{ - Service: &csi.PluginCapability_Service{ - Type: csi.PluginCapability_Service_CONTROLLER_SERVICE, - }, + caps := []*csi.PluginCapability{ + { + Type: &csi.PluginCapability_Service_{ + Service: &csi.PluginCapability_Service{ + Type: csi.PluginCapability_Service_CONTROLLER_SERVICE, }, }, - { - Type: &csi.PluginCapability_Service_{ - Service: &csi.PluginCapability_Service{ - Type: csi.PluginCapability_Service_VOLUME_ACCESSIBILITY_CONSTRAINTS, - }, + }, + { + Type: &csi.PluginCapability_VolumeExpansion_{ + VolumeExpansion: &csi.PluginCapability_VolumeExpansion{ + Type: csi.PluginCapability_VolumeExpansion_ONLINE, }, }, - { - Type: &csi.PluginCapability_VolumeExpansion_{ - VolumeExpansion: &csi.PluginCapability_VolumeExpansion{ - Type: csi.PluginCapability_VolumeExpansion_ONLINE, - }, + }, + { + Type: &csi.PluginCapability_VolumeExpansion_{ + VolumeExpansion: &csi.PluginCapability_VolumeExpansion{ + Type: csi.PluginCapability_VolumeExpansion_OFFLINE, }, }, - { - Type: &csi.PluginCapability_VolumeExpansion_{ - VolumeExpansion: &csi.PluginCapability_VolumeExpansion{ - Type: csi.PluginCapability_VolumeExpansion_OFFLINE, - }, + }, + } + + if ids.Driver.withTopology { + caps = append(caps, &csi.PluginCapability{ + Type: &csi.PluginCapability_Service_{ + Service: &csi.PluginCapability_Service{ + Type: csi.PluginCapability_Service_VOLUME_ACCESSIBILITY_CONSTRAINTS, }, }, - }, - }, nil + }) + } + + return &csi.GetPluginCapabilitiesResponse{Capabilities: caps}, nil } diff --git a/pkg/csi/cinder/openstack/openstack_volumes.go b/pkg/csi/cinder/openstack/openstack_volumes.go index c57b1443d1..e9fb52318e 100644 --- a/pkg/csi/cinder/openstack/openstack_volumes.go +++ b/pkg/csi/cinder/openstack/openstack_volumes.go @@ -40,6 +40,7 @@ import ( const ( VolumeAvailableStatus = "available" VolumeInUseStatus = "in-use" + VolumeDetachingStatus = "detaching" operationFinishInitDelay = 1 * time.Second operationFinishFactor = 1.1 operationFinishSteps = 10 @@ -301,6 +302,11 @@ func (os *OpenStack) DetachVolume(ctx context.Context, instanceID, volumeID stri klog.V(2).Infof("volume: %s has been detached from compute: %s ", volume.ID, instanceID) return nil } + // If the volume is already in detaching state, we can return nil + if volume.Status == VolumeDetachingStatus { + klog.V(2).Infof("volume: %s is already in detaching state from compute %s ", volume.ID, instanceID) + return nil + } if volume.Status != VolumeInUseStatus { return fmt.Errorf("can not detach volume %s, its status is %s", volume.Name, volume.Status) diff --git a/pkg/csi/manila/driver.go b/pkg/csi/manila/driver.go index e39277ce0a..30d1b1f5d3 100644 --- a/pkg/csi/manila/driver.go +++ b/pkg/csi/manila/driver.go @@ -130,7 +130,7 @@ func NewDriver(o *DriverOpts) (*Driver, error) { klog.Info("Driver: ", d.name) klog.Info("Driver version: ", d.fqVersion) klog.Info("CSI spec version: ", specVersion) - klog.Infof("Topology awareness: %T", d.withTopology) + klog.Infof("Topology awareness: %t", d.withTopology) getShareAdapter(d.shareProto) // The program will terminate with a non-zero exit code if the share protocol selector is wrong klog.Infof("Operating on %s shares", d.shareProto) diff --git a/pkg/csi/manila/identityserver.go b/pkg/csi/manila/identityserver.go index 7ff85cac8c..156372d3c4 100644 --- a/pkg/csi/manila/identityserver.go +++ b/pkg/csi/manila/identityserver.go @@ -22,6 +22,7 @@ import ( "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "k8s.io/klog/v2" ) type identityServer struct { @@ -30,10 +31,16 @@ type identityServer struct { } func (ids *identityServer) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error) { + klog.V(5).Infof("Using default GetPluginInfo") + if ids.d.name == "" { return nil, status.Error(codes.Unavailable, "Driver name not configured") } + if ids.d.fqVersion == "" { + return nil, status.Error(codes.Unavailable, "Driver is missing version") + } + return &csi.GetPluginInfoResponse{ Name: ids.d.name, VendorVersion: ids.d.fqVersion, @@ -51,6 +58,7 @@ func (ids *identityServer) Probe(ctx context.Context, req *csi.ProbeRequest) (*c } func (ids *identityServer) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error) { + klog.V(5).Infof("GetPluginCapabilities called with req %+v", req) caps := []*csi.PluginCapability{ { Type: &csi.PluginCapability_Service_{ diff --git a/pkg/identity/keystone/authenticator.go b/pkg/identity/keystone/authenticator.go index 6776799698..040b98339f 100644 --- a/pkg/identity/keystone/authenticator.go +++ b/pkg/identity/keystone/authenticator.go @@ -66,6 +66,9 @@ func (k *Keystoner) GetTokenInfo(ctx context.Context, token string) (*tokenInfo, if err != nil { return nil, fmt.Errorf("failed to extract project information from Keystone response: %v", err) } + if project == nil { + return nil, fmt.Errorf("failed to extract project information from Keystone response") + } roles, err := ret.ExtractRoles() if err != nil { diff --git a/pkg/kms/barbican/barbican.go b/pkg/kms/barbican/barbican.go index ab36c8c3c8..ed5269d5eb 100644 --- a/pkg/kms/barbican/barbican.go +++ b/pkg/kms/barbican/barbican.go @@ -2,11 +2,13 @@ package barbican import ( "context" + "os" "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack" "github.com/gophercloud/gophercloud/v2/openstack/keymanager/v1/secrets" "k8s.io/cloud-provider-openstack/pkg/client" + "k8s.io/klog/v2" ) type KMSOpts struct { @@ -26,6 +28,17 @@ type Barbican struct { // NewBarbicanClient creates new BarbicanClient func NewBarbicanClient(cfg Config) (*gophercloud.ServiceClient, error) { + if cfg.Global.UseClouds { + if cfg.Global.CloudsFile != "" { + os.Setenv("OS_CLIENT_CONFIG_FILE", cfg.Global.CloudsFile) + } + if err := client.ReadClouds(&cfg.Global); err != nil { + return nil, err + } + klog.V(5).Infof("Config, loaded from the %s:", cfg.Global.CloudsFile) + client.LogCfg(cfg.Global) + } + provider, err := client.NewOpenStackClient(&cfg.Global, "barbican-kms-plugin") if err != nil { return nil, err diff --git a/pkg/openstack/loadbalancer.go b/pkg/openstack/loadbalancer.go index 03afff336f..8a48765743 100644 --- a/pkg/openstack/loadbalancer.go +++ b/pkg/openstack/loadbalancer.go @@ -1539,15 +1539,16 @@ func (lbaas *LbaasV2) checkService(ctx context.Context, service *corev1.Service, func (lbaas *LbaasV2) makeSvcConf(ctx context.Context, serviceName string, service *corev1.Service, svcConf *serviceConfig) error { svcConf.connLimit = getIntFromServiceAnnotation(service, ServiceAnnotationLoadBalancerConnLimit, -1) svcConf.lbID = getStringFromServiceAnnotation(service, ServiceAnnotationLoadBalancerID, "") + svcConf.poolLbMethod = getStringFromServiceAnnotation(service, ServiceAnnotationLoadBalancerLbMethod, "") svcConf.supportLBTags = openstackutil.IsOctaviaFeatureSupported(ctx, lbaas.lb, openstackutil.OctaviaFeatureTags, lbaas.opts.LBProvider) // Get service node-selector annotations svcConf.nodeSelectors = getKeyValueFromServiceAnnotation(service, ServiceAnnotationLoadBalancerNodeSelector, lbaas.opts.NodeSelector) for key, value := range svcConf.nodeSelectors { if value == "" { - klog.V(3).InfoS("Target node label %s key is set to LoadBalancer service %s", key, serviceName) + klog.V(3).Infof("Target node label %s key is set to LoadBalancer service %s", key, serviceName) } else { - klog.V(3).InfoS("Target node label %s=%s is set to LoadBalancer service %s", key, value, serviceName) + klog.V(3).Infof("Target node label %s=%s is set to LoadBalancer service %s", key, value, serviceName) } } diff --git a/tests/ci-csi-cinder-e2e.sh b/tests/ci-csi-cinder-e2e.sh index 2c5bbfe33d..a1e0bbfca1 100755 --- a/tests/ci-csi-cinder-e2e.sh +++ b/tests/ci-csi-cinder-e2e.sh @@ -41,6 +41,24 @@ cleanup() { } trap cleanup EXIT +# Install Ansible from Trixie (Debian Testing) to allow us to talk to a host +# running Python 3.12 like Ubuntu 24.04 +# +# https://woju.eu/blog/2025/03/ansible-bookworm/ +cat << EOF > /etc/apt/sources.list.d/trixie.list +deb https://deb.debian.org/debian trixie main +EOF + +cat << EOF > /etc/apt/preferences.d/ansible.pref +Package: * +Pin: release n=trixie +Pin-Priority: -10 + +Package: ansible* python3-netaddr +Pin: release n=trixie +Pin-Priority: 990 +EOF + apt-get update apt-get install -y python3-requests ansible diff --git a/tests/ci-csi-manila-e2e.sh b/tests/ci-csi-manila-e2e.sh index 7b285320ea..d6be16b35c 100755 --- a/tests/ci-csi-manila-e2e.sh +++ b/tests/ci-csi-manila-e2e.sh @@ -41,6 +41,24 @@ cleanup() { } trap cleanup EXIT +# Install Ansible from Trixie (Debian Testing) to allow us to talk to a host +# running Python 3.12 like Ubuntu 24.04 +# +# https://woju.eu/blog/2025/03/ansible-bookworm/ +cat << EOF > /etc/apt/sources.list.d/trixie.list +deb https://deb.debian.org/debian trixie main +EOF + +cat << EOF > /etc/apt/preferences.d/ansible.pref +Package: * +Pin: release n=trixie +Pin-Priority: -10 + +Package: ansible* python3-netaddr +Pin: release n=trixie +Pin-Priority: 990 +EOF + apt-get update apt-get install -y python3-requests ansible diff --git a/tests/ci-occm-e2e.sh b/tests/ci-occm-e2e.sh index 4e60b2d363..230f74b4bd 100755 --- a/tests/ci-occm-e2e.sh +++ b/tests/ci-occm-e2e.sh @@ -42,6 +42,24 @@ cleanup() { } trap cleanup EXIT +# Install Ansible from Trixie (Debian Testing) to allow us to talk to a host +# running Python 3.12 like Ubuntu 24.04 +# +# https://woju.eu/blog/2025/03/ansible-bookworm/ +cat << EOF > /etc/apt/sources.list.d/trixie.list +deb https://deb.debian.org/debian trixie main +EOF + +cat << EOF > /etc/apt/preferences.d/ansible.pref +Package: * +Pin: release n=trixie +Pin-Priority: -10 + +Package: ansible* python3-netaddr +Pin: release n=trixie +Pin-Priority: 990 +EOF + apt-get update apt-get install -y python3-requests ansible @@ -133,4 +151,4 @@ scp -i ~/.ssh/google_compute_engine \ # If Boskos is being used then release the resource back to Boskos. [ -z "${BOSKOS_HOST:-}" ] || python3 tests/scripts/boskos.py --release >> "$ARTIFACTS/logs/boskos.log" 2>&1 -exit ${exit_code} \ No newline at end of file +exit ${exit_code} 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/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, diff --git a/tests/playbooks/roles/install-cpo-occm/tasks/main.yaml b/tests/playbooks/roles/install-cpo-occm/tasks/main.yaml index c8cbc304cf..cfd889da1b 100644 --- a/tests/playbooks/roles/install-cpo-occm/tasks/main.yaml +++ b/tests/playbooks/roles/install-cpo-occm/tasks/main.yaml @@ -128,7 +128,7 @@ msg: *failmsg - name: Run functional tests for openstack-cloud-controller-manager - when: run_e2e + when: run_e2e | bool register: run_tests shell: executable: /bin/bash @@ -145,7 +145,7 @@ - name: Print logs for debugging when: - - run_e2e + - run_e2e | bool - run_tests.failed block: - name: Show openstack-cloud-controller-manager pod logs diff --git a/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml b/tests/playbooks/roles/install-csi-cinder/tasks/main.yaml index d97ce32426..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 @@ -187,15 +197,15 @@ -storage.testdriver=tests/e2e/csi/cinder/test-driver.yaml \ --ginkgo.focus='External.Storage' \ --ginkgo.skip='\[Disruptive\]|\[Testpattern:\s+Dynamic\s+PV\s+\(default\s+fs\)\]\s+provisioning\s+should\s+mount\s+multiple\s+PV\s+pointing\s+to\s+the\s+same\s+storage\s+on\s+the\s+same\s+node|\[Testpattern:\s+Dynamic\s+PV\s+\(default\s+fs\)\]\s+provisioning\s+should\s+provision\s+storage\s+with\s+any\s+volume\s+data\s+source\s+\[Serial\]|should\s+support\s+expansion\s+of\s+pvcs\s+created\s+for\s+ephemeral\s+pvcs' \ + --ginkgo.v \ --ginkgo.noColor \ --ginkgo.progress \ - --ginkgo.v \ - --ginkgo.timeout=24h \ + --ginkgo.timeout=1h45m \ -test.timeout=0 \ -report-dir="/var/log/csi-pod" | tee "/var/log/csi-pod/cinder-csi-e2e.log" register: functional_test_result ignore_errors: true - async: 5400 # wait 1h30m then fail and fetch the logs + async: 6600 # wait 1h50m (i.e. 5 mins longer than the ginkgo timeout) then fail and fetch the logs poll: 15 - name: Collect pod logs for debug purpose diff --git a/tests/playbooks/roles/install-csi-manila/tasks/main.yaml b/tests/playbooks/roles/install-csi-manila/tasks/main.yaml index 99fd24d231..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 @@ -227,21 +237,23 @@ set +x; source {{ devstack_workdir }}/openrc demo demo > /dev/null; set -x cd {{ ansible_user_dir }}/src/k8s.io/cloud-provider-openstack - - # GATEWAY_IP is the default value in devstack mkdir -p /var/log/csi-pod + # GATEWAY_IP is the default value in devstack GATEWAY_IP=172.24.5.1 \ OS_RC={{ devstack_workdir }}/openrc \ go test -v ./cmd/tests/manila-csi-e2e-suite/manila_csi_e2e_suite_test.go \ + --ginkgo.focus="\[manila-csi-e2e\]" \ + --ginkgo.skip="\[Disruptive\]|\[sig-storage\]\s+\[manila-csi-e2e\]\s+CSI\s+Volumes\s+\[Driver:\s+nfs.manila.csi.openstack.org\]\s+\[Testpattern:\s+Dynamic\s+PV\s+\(default\s+fs\)\]\s+provisioning\s+should\s+provision\s+storage\s+with\s+any\s+volume\s+data\s+source\s+\[Serial\]|should\s+provision\s+storage\s+with\s+snapshot\s+data\s+source|restoring\s+snapshot\s+to\s+larger\s+size" \ --ginkgo.v \ --ginkgo.noColor \ --ginkgo.progress \ - --ginkgo.skip="\[Disruptive\]|\[sig-storage\]\s+\[manila-csi-e2e\]\s+CSI\s+Volumes\s+\[Driver:\s+nfs.manila.csi.openstack.org\]\s+\[Testpattern:\s+Dynamic\s+PV\s+\(default\s+fs\)\]\s+provisioning\s+should\s+provision\s+storage\s+with\s+any\s+volume\s+data\s+source\s+\[Serial\]|should\s+provision\s+storage\s+with\s+snapshot\s+data\s+source|restoring\s+snapshot\s+to\s+larger\s+size" \ - --ginkgo.focus="\[manila-csi-e2e\]" \ - -report-dir /var/log/csi-pod \ - -timeout=0 | tee "/var/log/csi-pod/manila-csi-e2e.log" + --ginkgo.timeout=1h45m \ + -timeout=0 \ + -report-dir /var/log/csi-pod | tee "/var/log/csi-pod/manila-csi-e2e.log" register: functional_test_result ignore_errors: true + async: 6600 # wait 1h50m (i.e. 5 mins longer than the ginkgo timeout) then fail and fetch the logs + poll: 15 - name: Collect pod logs for debug purpose shell: diff --git a/tests/playbooks/roles/install-devstack/defaults/main.yaml b/tests/playbooks/roles/install-devstack/defaults/main.yaml index 5812d9c97e..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/2023.2" +branch: "stable/2025.2" enable_services: - nova - glance @@ -10,6 +10,6 @@ enable_services: - octavia - ovn-octavia - barbican -octavia_amphora_url: "https://tarballs.opendev.org/openstack/octavia/test-images/test-only-amphora-x64-haproxy-ubuntu-jammy.qcow2" +octavia_amphora_url: "https://tarballs.opendev.org/openstack/octavia/test-images/test-only-amphora-x64-haproxy-ubuntu-noble.qcow2" octavia_amphora_dir: /opt/octavia-amphora octavia_amphora_filename: amphora-x64-haproxy.qcow2 diff --git a/tests/playbooks/roles/install-devstack/tasks/main.yml b/tests/playbooks/roles/install-devstack/tasks/main.yml index 1115520321..6a8f07969b 100644 --- a/tests/playbooks/roles/install-devstack/tasks/main.yml +++ b/tests/playbooks/roles/install-devstack/tasks/main.yml @@ -115,3 +115,37 @@ cmd: | set -ex sudo -u {{ user }} -H ./stack.sh + + - name: Create volumev3 service type + shell: + executable: /bin/bash + chdir: "{{ workdir }}" + cmd: | + set -ex + export OS_CLOUD=devstack-admin + if openstack service show volumev3 > /dev/null 2>&1; then + echo "Service volumev3 already exists" + exit 0 + fi + URL="$(openstack endpoint list --service block-storage -f value -c URL || true)" + if [ -z "${URL}" ]; then + exit 0 + fi + openstack service create --name cinder volumev3 + openstack endpoint create --region RegionOne volumev3 public "${URL}" + + # FIXME(stephenfin): We should remove this as soon as [1] merges and we + # bump our dependencies to include it. + # [1] https://github.com/gophercloud/gophercloud/pull/3435 + - name: Delete legacy manila endpoint + shell: + executable: /bin/bash + chdir: "{{ workdir }}" + cmd: | + set -ex + export OS_CLOUD=devstack-admin + + # delete legacy manila API endpoints + if openstack service show manila > /dev/null 2>&1; then + openstack service delete manila + fi diff --git a/tests/playbooks/roles/install-devstack/templates/local.conf.j2 b/tests/playbooks/roles/install-devstack/templates/local.conf.j2 index 42d61a882d..e54564412c 100644 --- a/tests/playbooks/roles/install-devstack/templates/local.conf.j2 +++ b/tests/playbooks/roles/install-devstack/templates/local.conf.j2 @@ -3,7 +3,6 @@ RECLONE=False HOST_IP={{ local_ip_address }} DEST=/opt/stack DATA_DIR=${DEST}/data -USE_PYTHON3=True LOGFILE=$DEST/logs/stack.sh.log VERBOSE=True LOG_COLOR=False @@ -49,6 +48,7 @@ enable_service n-cond enable_service n-sch enable_service n-api-meta +# Placement enable_service placement-api enable_service placement-client {% endif %} @@ -101,7 +101,6 @@ enable_service o-hk enable_service o-da enable_service o-api -LIBS_FROM_GIT+=,python-octaviaclient DIB_REPOLOCATION_amphora_agent=https://github.com/openstack/octavia.git DIB_REPOLOCATION_octavia_lib=https://github.com/openstack/octavia-lib.git @@ -121,8 +120,6 @@ enable_plugin ovn-octavia-provider https://opendev.org/openstack/ovn-octavia-pro # Barbican enable_plugin barbican ${GIT_BASE}/openstack/barbican.git {{ branch }} enable_service barbican-vault - -LIBS_FROM_GIT+=,python-barbicanclient {% endif %} {% if "manila" in enable_services %} @@ -151,6 +148,16 @@ if [ -f /opt/stack/data/venv/bin/activate ]; then deactivate fi +{% if "nova" in enable_services %} +[[post-config|$NOVA_CONF]] +[libvirt] +# Workaround for nova bug #2119114. Until that bug is resolved, Nova will +# always timeout when detaching volumes (which affects deletion of PVCs) +# +# https://bugs.launchpad.net/nova/+bug/2119114 +device_detach_timeout = 1 +{% endif %} + {% if "glance" in enable_services %} [[post-config|$GLANCE_API_CONF]] [glance_store] 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 diff --git a/tests/playbooks/test-occm-e2e.yaml b/tests/playbooks/test-occm-e2e.yaml index af5a3cd61e..058796b03c 100644 --- a/tests/playbooks/test-occm-e2e.yaml +++ b/tests/playbooks/test-occm-e2e.yaml @@ -25,5 +25,5 @@ - role: install-k3s worker_node_count: 0 - role: install-cpo-occm - run_e2e: "{{ run_e2e }}" + run_e2e: "{{ run_e2e | bool }}" octavia_provider: "{{ octavia_provider }}" diff --git a/tests/scripts/create-gce-vm.sh b/tests/scripts/create-gce-vm.sh index ad0e90fb7f..9f861e665b 100755 --- a/tests/scripts/create-gce-vm.sh +++ b/tests/scripts/create-gce-vm.sh @@ -91,17 +91,18 @@ main() { case "${FLAVOR}" in "default") - if ! gcloud compute disks describe devstack-${FLAVOR} --zone "${GCP_ZONE}" > /dev/null 2>&1; + local disk_name="devstack-${FLAVOR}-ubuntu2404" + if ! gcloud compute disks describe "${disk_name}" --zone "${GCP_ZONE}" > /dev/null 2>&1; then - gcloud compute disks create devstack-${FLAVOR} \ + gcloud compute disks create "${disk_name}" \ --image-project ubuntu-os-cloud --image-family ubuntu-2404-lts-amd64 \ --zone "${GCP_ZONE}" fi - if ! gcloud compute images describe devstack-${FLAVOR} > /dev/null 2>&1; + if ! gcloud compute images describe "${disk_name}" > /dev/null 2>&1; then - gcloud compute images create devstack-${FLAVOR} \ - --source-disk devstack-${FLAVOR} --source-disk-zone "${GCP_ZONE}" \ + gcloud compute images create "${disk_name}" \ + --source-disk "${disk_name}" --source-disk-zone "${GCP_ZONE}" \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx" fi ;; @@ -115,7 +116,7 @@ main() { then gcloud compute instances create devstack \ --zone "${GCP_ZONE}" \ - --image devstack-${FLAVOR} \ + --image "${disk_name}" \ --boot-disk-size 30G \ --boot-disk-type pd-ssd \ --can-ip-forward \ diff --git a/tools/csi-deps-check.sh b/tools/csi-deps-check.sh index 097c409e39..80b3b1baba 100755 --- a/tools/csi-deps-check.sh +++ b/tools/csi-deps-check.sh @@ -21,6 +21,7 @@ set -o errexit # This utils are using by # go mod k8s.io/mount-utils +/bin/sh -c true /bin/mount -V /bin/umount -V /sbin/blkid -V diff --git a/tools/csi-deps.sh b/tools/csi-deps.sh index d902ef62a8..a78f8d6a78 100755 --- a/tools/csi-deps.sh +++ b/tools/csi-deps.sh @@ -62,6 +62,10 @@ else mkdir -p ${DEST}/lib64 && cp -Lv /lib64/ld-linux-*.so.* ${DEST}/lib64/ fi +# Copy POSIX shell +copy_deps /bin/dash +copy_deps /bin/sh + # To collect dmesg logs copy_deps /usr/bin/dmesg || true copy_deps /bin/dmesg || true