From d1871456b9a9343399b1a08432c84c7ee88871c8 Mon Sep 17 00:00:00 2001 From: Luca Miccini Date: Fri, 20 Mar 2026 14:01:07 +0100 Subject: [PATCH 1/2] Drop rabbitmq-cluster-operator and add rabbitmq version label Co-Authored-By: Claude Opus 4.6 --- Makefile | 1 - ....openstack.org_openstackcontrolplanes.yaml | 54 +- .../core.openstack.org_openstackversions.yaml | 4 + .../operator.openstack.org_openstacks.yaml | 1 - api/core/v1beta1/openstackversion_types.go | 3 +- api/core/v1beta1/zz_generated.deepcopy.go | 5 + api/go.mod | 3 +- api/go.sum | 74 +- api/operator/v1beta1/openstack_types.go | 18 +- bindata/crds/crds.yaml | 58 +- .../crds/rabbitmq.com_rabbitmqclusters.yaml | 5378 ----------------- .../rabbitmq.openstack.org_rabbitmqs.yaml | 341 +- bindata/operator/rabbit.yaml | 57 - bindata/rbac/infra-operator-rbac.yaml | 22 +- .../rbac/rabbitmq-cluster-operator-rbac.yaml | 203 - ....openstack.org_openstackcontrolplanes.yaml | 54 +- .../core.openstack.org_openstackversions.yaml | 4 + .../operator.openstack.org_openstacks.yaml | 1 - config/operator/default_images.yaml | 2 +- config/operator/manager_operator_images.yaml | 4 +- config/operator/rabbit.yaml | 57 - go.mod | 2 + go.sum | 88 +- hack/export_operator_related_images.sh | 3 +- hack/export_related_images.sh | 2 +- hack/pin-bundle-images.sh | 5 - hack/sync-bindata.sh | 9 +- .../operator/openstack_controller.go | 127 +- internal/openstack/rabbitmq.go | 10 +- internal/openstack/version.go | 3 + .../05-cleanup.yaml | 3 + .../05-cleanup.yaml | 2 + .../ctlplane-basic-deployment/05-cleanup.yaml | 2 + .../tests/ctlplane-collapsed/02-cleanup.yaml | 3 + .../ctlplane-galera-3replicas/02-cleanup.yaml | 2 + .../ctlplane-nodeselectors/05-cleanup.yaml | 2 + .../03-cleanup.yaml | 2 + .../05-cleanup.yaml | 2 + .../05-cleanup.yaml | 2 + .../11-cleanup.yaml | 2 + .../ctlplane-tls-custom-route/05-cleanup.yaml | 2 + 41 files changed, 549 insertions(+), 6068 deletions(-) delete mode 100644 bindata/crds/rabbitmq.com_rabbitmqclusters.yaml delete mode 100644 bindata/operator/rabbit.yaml delete mode 100644 bindata/rbac/rabbitmq-cluster-operator-rbac.yaml delete mode 100644 config/operator/rabbit.yaml diff --git a/Makefile b/Makefile index 7de3aeac6..04a26810b 100644 --- a/Makefile +++ b/Makefile @@ -166,7 +166,6 @@ bindata: kustomize yq ## Call sync bindata script sed -i bindata/operator/operator.yaml -e "/customRequests/c\\ cpu: {{ .OpenStackOperator.Deployment.Manager.Resources.Requests.CPU }}\n memory: {{ .OpenStackOperator.Deployment.Manager.Resources.Requests.Memory }}" sed -i bindata/operator/operator.yaml -e "/customTolerations/c\\ tolerations:\n{{- range .OpenStackOperator.Deployment.Tolerations }}\n - key: \"{{ .Key }}\"\n{{- if .Operator }}\n operator: \"{{ .Operator }}\"\n{{- end }}\n{{- if .Value }}\n value: \"{{ .Value }}\"\n{{- end }}\n{{- if .Effect }}\n effect: \"{{ .Effect }}\"\n{{- end }}\n{{- if .TolerationSeconds }}\n tolerationSeconds: {{ .TolerationSeconds }}\n{{- end }}\n{{- end }}" cp config/operator/managers.yaml bindata/operator/ - cp config/operator/rabbit.yaml bindata/operator/ $(KUSTOMIZE) build config/rbac > bindata/rbac/rbac.yaml /bin/bash hack/sync-bindata.sh diff --git a/api/bases/core.openstack.org_openstackcontrolplanes.yaml b/api/bases/core.openstack.org_openstackcontrolplanes.yaml index bce2e279e..01faa67c0 100644 --- a/api/bases/core.openstack.org_openstackcontrolplanes.yaml +++ b/api/bases/core.openstack.org_openstackcontrolplanes.yaml @@ -14138,10 +14138,25 @@ spec: x-kubernetes-list-type: atomic type: object type: object + config: + properties: + additionalConfig: + type: string + additionalPlugins: + items: + type: string + type: array + x-kubernetes-list-type: atomic + advancedConfig: + type: string + envConfig: + type: string + erlangInetConfig: + type: string + type: object delayStartSeconds: default: 30 format: int32 - minimum: 0 type: integer nodeSelector: additionalProperties: @@ -14260,9 +14275,8 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true persistence: - default: - storage: 10Gi properties: storage: anyOf: @@ -14330,23 +14344,16 @@ spec: rabbitmq: properties: additionalConfig: - maxLength: 100000 type: string additionalPlugins: items: - maxLength: 100 - pattern: ^\w+$ type: string - maxItems: 100 type: array advancedConfig: - maxLength: 100000 type: string envConfig: - maxLength: 100000 type: string erlangInetConfig: - maxLength: 2000 type: string type: object replicas: @@ -14437,27 +14444,33 @@ spec: type: string type: object ipFamilyPolicy: - enum: - - SingleStack - - PreferDualStack - - RequireDualStack type: string labels: additionalProperties: type: string type: object type: - default: ClusterIP - enum: - - ClusterIP - - LoadBalancer - - NodePort type: string type: object skipPostDeploySteps: type: boolean + storage: + properties: + storage: + anyOf: + - type: integer + - type: string + default: 10Gi + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + type: string + type: object + targetVersion: + pattern: ^\d+\.\d+(\.\d+)?$ + type: string terminationGracePeriodSeconds: - default: 604800 + default: 60 format: int64 minimum: 0 type: integer @@ -14486,6 +14499,7 @@ spec: type: string type: object type: array + x-kubernetes-list-type: atomic topologyRef: properties: name: diff --git a/api/bases/core.openstack.org_openstackversions.yaml b/api/bases/core.openstack.org_openstackversions.yaml index ae79d6c77..0ee152302 100644 --- a/api/bases/core.openstack.org_openstackversions.yaml +++ b/api/bases/core.openstack.org_openstackversions.yaml @@ -250,6 +250,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object type: object availableVersion: @@ -685,6 +687,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object trackedCustomImages: additionalProperties: diff --git a/api/bases/operator.openstack.org_openstacks.yaml b/api/bases/operator.openstack.org_openstacks.yaml index 32ea32218..3b72a29ac 100644 --- a/api/bases/operator.openstack.org_openstacks.yaml +++ b/api/bases/operator.openstack.org_openstacks.yaml @@ -141,7 +141,6 @@ spec: - openstack-baremetal - ovn - placement - - rabbitmq-cluster - swift - telemetry - test diff --git a/api/core/v1beta1/openstackversion_types.go b/api/core/v1beta1/openstackversion_types.go index 1f138156d..3a360b49a 100644 --- a/api/core/v1beta1/openstackversion_types.go +++ b/api/core/v1beta1/openstackversion_types.go @@ -177,7 +177,8 @@ type ContainerTemplate struct { // ServiceDefaults - struct that contains defaults for OSP services that can change over time // but are associated with a specific OpenStack release version type ServiceDefaults struct { - GlanceWsgi *string `json:"glanceWsgi,omitempty"` + GlanceWsgi *string `json:"glanceWsgi,omitempty"` + RabbitmqVersion *string `json:"rabbitmqVersion,omitempty"` } // OpenStackVersionStatus defines the observed state of OpenStackVersion diff --git a/api/core/v1beta1/zz_generated.deepcopy.go b/api/core/v1beta1/zz_generated.deepcopy.go index b8b1cf7fe..a5107687d 100644 --- a/api/core/v1beta1/zz_generated.deepcopy.go +++ b/api/core/v1beta1/zz_generated.deepcopy.go @@ -1763,6 +1763,11 @@ func (in *ServiceDefaults) DeepCopyInto(out *ServiceDefaults) { *out = new(string) **out = **in } + if in.RabbitmqVersion != nil { + in, out := &in.RabbitmqVersion, &out.RabbitmqVersion + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceDefaults. diff --git a/api/go.mod b/api/go.mod index b7011146a..0b5eb32d5 100644 --- a/api/go.mod +++ b/api/go.mod @@ -86,7 +86,6 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/rabbitmq/cluster-operator/v2 v2.16.0 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/spf13/pflag v1.0.9 // indirect github.com/x448/float16 v0.8.4 // indirect @@ -143,3 +142,5 @@ replace k8s.io/code-generator => k8s.io/code-generator v0.31.14 //allow-merging replace k8s.io/component-base => k8s.io/component-base v0.31.14 //allow-merging replace github.com/cert-manager/cmctl/v2 => github.com/cert-manager/cmctl/v2 v2.1.2-0.20241127223932-88edb96860cf //allow-merging + +replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de diff --git a/api/go.sum b/api/go.sum index 40d373ae4..2b44f3b9e 100644 --- a/api/go.sum +++ b/api/go.sum @@ -90,6 +90,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de h1:kapZ0xUDC+MrtXXLmqvuWQg5nxuFNoxM/EfhXhsxdnY= +github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -114,52 +116,48 @@ github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e h1:E1OdwSpqWuDPCedyUt0GEdoAE+r5TXy7YS21yNEo+2U= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e/go.mod h1:Shkl4HanLwDiiBzakv+con/aMGnVE2MAGvoKp5oyYUo= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d h1:I0irWEHQayqVYiLwrAm74WuRoOvK+vi9LYLh977uHaQ= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d/go.mod h1:CsJPeetdAsW1tWwjgeS/BTtASLrkG8WfzZnCggl1OVg= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df h1:AasR8YeZ0CfPtl1uolhb8kQmPGB3LCAPnY77Zfqp62k= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df/go.mod h1:82/md756vpv6AQhtRUkeL923qaX6Uu2sfnHdgfgJkFA= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0 h1:KRQ8YQeA6HegAeoS6qoIkxJqbGcumvH4FUyj4L1Q19g= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0/go.mod h1:eYiZSSr4liFHK3ycScT2V0egI6JXx3ffxh6kGZsP0bk= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753 h1:liEY4nDerLxsXvtmgFhSmxRtDQwXjpJY5RBIEJRKqIM= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753/go.mod h1:DLiEQFdAeeqAWDzsm19iKnnO+aLQeYeA7edIS9qlj2E= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5 h1:x0MjtALo7BqY3PD7ZmYYHVpcxpBki60f/CYpdImHt+s= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5/go.mod h1:D/clVT1Pf25PC/N2SEQiB2QQO/TF2IBCOPT5VkNkhHQ= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3 h1:t80wfV1UAjxA0ey3LHRsiJgoL6OEuBqOjqU6yvn7nOg= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3/go.mod h1:qQ7Ie2fWv5PnlffsAWlv6Y7jUgFbG0WQVZHCOgS0d/Y= -github.com/openstack-k8s-operators/infra-operator/apis v0.6.1-0.20260316100655-863ae03d41af h1:Ow12j/PVbEtul1bZ7s/ZenVnKPIHK2q+0VgTp+j/wro= -github.com/openstack-k8s-operators/infra-operator/apis v0.6.1-0.20260316100655-863ae03d41af/go.mod h1:nC/Jf3OYJRML8UEzJ/mn/TQcSCv/nhqO6x6LGkdDt60= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6 h1:8jpYazj7pGgzomNtQFL+BW5VxtDjRMfNJ7pTd53+5fw= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6/go.mod h1:y5Er36n6rjQA2Gi3dtwamhyeqWTGBIszN+ZexsvJCIo= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f h1:60I2YLHRznTY2BQXqXWc+ByJ3ipdQgKgW52t9J8C5DY= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f/go.mod h1:8o6LSPt1VAvvB2ngS2QObGS6HEikSdVpHoKIgmb78KI= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18 h1:P1Nx+i6aH7rFy+T4nrB2AlQzzoLMrMwtnZPEsFvC5cM= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eJDwc8LPJg+H4bHMLh/pDJBk+OezQ+wkjUNpExUFhbM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18 h1:9lbaamHYKiWQq/Vth69GGNxQz67qC+PbeQdkXvUEeNo= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7 h1:0iQ9FFFI1/y6m2qi2O9NLyj90KmajuZOr1FTSsPdrPw= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7/go.mod h1:O6PjMV49R7rfZyCmufUdVwiKBc5XW/dNJYSLSut/PRI= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70 h1:4REWM4l6kTOH14dsBSp/hhNdULbq3LDoCvfMWofPx4k= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70/go.mod h1:cyeexUkEIgzQ3c1vVVv/DQ3AbnECfDwKdZteKC+sZKY= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b h1:DLD0G/JbkC+ddNgHvw3/bpvDXlpFmoGdGT89+jVNiNY= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b/go.mod h1:GUSRylpcflm0a2Awsli7SHwa6ZPjL1FLvwFhu5RQ0SU= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f h1:zN73a9xm98uHpg9q/Owy/jyCyGJnrvvqdEF/UT+u328= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f/go.mod h1:FM7/Q+IjKsSOrWHzbgfEwym3XXZRWIKalpFrBbSMk6Q= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95 h1:OkoxRV9FQyBRo0MEctoKUKfS5T8D2+Z5rv92+5KWQpM= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95/go.mod h1:xhtJWduS/PTOF7xQDxDjVHRee3twrK+gzPECScMBWb4= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72 h1:Z7CzLGKRp8pg1bCK0JsO3y/NNNGd1HFKZ5XTl5xLj1M= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72/go.mod h1:TLRqdtji6ZhMcwI/uy70t8cKmIDjo/q4bjUUOYbeB+Y= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9 h1:Uk8OcXocKOb6KZ+EXnGOEjda4nNUz/Z6H3BBaH23F5s= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9/go.mod h1:8o0wLkMYyDDqZAdvU/YKMwgwiOyQzADWrmy38rZcHyE= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc h1:3r2wVspdAWx4j7ZScrukfLiPcGM7J9S/ClyOHsbY7ro= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc/go.mod h1:P0hUdNDsv8ISnK2GyFogNQF+dxatbKhtQ76UKhX6t7w= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34 h1:UgaEid1bqgUzsLg21BHtXSYOV2pljxR1Z3i1BcRVNQc= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34/go.mod h1:xEHdAz96FYfnBb1QAFgbfR2BCWCBIqhqKYT84IqU6zc= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581 h1:FntUoWPVWx8xaGCwP7kdUVT/N8Z0kfIxLLK4L+oQJ7c= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581/go.mod h1:l15wx+Qxi/I9Nlj6u6PheZqkf9dBW7cCxAcjl8zsu+8= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e h1:EXpPxBaSHBDyAXhDApotNd9AZOm/DQfvAKdrWO5W4XA= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e h1:42OT26Ak0lwWbJDNwhv/0HsjafVkLyPhfonS5DjDb2g= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e h1:lHsE9kmPzGHfO6o9vXj6f5UTIlQRJNdrvrj8GWy/ct8= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463 h1:pqCtFGMf5haCOq9KYaykKjEE2NZIJI5nECVYvW+FZbY= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463/go.mod h1:KTkOh3/8ReJdkG0NkaDGq45eCIU6aUISvWP/b59y9tA= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727 h1:+IVZR4jm1MvVeoxS75cHNOsW7sf6jGdXx7kTnOSOxiw= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727/go.mod h1:bUpTGnR9HF19rD2Ow6IU8wJk+xrBtKdeA8PFjpguEh8= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d h1:oKRiIKhr1dm1wudWqBMvLViMPlXqi8B+PQT2Mv7rsj4= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d/go.mod h1:ljfpLBr2EyNAS7W7c+CQy61UhkwALTVLWl2Mc9YTSNA= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3 h1:W85oaZBQ/XmaPshZjOi46VMkzRUmZ17WDXbWcl4S6eM= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3/go.mod h1:ZQpGqN3AszLv7OoySPuCFyrNkuOEi1lPTymhbd1gOrc= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b h1:4vBr+f5KLrvg8XUtzWJ7F7fiJXS9UFMGnbPn3/quE+I= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd h1:zBTXXBuxdMHG/sPj53Y82iRnaU73vxz7+2n0G0Z7qAQ= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd/go.mod h1:JaHfKhcBA1csj+0udv/+H4IYoewpnNVvN3B8xubA670= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6 h1:i/SOqbbRvQ/6GjkJQDxLihMeEN/8384kr29vi+hBoZg= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7 h1:f6w4xa1MM4agqab34Yv6LaHKS5eUEi7cOou9TVGtwIY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7/go.mod h1:z/ee1KhCJocHOjnFT78i26Y2xlR1a4naMa2bPdY4z/E= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7 h1:v6ZXM+e5igFCkkjSoYctFcr9mVPFXnTg4VFnvZgOPGk= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7/go.mod h1:PxLz6iV8Z3Ql2QDylxLiljfoisGptsUVWEvbcXC8I3o= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955 h1:5LJ5YAEGNRZh5hVolC23bzViQoaT1P0MgRQu9xc7RRU= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955/go.mod h1:+8lsJYJYsR8fBvgY4Wtvde4iY+l9O5PBPf6yhVQ1LQU= -github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20250929174222-a0d328fa4dec h1:saovr368HPAKHN0aRPh8h8n9s9dn3d8Frmfua0UYRlc= -github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20250929174222-a0d328fa4dec/go.mod h1:Nh2NEePLjovUQof2krTAg4JaAoLacqtPTZQXK6izNfg= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186 h1:2uSOOWJJXomiSegRgMrhbOcUQsyxEV+m7OJP4pXlCE0= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186/go.mod h1:kOdVr5xAw1jdwYJ8P9yKaqc+qbEzKhuxvOQdPfelPdg= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a h1:EgRkS/fvkrnFSlPitjxWrN3eLZJGtbwxO9VajrNDcOw= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e h1:mjuYX0PJjdZCuXzq+S4VLmZcAZ6BgcQLm7WB1DSfd14= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5 h1:QcAk6xiRA17p/9fL1VE4WzYWwoq9ycUVZahBPZBgbCo= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5/go.mod h1:Z43I0UN+6UUu7sC0nn/mjBmn3gYV27tu2O4wregSMg4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -214,8 +212,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/api/operator/v1beta1/openstack_types.go b/api/operator/v1beta1/openstack_types.go index 1918bd2a3..96b42bb51 100644 --- a/api/operator/v1beta1/openstack_types.go +++ b/api/operator/v1beta1/openstack_types.go @@ -44,7 +44,6 @@ const ( OpenStackBaremetalOperatorName = "openstack-baremetal" OvnOperatorName = "ovn" PlacementOperatorName = "placement" - RabbitMQOperatorName = "rabbitmq-cluster" SwiftOperatorName = "swift" TelemetryOperatorName = "telemetry" TestOperatorName = "test" @@ -161,21 +160,6 @@ var ( { Name: PlacementOperatorName, }, - { - Name: RabbitMQOperatorName, - ControllerManager: ContainerSpec{ - Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("5m"), - corev1.ResourceMemory: resource.MustParse("64Mi"), - }, - Limits: corev1.ResourceList{ - corev1.ResourceCPU: resource.MustParse("200m"), - corev1.ResourceMemory: resource.MustParse("500Mi"), - }, - }, - }, - }, { Name: SwiftOperatorName, }, @@ -204,7 +188,7 @@ type OpenStackSpec struct { type OperatorSpec struct { // +kubebuilder:validation:Required // +kubebuilder:validation:MinLength=1 - // +kubebuilder:validation:Enum:=openstack;barbican;cinder;designate;glance;heat;horizon;infra;ironic;keystone;manila;mariadb;neutron;nova;octavia;openstack-baremetal;ovn;placement;rabbitmq-cluster;swift;telemetry;test;watcher + // +kubebuilder:validation:Enum:=openstack;barbican;cinder;designate;glance;heat;horizon;infra;ironic;keystone;manila;mariadb;neutron;nova;octavia;openstack-baremetal;ovn;placement;swift;telemetry;test;watcher // Name of the service operators. Name string `json:"name"` diff --git a/bindata/crds/crds.yaml b/bindata/crds/crds.yaml index a7c1fac3b..89e08099f 100644 --- a/bindata/crds/crds.yaml +++ b/bindata/crds/crds.yaml @@ -14403,10 +14403,25 @@ spec: x-kubernetes-list-type: atomic type: object type: object + config: + properties: + additionalConfig: + type: string + additionalPlugins: + items: + type: string + type: array + x-kubernetes-list-type: atomic + advancedConfig: + type: string + envConfig: + type: string + erlangInetConfig: + type: string + type: object delayStartSeconds: default: 30 format: int32 - minimum: 0 type: integer nodeSelector: additionalProperties: @@ -14525,9 +14540,8 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true persistence: - default: - storage: 10Gi properties: storage: anyOf: @@ -14595,23 +14609,16 @@ spec: rabbitmq: properties: additionalConfig: - maxLength: 100000 type: string additionalPlugins: items: - maxLength: 100 - pattern: ^\w+$ type: string - maxItems: 100 type: array advancedConfig: - maxLength: 100000 type: string envConfig: - maxLength: 100000 type: string erlangInetConfig: - maxLength: 2000 type: string type: object replicas: @@ -14702,27 +14709,33 @@ spec: type: string type: object ipFamilyPolicy: - enum: - - SingleStack - - PreferDualStack - - RequireDualStack type: string labels: additionalProperties: type: string type: object type: - default: ClusterIP - enum: - - ClusterIP - - LoadBalancer - - NodePort type: string type: object skipPostDeploySteps: type: boolean + storage: + properties: + storage: + anyOf: + - type: integer + - type: string + default: 10Gi + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + type: string + type: object + targetVersion: + pattern: ^\d+\.\d+(\.\d+)?$ + type: string terminationGracePeriodSeconds: - default: 604800 + default: 60 format: int64 minimum: 0 type: integer @@ -14751,6 +14764,7 @@ spec: type: string type: object type: array + x-kubernetes-list-type: atomic topologyRef: properties: name: @@ -21465,6 +21479,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object type: object availableVersion: @@ -21900,6 +21916,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object trackedCustomImages: additionalProperties: diff --git a/bindata/crds/rabbitmq.com_rabbitmqclusters.yaml b/bindata/crds/rabbitmq.com_rabbitmqclusters.yaml deleted file mode 100644 index ab439948e..000000000 --- a/bindata/crds/rabbitmq.com_rabbitmqclusters.yaml +++ /dev/null @@ -1,5378 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.5 - creationTimestamp: null - labels: - app.kubernetes.io/component: rabbitmq-operator - app.kubernetes.io/name: rabbitmq-cluster-operator - app.kubernetes.io/part-of: rabbitmq - servicebinding.io/provisioned-service: "true" - name: rabbitmqclusters.rabbitmq.com -spec: - group: rabbitmq.com - names: - categories: - - all - - rabbitmq - kind: RabbitmqCluster - listKind: RabbitmqClusterList - plural: rabbitmqclusters - shortNames: - - rmq - singular: rabbitmqcluster - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type == 'AllReplicasReady')].status - name: AllReplicasReady - type: string - - jsonPath: .status.conditions[?(@.type == 'ReconcileSuccess')].status - name: ReconcileSuccess - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: |- - RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object - corresponds to a single RabbitMQ cluster. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: Spec is the desired state of the RabbitmqCluster Custom Resource. - properties: - affinity: - description: Affinity scheduling rules to be applied on created Pods. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - autoEnableAllFeatureFlags: - description: |- - Set to true to automatically enable all feature flags after each upgrade - For more information, see https://www.rabbitmq.com/docs/feature-flags - type: boolean - delayStartSeconds: - default: 30 - description: |- - DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating. - This effectively delays the time between starting the Pod and starting the `rabbitmq` container. - RabbitMQ relies on up-to-date DNS entries early during peer discovery. - The purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ. - For more information, see https://github.com/kubernetes/kubernetes/issues/92559 - If your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses - promptly, you can decrase this value or set it to 0. - format: int32 - minimum: 0 - type: integer - image: - description: |- - Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster. - Must be provided together with ImagePullSecrets in order to use an image in a private registry. - type: string - imagePullSecrets: - description: List of Secret resource containing access credentials - to the registry for the RabbitMQ image. Required if the docker registry - is private. - items: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - default: "" - description: |- - Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - type: object - x-kubernetes-map-type: atomic - type: array - override: - properties: - service: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - allocateLoadBalancerNodePorts: - type: boolean - clusterIP: - type: string - clusterIPs: - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalName: - type: string - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - internalTrafficPolicy: - type: string - ipFamilies: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - type: string - loadBalancerClass: - type: string - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - protocol: - default: TCP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - type: boolean - selector: - additionalProperties: - type: string - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - trafficDistribution: - type: string - type: - type: string - type: object - type: object - statefulSet: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - minReadySeconds: - format: int32 - type: integer - persistentVolumeClaimRetentionPolicy: - properties: - whenDeleted: - type: string - whenScaled: - type: string - type: object - podManagementPolicy: - type: string - replicas: - format: int32 - type: integer - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - serviceName: - type: string - template: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - items: - type: string - type: array - x-kubernetes-list-type: atomic - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - automountServiceAccountToken: - type: boolean - containers: - items: - properties: - args: - items: - type: string - type: array - x-kubernetes-list-type: atomic - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - envFrom: - items: - properties: - configMapRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - type: string - secretRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - resizePolicy: - items: - properties: - resourceName: - type: string - restartPolicy: - type: string - required: - - resourceName - - restartPolicy - type: object - type: array - x-kubernetes-list-type: atomic - resources: - properties: - claims: - items: - properties: - name: - type: string - request: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - restartPolicy: - type: string - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - appArmorProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - capabilities: - properties: - add: - items: - type: string - type: array - x-kubernetes-list-type: atomic - drop: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - devicePath - x-kubernetes-list-type: map - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - recursiveReadOnly: - type: string - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - mountPath - x-kubernetes-list-type: map - workingDir: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - x-kubernetes-list-type: atomic - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - x-kubernetes-list-type: atomic - searches: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - ephemeralContainers: - items: - properties: - args: - items: - type: string - type: array - x-kubernetes-list-type: atomic - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - envFrom: - items: - properties: - configMapRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - type: string - secretRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - resizePolicy: - items: - properties: - resourceName: - type: string - restartPolicy: - type: string - required: - - resourceName - - restartPolicy - type: object - type: array - x-kubernetes-list-type: atomic - resources: - properties: - claims: - items: - properties: - name: - type: string - request: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - restartPolicy: - type: string - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - appArmorProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - capabilities: - properties: - add: - items: - type: string - type: array - x-kubernetes-list-type: atomic - drop: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - targetContainerName: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - devicePath - x-kubernetes-list-type: map - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - recursiveReadOnly: - type: string - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - mountPath - x-kubernetes-list-type: map - workingDir: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ip: - type: string - required: - - ip - type: object - type: array - x-kubernetes-list-map-keys: - - ip - x-kubernetes-list-type: map - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostUsers: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - initContainers: - items: - properties: - args: - items: - type: string - type: array - x-kubernetes-list-type: atomic - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - properties: - key: - type: string - name: - default: "" - type: string - optional: - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - envFrom: - items: - properties: - configMapRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - type: string - secretRef: - properties: - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - sleep: - properties: - seconds: - format: int64 - type: integer - required: - - seconds - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - resizePolicy: - items: - properties: - resourceName: - type: string - restartPolicy: - type: string - required: - - resourceName - - restartPolicy - type: object - type: array - x-kubernetes-list-type: atomic - resources: - properties: - claims: - items: - properties: - name: - type: string - request: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - restartPolicy: - type: string - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - appArmorProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - capabilities: - properties: - add: - items: - type: string - type: array - x-kubernetes-list-type: atomic - drop: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - failureThreshold: - format: int32 - type: integer - grpc: - properties: - port: - format: int32 - type: integer - service: - default: "" - type: string - required: - - port - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - devicePath - x-kubernetes-list-type: map - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - recursiveReadOnly: - type: string - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - x-kubernetes-list-map-keys: - - mountPath - x-kubernetes-list-type: map - workingDir: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - x-kubernetes-map-type: atomic - os: - properties: - name: - type: string - required: - - name - type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - x-kubernetes-list-type: atomic - resourceClaims: - items: - properties: - name: - type: string - resourceClaimName: - type: string - resourceClaimTemplateName: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - schedulingGates: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - securityContext: - properties: - appArmorProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - x-kubernetes-list-type: atomic - supplementalGroupsPolicy: - type: string - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - x-kubernetes-list-type: atomic - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - x-kubernetes-list-type: atomic - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - items: - type: string - type: array - x-kubernetes-list-type: atomic - maxSkew: - format: int32 - type: integer - minDomains: - format: int32 - type: integer - nodeAffinityPolicy: - type: string - nodeTaintsPolicy: - type: string - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - default: ext4 - type: string - kind: - type: string - readOnly: - default: false - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - x-kubernetes-list-type: atomic - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - x-kubernetes-list-type: atomic - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - x-kubernetes-list-type: atomic - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - x-kubernetes-list-type: atomic - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - type: string - volumeAttributesClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - x-kubernetes-list-type: atomic - wwids: - items: - type: string - type: array - x-kubernetes-list-type: atomic - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - image: - properties: - pullPolicy: - type: string - reference: - type: string - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - default: default - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - x-kubernetes-list-type: atomic - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - clusterTrustBundle: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - name: - type: string - optional: - type: boolean - path: - type: string - signerName: - type: string - required: - - path - type: object - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - x-kubernetes-list-type: atomic - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - x-kubernetes-list-type: atomic - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - x-kubernetes-list-type: atomic - name: - default: "" - type: string - optional: - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - x-kubernetes-list-type: atomic - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - default: /etc/ceph/keyring - type: string - monitors: - items: - type: string - type: array - x-kubernetes-list-type: atomic - pool: - default: rbd - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - user: - default: admin - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - default: xfs - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - type: boolean - storageMode: - default: ThinProvisioned - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - x-kubernetes-list-type: atomic - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - default: "" - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - required: - - containers - type: object - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - volumeClaimTemplates: - items: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - x-kubernetes-list-type: atomic - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - type: string - volumeAttributesClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: array - type: object - type: object - type: object - persistence: - default: - storage: 10Gi - description: The desired persistent storage configuration for each - Pod in the cluster. - properties: - storage: - anyOf: - - type: integer - - type: string - default: 10Gi - description: |- - The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. - The format of this field matches that defined by kubernetes/apimachinery. - See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field. - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - storageClassName: - description: The name of the StorageClass to claim a PersistentVolume - from. - type: string - type: object - rabbitmq: - description: Configuration options for RabbitMQ Pods created in the - cluster. - properties: - additionalConfig: - description: |- - Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator. - Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. - For more information on this config, see https://www.rabbitmq.com/configure.html#config-file - maxLength: 100000 - type: string - additionalPlugins: - description: 'List of plugins to enable in addition to essential - plugins: rabbitmq_management, rabbitmq_prometheus, and rabbitmq_peer_discovery_k8s.' - items: - description: A Plugin to enable on the RabbitmqCluster. - maxLength: 100 - pattern: ^\w+$ - type: string - maxItems: 100 - type: array - advancedConfig: - description: |- - Specify any rabbitmq advanced.config configurations to apply to the cluster. - For more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file - maxLength: 100000 - type: string - envConfig: - description: |- - Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. - For more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html - maxLength: 100000 - type: string - erlangInetConfig: - description: |- - Erlang Inet configuration to apply to the Erlang VM running rabbit. - See also: https://www.erlang.org/doc/apps/erts/inet_cfg.html - maxLength: 2000 - type: string - type: object - replicas: - default: 1 - description: |- - Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested. - This value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes - in the event of a fragmenting network partition. - format: int32 - minimum: 0 - type: integer - resources: - default: - limits: - cpu: 2000m - memory: 2Gi - requests: - cpu: 1000m - memory: 2Gi - description: The desired compute resource requirements of Pods in - the cluster. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - secretBackend: - description: |- - Secret backend configuration for the RabbitmqCluster. - Enables to fetch default user credentials and certificates from K8s external secret stores. - properties: - externalSecret: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - default: "" - description: |- - Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - type: object - x-kubernetes-map-type: atomic - vault: - description: |- - VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations) - to RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector) - to be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications - (based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume. - properties: - annotations: - additionalProperties: - type: string - description: |- - Vault annotations that override the Vault annotations set by the cluster-operator. - For a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations - type: object - defaultUserPath: - description: |- - Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user. - For example "secret/data/rabbitmq/config". - type: string - defaultUserUpdaterImage: - description: |- - Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault. - Additionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI). - Set to empty string to disable the sidecar container. - type: string - role: - description: |- - Role in Vault. - If vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault. - If vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains - "" and ".svc". - type: string - tls: - properties: - altNames: - description: |- - Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list. - These will be appended to the SANs added by the cluster-operator. - The cluster-operator will add SANs: - "-server-.-nodes." for each pod, - e.g. "myrabbit-server-0.myrabbit-nodes.default". - type: string - commonName: - description: |- - Specifies the requested certificate Common Name (CN). - Defaults to ..svc if not provided. - type: string - ipSans: - description: Specifies the requested IP Subject Alternative - Names, in a comma-delimited list. - type: string - pkiIssuerPath: - description: |- - Path in Vault PKI engine. - For example "pki/issue/hashicorp-com". - required - type: string - pkiRootPath: - description: Specifies an optional path to retrieve the - root CA from vault. Useful if certificates are issued - by an intermediate CA - type: string - type: object - type: object - type: object - service: - default: - type: ClusterIP - description: The desired state of the Kubernetes Service to create - for the cluster. - properties: - annotations: - additionalProperties: - type: string - description: Annotations to add to the Service. - type: object - ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by a Service - See also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy - enum: - - SingleStack - - PreferDualStack - - RequireDualStack - type: string - labels: - additionalProperties: - type: string - type: object - type: - default: ClusterIP - description: |- - Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort. - For more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType - enum: - - ClusterIP - - LoadBalancer - - NodePort - type: string - type: object - skipPostDeploySteps: - description: |- - If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated. - Set to true to prevent the operator rebalancing queue leaders after a cluster update. - Has no effect if the cluster only consists of one node. - For more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance - type: boolean - terminationGracePeriodSeconds: - default: 604800 - description: |- - TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully. - It defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running. - For more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md - format: int64 - minimum: 0 - type: integer - tls: - description: TLS-related configuration for the RabbitMQ cluster. - properties: - caSecretName: - description: |- - Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS. - The Secret must store this as ca.crt. - This Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.crt` - Used for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt. - type: string - disableNonTLSListeners: - description: |- - When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt. - Only TLS-enabled clients will be able to connect. - type: boolean - secretName: - description: |- - Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS. - The Secret must store these as tls.key and tls.crt, respectively. - This Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.crt --key=path/to/tls.key` - type: string - type: object - tolerations: - description: Tolerations is the list of Toleration resources attached - to each Pod in the RabbitmqCluster. - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - description: |- - Effect indicates the taint effect to match. Empty means match all taint effects. - When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: |- - Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod can - tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - type: object - status: - description: Status presents the observed state of RabbitmqCluster - properties: - binding: - description: |- - Binding exposes a secret containing the binding information for this - RabbitmqCluster. It implements the service binding Provisioned Service - duck type. See: https://github.com/servicebinding/spec#provisioned-service - properties: - name: - default: "" - description: |- - Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - type: object - x-kubernetes-map-type: atomic - conditions: - description: Set of Conditions describing the current state of the - RabbitmqCluster - items: - properties: - lastTransitionTime: - description: The last time this Condition type changed. - format: date-time - type: string - message: - description: Full text reason for current status of the condition. - type: string - reason: - description: One word, camel-case reason for current status - of the condition. - type: string - status: - description: True, False, or Unknown - type: string - type: - description: Type indicates the scope of RabbitmqCluster status - addressed by the condition. - type: string - required: - - status - - type - type: object - type: array - defaultUser: - description: Identifying information on internal resources - properties: - secretReference: - description: |- - Reference to the Kubernetes Secret containing the credentials of the default - user. - properties: - keys: - additionalProperties: - type: string - description: Key-value pairs in the Secret corresponding to - `username`, `password`, `host`, and `port` - type: object - name: - description: Name of the Secret containing the default user - credentials - type: string - namespace: - description: Namespace of the Secret containing the default - user credentials - type: string - required: - - keys - - name - - namespace - type: object - serviceReference: - description: Reference to the Kubernetes Service serving the cluster. - properties: - name: - description: Name of the Service serving the cluster - type: string - namespace: - description: Namespace of the Service serving the cluster - type: string - required: - - name - - namespace - type: object - type: object - observedGeneration: - description: |- - observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the - RabbitmqCluster's generation, which is updated on mutation by the API Server. - format: int64 - type: integer - required: - - conditions - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null diff --git a/bindata/crds/rabbitmq.openstack.org_rabbitmqs.yaml b/bindata/crds/rabbitmq.openstack.org_rabbitmqs.yaml index 6185003ec..10df9be9f 100644 --- a/bindata/crds/rabbitmq.openstack.org_rabbitmqs.yaml +++ b/bindata/crds/rabbitmq.openstack.org_rabbitmqs.yaml @@ -52,7 +52,7 @@ spec: description: RabbitMqSpec defines the desired state of RabbitMq properties: affinity: - description: Affinity scheduling rules to be applied on created Pods. + description: Affinity - Pod affinity/anti-affinity rules properties: nodeAffinity: description: Describes node affinity scheduling rules for the @@ -971,6 +971,33 @@ spec: x-kubernetes-list-type: atomic type: object type: object + config: + description: Config - RabbitMQ configuration options + properties: + additionalConfig: + description: AdditionalConfig - Additional RabbitMQ configuration + type: string + additionalPlugins: + description: AdditionalPlugins - Additional RabbitMQ plugins to + enable + items: + type: string + type: array + x-kubernetes-list-type: atomic + advancedConfig: + description: AdvancedConfig - Erlang advanced configuration + type: string + envConfig: + description: |- + EnvConfig - Additional environment variables for RabbitMQ (rabbitmq-env.conf format). + These are shell variables sourced by rabbitmq-server at startup. + type: string + erlangInetConfig: + description: |- + ErlangInetConfig - Erlang inet configuration (erl_inetrc format). + When set, overrides the default IPv6 inet configuration. + type: string + type: object containerImage: description: Name of the rabbitmq container image to run (will be set to environmental default if empty) @@ -978,15 +1005,9 @@ spec: delayStartSeconds: default: 30 description: |- - DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating. - This effectively delays the time between starting the Pod and starting the `rabbitmq` container. - RabbitMQ relies on up-to-date DNS entries early during peer discovery. - The purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ. - For more information, see https://github.com/kubernetes/kubernetes/issues/92559 - If your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses - promptly, you can decrase this value or set it to 0. + DEPRECATED: For backward compatibility with old rabbitmq-cluster-operator format. + This field is no longer used and will be removed in a future release. format: int32 - minimum: 0 type: integer nodeSelector: additionalProperties: @@ -995,41 +1016,30 @@ spec: this service type: object override: - description: Provides the ability to override the generated manifest - of several child resources. + description: |- + DEPRECATED: For backward compatibility with old RabbitmqClusterSpecCore format. + Use explicit fields above instead. This will be removed in a future release. properties: service: description: Override configuration for the Service created to serve traffic to the cluster. properties: metadata: - description: |- - EmbeddedLabelsAnnotations is an embedded subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta. - Only labels and annotations are included. + description: DeprecatedEmbeddedLabelsAnnotations mirrors the + old rabbitmq-cluster-operator EmbeddedLabelsAnnotations + type. properties: annotations: additionalProperties: type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: http://kubernetes.io/docs/user-guide/annotations type: object labels: additionalProperties: type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - and services. - More info: http://kubernetes.io/docs/user-guide/labels type: object type: object spec: - description: |- - Spec defines the behavior of a Service. - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + description: Spec defines the behavior of a Service. properties: allocateLoadBalancerNodePorts: description: |- @@ -1378,21 +1388,18 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true persistence: - default: - storage: 10Gi - description: The desired persistent storage configuration for each - Pod in the cluster. + description: |- + DEPRECATED: For backward compatibility with old format. + Use Storage field instead. properties: storage: anyOf: - type: integer - type: string default: 10Gi - description: |- - The requested size of the persistent volume attached to each Pod in the RabbitmqCluster. - The format of this field matches that defined by kubernetes/apimachinery. - See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field. + description: The requested size of the persistent volume. pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true storageClassName: @@ -1401,10 +1408,7 @@ spec: type: string type: object podOverride: - description: |- - PodOverride - Override configuration for per-pod services. When specified, individual LoadBalancer - services will be created for each pod with the provided configuration, and the transport URL will be - configured to use these per-pod services. + description: PodOverride - Override configuration for per-pod services properties: services: description: Services - list of per-pod service overrides @@ -1560,55 +1564,31 @@ spec: type: object queueType: description: |- - QueueType to eventually apply the ha-all policy or configure default queue type for the cluster. - Allowed values are: None, Mirrored, Quorum. Defaults to Quorum if not specified. + QueueType - the default queue type for the cluster. + Allowed values: Mirrored, Quorum. New clusters default to Quorum. + Existing clusters without a value default to Mirrored. type: string rabbitmq: - description: Configuration options for RabbitMQ Pods created in the - cluster. + description: |- + DEPRECATED: For backward compatibility with old format. + Use Config field instead. properties: additionalConfig: - description: |- - Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator. - Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. - For more information on this config, see https://www.rabbitmq.com/configure.html#config-file - maxLength: 100000 type: string additionalPlugins: - description: 'List of plugins to enable in addition to essential - plugins: rabbitmq_management, rabbitmq_prometheus, and rabbitmq_peer_discovery_k8s.' items: - description: A Plugin to enable on the RabbitmqCluster. - maxLength: 100 - pattern: ^\w+$ type: string - maxItems: 100 type: array advancedConfig: - description: |- - Specify any rabbitmq advanced.config configurations to apply to the cluster. - For more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file - maxLength: 100000 type: string envConfig: - description: |- - Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime. - For more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html - maxLength: 100000 type: string erlangInetConfig: - description: |- - Erlang Inet configuration to apply to the Erlang VM running rabbit. - See also: https://www.erlang.org/doc/apps/erts/inet_cfg.html - maxLength: 2000 type: string type: object replicas: default: 1 - description: |- - Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested. - This value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes - in the event of a fragmenting network partition. + description: Replicas - Number of RabbitMQ nodes in the cluster format: int32 minimum: 0 type: integer @@ -1620,8 +1600,7 @@ spec: requests: cpu: 1000m memory: 2Gi - description: The desired compute resource requirements of Pods in - the cluster. + description: Resources - Resource requirements for RabbitMQ containers properties: claims: description: |- @@ -1681,8 +1660,8 @@ spec: type: object secretBackend: description: |- - Secret backend configuration for the RabbitmqCluster. - Enables to fetch default user credentials and certificates from K8s external secret stores. + DEPRECATED: For backward compatibility with old rabbitmq-cluster-operator format. + This field is no longer used and will be removed in a future release. properties: externalSecret: description: |- @@ -1701,143 +1680,108 @@ spec: type: object x-kubernetes-map-type: atomic vault: - description: |- - VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations) - to RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector) - to be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications - (based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume. + description: DeprecatedVaultSpec mirrors the old rabbitmq-cluster-operator + VaultSpec type. properties: annotations: additionalProperties: type: string - description: |- - Vault annotations that override the Vault annotations set by the cluster-operator. - For a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations type: object defaultUserPath: - description: |- - Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user. - For example "secret/data/rabbitmq/config". type: string defaultUserUpdaterImage: - description: |- - Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault. - Additionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI). - Set to empty string to disable the sidecar container. type: string role: - description: |- - Role in Vault. - If vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault. - If vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains - "" and ".svc". type: string tls: + description: DeprecatedVaultTLSSpec mirrors the old rabbitmq-cluster-operator + VaultSpec TLS fields. properties: altNames: - description: |- - Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list. - These will be appended to the SANs added by the cluster-operator. - The cluster-operator will add SANs: - "-server-.-nodes." for each pod, - e.g. "myrabbit-server-0.myrabbit-nodes.default". type: string commonName: - description: |- - Specifies the requested certificate Common Name (CN). - Defaults to ..svc if not provided. type: string ipSans: - description: Specifies the requested IP Subject Alternative - Names, in a comma-delimited list. type: string pkiIssuerPath: - description: |- - Path in Vault PKI engine. - For example "pki/issue/hashicorp-com". - required type: string pkiRootPath: - description: Specifies an optional path to retrieve the - root CA from vault. Useful if certificates are issued - by an intermediate CA type: string type: object type: object type: object service: - description: Settable attributes for the Service resource. + description: Service - Service configuration properties: annotations: additionalProperties: type: string - description: Annotations to add to the Service. + description: Annotations - Service annotations type: object ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by a Service - See also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy - enum: - - SingleStack - - PreferDualStack - - RequireDualStack + description: IPFamilyPolicy - IP family policy for the service type: string labels: additionalProperties: type: string + description: 'DEPRECATED: For backward compatibility with old + format. Use override.service.metadata.labels instead.' type: object type: - default: ClusterIP - description: |- - Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort. - For more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType - enum: - - ClusterIP - - LoadBalancer - - NodePort + description: Type - Service type (ClusterIP, LoadBalancer, etc.) type: string type: object skipPostDeploySteps: - description: |- - If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated. - Set to true to prevent the operator rebalancing queue leaders after a cluster update. - Has no effect if the cluster only consists of one node. - For more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance + description: SkipPostDeploySteps - Skip post-deploy queue rebalancing type: boolean - terminationGracePeriodSeconds: - default: 604800 + storage: + description: Storage - Persistent storage configuration + properties: + storage: + anyOf: + - type: integer + - type: string + default: 10Gi + description: Storage - Size of the persistent volume claim + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + description: StorageClassName - Storage class name for the persistent + volume claim + type: string + type: object + targetVersion: description: |- - TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully. - It defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running. - For more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md + TargetVersion - the desired RabbitMQ version (e.g., "4.2", "3.13.1"). + When set to a version different from Status.CurrentVersion, the controller + will initiate a storage wipe and version upgrade. The controller updates + Status.CurrentVersion once the upgrade completes. + pattern: ^\d+\.\d+(\.\d+)?$ + type: string + terminationGracePeriodSeconds: + default: 60 + description: TerminationGracePeriodSeconds - Timeout for graceful + pod termination format: int64 minimum: 0 type: integer tls: - description: TLS-related configuration for the RabbitMQ cluster. + description: TLS - TLS configuration properties: caSecretName: - description: |- - Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS. - The Secret must store this as ca.crt. - This Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.crt` - Used for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt. + description: CaSecretName - Name of the secret containing CA certificate + (ca.crt) type: string disableNonTLSListeners: - description: |- - When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt. - Only TLS-enabled clients will be able to connect. + description: DisableNonTLSListeners - Disable non-TLS listeners type: boolean secretName: - description: |- - Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS. - The Secret must store these as tls.key and tls.crt, respectively. - This Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.crt --key=path/to/tls.key` + description: SecretName - Name of the secret containing TLS certificates + (tls.crt and tls.key) type: string type: object tolerations: - description: Tolerations is the list of Toleration resources attached - to each Pod in the RabbitmqCluster. + description: Tolerations - Pod tolerations items: description: |- The pod this Toleration is attached to tolerates any taint that matches @@ -1875,10 +1819,10 @@ spec: type: string type: object type: array + x-kubernetes-list-type: atomic topologyRef: - description: |- - TopologyRef to apply the Topology defined by the associated CR referenced - by name + description: TopologyRef to apply the Topology defined by the associated + CR referenced by name properties: name: description: Name - The Topology CR name that the Service references @@ -1940,6 +1884,43 @@ spec: - type type: object type: array + currentVersion: + description: |- + CurrentVersion - the currently deployed RabbitMQ version (e.g., "3.9", "4.2") + This is controller-managed and reflects the actual running version. + Set Spec.TargetVersion to request a version change. + type: string + defaultUser: + description: DefaultUser - Identifying information on default user + secret + properties: + secretReference: + description: SecretReference - reference to the secret containing + credentials + properties: + keys: + additionalProperties: + type: string + description: Keys in the secret + type: object + name: + description: Name of the secret + type: string + namespace: + description: Namespace of the secret + type: string + type: object + serviceReference: + description: ServiceReference - reference to the service + properties: + name: + description: Name of the service + type: string + namespace: + description: Namespace of the service + type: string + type: object + type: object lastAppliedTopology: description: LastAppliedTopology - the last applied Topology properties: @@ -1963,10 +1944,33 @@ spec: the opentack-operator in the top-level CR (e.g. the ContainerImage) format: int64 type: integer + oldCRCleaned: + description: |- + OldCRCleaned - set to "True" when the old rabbitmq.com RabbitmqCluster CR has been + cleaned up during migration from rabbitmq-cluster-operator. + enum: + - "True" + - "False" + - "" + type: string + proxyRequired: + description: |- + ProxyRequired - set to "True" when the AMQP proxy sidecar is required for this cluster. + Set when upgrading from RabbitMQ 3.x to 4.x with Quorum queues. + The proxy allows non-durable clients to work with quorum queues during the upgrade window. + Only cleared when the AnnotationClientsReconfigured annotation is set to "true". + enum: + - "True" + - "False" + - "" + type: string queueType: - description: QueueType - store whether default ha-all policy is present - or not + description: QueueType - the active queue type for this cluster type: string + readyCount: + description: ReadyCount tracks ready replicas + format: int32 + type: integer serviceHostnames: description: |- ServiceHostnames - list of per-pod service hostnames for RabbitMQ cluster. @@ -1975,6 +1979,25 @@ spec: type: string type: array x-kubernetes-list-type: atomic + upgradePhase: + description: |- + UpgradePhase - tracks the current phase of a version upgrade or migration. + This allows resuming upgrades that failed midway. + type: string + vctCleaned: + description: |- + VCTCleaned - set to "True" when stale ownerReferences in the StatefulSet's + volumeClaimTemplates have been cleaned up during migration. + enum: + - "True" + - "False" + - "" + type: string + wipeReason: + description: |- + WipeReason - tracks why the current storage wipe was initiated. + Persisted so that resumed upgrades use the correct handling path. + type: string type: object type: object served: true diff --git a/bindata/operator/rabbit.yaml b/bindata/operator/rabbit.yaml deleted file mode 100644 index a1d4ee3e1..000000000 --- a/bindata/operator/rabbit.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/component: rabbitmq-operator - app.kubernetes.io/name: rabbitmq-cluster-operator - app.kubernetes.io/part-of: rabbitmq - name: rabbitmq-cluster-operator-manager - namespace: {{ .RabbitmqOperator.Namespace }} -spec: - replicas: {{ .RabbitmqOperator.Deployment.Replicas }} - selector: - matchLabels: - app.kubernetes.io/name: rabbitmq-cluster-operator - template: - metadata: - labels: - app.kubernetes.io/component: rabbitmq-operator - app.kubernetes.io/name: rabbitmq-cluster-operator - app.kubernetes.io/part-of: rabbitmq - spec: - containers: - - command: - - /manager - env: - - name: OPERATOR_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace -{{- range .RabbitmqOperator.Deployment.Manager.Env }} - - name: '{{ .Name }}' - value: '{{ .Value }}' -{{- end }} - image: {{ .RabbitmqOperator.Deployment.Manager.Image }} - name: operator - ports: - - containerPort: 9782 - name: metrics - protocol: TCP - resources: - limits: - cpu: {{ .RabbitmqOperator.Deployment.Manager.Resources.Limits.CPU }} - memory: {{ .RabbitmqOperator.Deployment.Manager.Resources.Limits.Memory }} - requests: - cpu: {{ .RabbitmqOperator.Deployment.Manager.Resources.Requests.CPU }} - memory: {{ .RabbitmqOperator.Deployment.Manager.Resources.Requests.Memory }} - serviceAccountName: rabbitmq-cluster-operator-controller-manager - terminationGracePeriodSeconds: 10 - tolerations: - - key: "node.kubernetes.io/not-ready" - operator: "Exists" - effect: "NoExecute" - tolerationSeconds: 120 - - key: "node.kubernetes.io/unreachable" - operator: "Exists" - effect: "NoExecute" - tolerationSeconds: 120 diff --git a/bindata/rbac/infra-operator-rbac.yaml b/bindata/rbac/infra-operator-rbac.yaml index 53f735473..e43cf4784 100644 --- a/bindata/rbac/infra-operator-rbac.yaml +++ b/bindata/rbac/infra-operator-rbac.yaml @@ -72,6 +72,7 @@ rules: - configmaps - pods - secrets + - serviceaccounts - services verbs: - create @@ -84,15 +85,24 @@ rules: - apiGroups: - "" resources: + - endpoints + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - events - pods/exec verbs: - create - apiGroups: - "" resources: - - serviceaccounts + - persistentvolumeclaims verbs: - - create + - delete - get - list - patch @@ -289,19 +299,12 @@ rules: resources: - rabbitmqclusters verbs: - - create - delete - get - list - patch - update - watch -- apiGroups: - - rabbitmq.com - resources: - - rabbitmqclusters/finalizers - verbs: - - update - apiGroups: - rabbitmq.openstack.org resources: @@ -347,6 +350,7 @@ rules: - roles verbs: - create + - delete - get - list - patch diff --git a/bindata/rbac/rabbitmq-cluster-operator-rbac.yaml b/bindata/rbac/rabbitmq-cluster-operator-rbac.yaml deleted file mode 100644 index 43e0a0f84..000000000 --- a/bindata/rbac/rabbitmq-cluster-operator-rbac.yaml +++ /dev/null @@ -1,203 +0,0 @@ -# NOTE: this file is automatically generated by hack/sync-bindata.sh! -# ---- -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - labels: - app.kubernetes.io/component: certificate - app.kubernetes.io/created-by: openstack-operator - app.kubernetes.io/instance: selfsigned-issuer - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/name: issuer - app.kubernetes.io/part-of: rabbitmq-cluster-operator - name: rabbitmq-cluster-operator-selfsigned-issuer - namespace: '{{ .OperatorNamespace }}' -spec: - selfSigned: {} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: rabbitmq-cluster-operator-controller-manager - namespace: '{{ .OperatorNamespace }}' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: rabbitmq-cluster-operator-leader-election-role - namespace: '{{ .OperatorNamespace }}' -rules: -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - events - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: rabbitmq-cluster-operator-manager-role -rules: -- apiGroups: - - "" - resources: - - configmaps - - persistentvolumeclaims - - secrets - - serviceaccounts - - services - verbs: - - create - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - endpoints - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - patch -- apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - pods/exec - verbs: - - create -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - create - - delete - - get - - list - - update - - watch -- apiGroups: - - rabbitmq.com - resources: - - rabbitmqclusters - verbs: - - create - - get - - list - - update - - watch -- apiGroups: - - rabbitmq.com - resources: - - rabbitmqclusters/finalizers - verbs: - - update -- apiGroups: - - rabbitmq.com - resources: - - rabbitmqclusters/status - verbs: - - get - - update -- apiGroups: - - rbac.authorization.k8s.io - resources: - - rolebindings - - roles - verbs: - - create - - get - - list - - update - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: rabbitmq-cluster-operator-leader-election-rolebinding - namespace: '{{ .OperatorNamespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: rabbitmq-cluster-operator-leader-election-role -subjects: -- kind: ServiceAccount - name: rabbitmq-cluster-operator-controller-manager - namespace: '{{ .OperatorNamespace }}' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: rabbitmq-cluster-operator-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: rabbitmq-cluster-operator-manager-role -subjects: -- kind: ServiceAccount - name: rabbitmq-cluster-operator-controller-manager - namespace: '{{ .OperatorNamespace }}' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: rabbitmq-cluster-operator-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: rabbitmq-cluster-operator-proxy-role -subjects: -- kind: ServiceAccount - name: rabbitmq-cluster-operator-controller-manager - namespace: '{{ .OperatorNamespace }}' ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/name: rabbitmq-cluster-operator - control-plane: controller-manager - name: rabbitmq-cluster-operator-controller-manager-metrics-service - namespace: '{{ .OperatorNamespace }}' -spec: - ports: - - name: https - port: 8443 - protocol: TCP - targetPort: 8443 - selector: - app.kubernetes.io/name: rabbitmq-cluster-operator - control-plane: controller-manager diff --git a/config/crd/bases/core.openstack.org_openstackcontrolplanes.yaml b/config/crd/bases/core.openstack.org_openstackcontrolplanes.yaml index bce2e279e..01faa67c0 100644 --- a/config/crd/bases/core.openstack.org_openstackcontrolplanes.yaml +++ b/config/crd/bases/core.openstack.org_openstackcontrolplanes.yaml @@ -14138,10 +14138,25 @@ spec: x-kubernetes-list-type: atomic type: object type: object + config: + properties: + additionalConfig: + type: string + additionalPlugins: + items: + type: string + type: array + x-kubernetes-list-type: atomic + advancedConfig: + type: string + envConfig: + type: string + erlangInetConfig: + type: string + type: object delayStartSeconds: default: 30 format: int32 - minimum: 0 type: integer nodeSelector: additionalProperties: @@ -14260,9 +14275,8 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true persistence: - default: - storage: 10Gi properties: storage: anyOf: @@ -14330,23 +14344,16 @@ spec: rabbitmq: properties: additionalConfig: - maxLength: 100000 type: string additionalPlugins: items: - maxLength: 100 - pattern: ^\w+$ type: string - maxItems: 100 type: array advancedConfig: - maxLength: 100000 type: string envConfig: - maxLength: 100000 type: string erlangInetConfig: - maxLength: 2000 type: string type: object replicas: @@ -14437,27 +14444,33 @@ spec: type: string type: object ipFamilyPolicy: - enum: - - SingleStack - - PreferDualStack - - RequireDualStack type: string labels: additionalProperties: type: string type: object type: - default: ClusterIP - enum: - - ClusterIP - - LoadBalancer - - NodePort type: string type: object skipPostDeploySteps: type: boolean + storage: + properties: + storage: + anyOf: + - type: integer + - type: string + default: 10Gi + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + type: string + type: object + targetVersion: + pattern: ^\d+\.\d+(\.\d+)?$ + type: string terminationGracePeriodSeconds: - default: 604800 + default: 60 format: int64 minimum: 0 type: integer @@ -14486,6 +14499,7 @@ spec: type: string type: object type: array + x-kubernetes-list-type: atomic topologyRef: properties: name: diff --git a/config/crd/bases/core.openstack.org_openstackversions.yaml b/config/crd/bases/core.openstack.org_openstackversions.yaml index ae79d6c77..0ee152302 100644 --- a/config/crd/bases/core.openstack.org_openstackversions.yaml +++ b/config/crd/bases/core.openstack.org_openstackversions.yaml @@ -250,6 +250,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object type: object availableVersion: @@ -685,6 +687,8 @@ spec: properties: glanceWsgi: type: string + rabbitmqVersion: + type: string type: object trackedCustomImages: additionalProperties: diff --git a/config/crd/bases/operator.openstack.org_openstacks.yaml b/config/crd/bases/operator.openstack.org_openstacks.yaml index 32ea32218..3b72a29ac 100644 --- a/config/crd/bases/operator.openstack.org_openstacks.yaml +++ b/config/crd/bases/operator.openstack.org_openstacks.yaml @@ -141,7 +141,6 @@ spec: - openstack-baremetal - ovn - placement - - rabbitmq-cluster - swift - telemetry - test diff --git a/config/operator/default_images.yaml b/config/operator/default_images.yaml index 430bc00ce..218f6b9ab 100644 --- a/config/operator/default_images.yaml +++ b/config/operator/default_images.yaml @@ -174,7 +174,7 @@ spec: - name: RELATED_IMAGE_PLACEMENT_API_IMAGE_URL_DEFAULT value: quay.io/podified-antelope-centos9/openstack-placement-api:current-podified - name: RELATED_IMAGE_RABBITMQ_IMAGE_URL_DEFAULT - value: quay.io/podified-antelope-centos9/openstack-rabbitmq:current-podified + value: quay.io/lmiccini/openstack-rabbitmq:r42p - name: RELATED_IMAGE_SWIFT_ACCOUNT_IMAGE_URL_DEFAULT value: quay.io/podified-antelope-centos9/openstack-swift-account:current-podified - name: RELATED_IMAGE_SWIFT_CONTAINER_IMAGE_URL_DEFAULT diff --git a/config/operator/manager_operator_images.yaml b/config/operator/manager_operator_images.yaml index 89ffef101..aa34c4307 100644 --- a/config/operator/manager_operator_images.yaml +++ b/config/operator/manager_operator_images.yaml @@ -26,7 +26,7 @@ spec: - name: RELATED_IMAGE_HORIZON_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/horizon-operator@sha256:67c5689bf3ea12b55f2c76e8dbefad03a980a6545d46f16493004cdcff4bfee4 - name: RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL - value: quay.io/openstack-k8s-operators/infra-operator@sha256:d5a153d4e0fd948855eb2f0d4d9e48b0a1f6cb4ee290490ec22a8d8a631b913b + value: quay.io/lmiccini/infra-operator@sha256:76230ac3dc798dbd0d803461849d1f879a4193f0dc57c72aba938776beebe892 - name: RELATED_IMAGE_IRONIC_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/ironic-operator@sha256:741c1bc38c0d9430995a0d0aae6adae5c1f490b23d620564595cdd40683df68b - name: RELATED_IMAGE_KEYSTONE_OPERATOR_MANAGER_IMAGE_URL @@ -47,8 +47,6 @@ spec: value: quay.io/openstack-k8s-operators/ovn-operator@sha256:bef93f71d3b42a72d8b96c69bdb4db4b8bd797c5093a0a719443d7a5c9aaab55 - name: RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/placement-operator@sha256:c8743a6661d118b0e5ba3eb110643358a8a3237dc75984a8f9829880b55a1622 - - name: RELATED_IMAGE_RABBITMQ_CLUSTER_OPERATOR_MANAGER_IMAGE_URL - value: quay.io/openstack-k8s-operators/rabbitmq-cluster-operator@sha256:893e66303c1b0bc1d00a299a3f0380bad55c8dc813c8a1c6a4aab379f5aa12a2 - name: RELATED_IMAGE_SWIFT_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/swift-operator@sha256:866844c5b88e1e0518ceb7490cac9d093da3fb8b2f27ba7bd9bd89f946b9ee6e - name: RELATED_IMAGE_TELEMETRY_OPERATOR_MANAGER_IMAGE_URL diff --git a/config/operator/rabbit.yaml b/config/operator/rabbit.yaml deleted file mode 100644 index a1d4ee3e1..000000000 --- a/config/operator/rabbit.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/component: rabbitmq-operator - app.kubernetes.io/name: rabbitmq-cluster-operator - app.kubernetes.io/part-of: rabbitmq - name: rabbitmq-cluster-operator-manager - namespace: {{ .RabbitmqOperator.Namespace }} -spec: - replicas: {{ .RabbitmqOperator.Deployment.Replicas }} - selector: - matchLabels: - app.kubernetes.io/name: rabbitmq-cluster-operator - template: - metadata: - labels: - app.kubernetes.io/component: rabbitmq-operator - app.kubernetes.io/name: rabbitmq-cluster-operator - app.kubernetes.io/part-of: rabbitmq - spec: - containers: - - command: - - /manager - env: - - name: OPERATOR_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace -{{- range .RabbitmqOperator.Deployment.Manager.Env }} - - name: '{{ .Name }}' - value: '{{ .Value }}' -{{- end }} - image: {{ .RabbitmqOperator.Deployment.Manager.Image }} - name: operator - ports: - - containerPort: 9782 - name: metrics - protocol: TCP - resources: - limits: - cpu: {{ .RabbitmqOperator.Deployment.Manager.Resources.Limits.CPU }} - memory: {{ .RabbitmqOperator.Deployment.Manager.Resources.Limits.Memory }} - requests: - cpu: {{ .RabbitmqOperator.Deployment.Manager.Resources.Requests.CPU }} - memory: {{ .RabbitmqOperator.Deployment.Manager.Resources.Requests.Memory }} - serviceAccountName: rabbitmq-cluster-operator-controller-manager - terminationGracePeriodSeconds: 10 - tolerations: - - key: "node.kubernetes.io/not-ready" - operator: "Exists" - effect: "NoExecute" - tolerationSeconds: 120 - - key: "node.kubernetes.io/unreachable" - operator: "Exists" - effect: "NoExecute" - tolerationSeconds: 120 diff --git a/go.mod b/go.mod index 399af6b6f..69b1dd8a3 100644 --- a/go.mod +++ b/go.mod @@ -181,3 +181,5 @@ replace k8s.io/code-generator => k8s.io/code-generator v0.31.14 //allow-merging replace k8s.io/component-base => k8s.io/component-base v0.31.14 //allow-merging replace github.com/cert-manager/cmctl/v2 => github.com/cert-manager/cmctl/v2 v2.1.2-0.20241127223932-88edb96860cf //allow-merging + +replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de diff --git a/go.sum b/go.sum index c485f82f5..77625c361 100644 --- a/go.sum +++ b/go.sum @@ -114,6 +114,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de h1:kapZ0xUDC+MrtXXLmqvuWQg5nxuFNoxM/EfhXhsxdnY= +github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -138,48 +140,46 @@ github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e h1:E1OdwSpqWuDPCedyUt0GEdoAE+r5TXy7YS21yNEo+2U= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e/go.mod h1:Shkl4HanLwDiiBzakv+con/aMGnVE2MAGvoKp5oyYUo= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d h1:I0irWEHQayqVYiLwrAm74WuRoOvK+vi9LYLh977uHaQ= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d/go.mod h1:CsJPeetdAsW1tWwjgeS/BTtASLrkG8WfzZnCggl1OVg= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df h1:AasR8YeZ0CfPtl1uolhb8kQmPGB3LCAPnY77Zfqp62k= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df/go.mod h1:82/md756vpv6AQhtRUkeL923qaX6Uu2sfnHdgfgJkFA= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0 h1:KRQ8YQeA6HegAeoS6qoIkxJqbGcumvH4FUyj4L1Q19g= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0/go.mod h1:eYiZSSr4liFHK3ycScT2V0egI6JXx3ffxh6kGZsP0bk= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753 h1:liEY4nDerLxsXvtmgFhSmxRtDQwXjpJY5RBIEJRKqIM= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753/go.mod h1:DLiEQFdAeeqAWDzsm19iKnnO+aLQeYeA7edIS9qlj2E= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5 h1:x0MjtALo7BqY3PD7ZmYYHVpcxpBki60f/CYpdImHt+s= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5/go.mod h1:D/clVT1Pf25PC/N2SEQiB2QQO/TF2IBCOPT5VkNkhHQ= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3 h1:t80wfV1UAjxA0ey3LHRsiJgoL6OEuBqOjqU6yvn7nOg= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3/go.mod h1:qQ7Ie2fWv5PnlffsAWlv6Y7jUgFbG0WQVZHCOgS0d/Y= -github.com/openstack-k8s-operators/infra-operator/apis v0.6.1-0.20260316100655-863ae03d41af h1:Ow12j/PVbEtul1bZ7s/ZenVnKPIHK2q+0VgTp+j/wro= -github.com/openstack-k8s-operators/infra-operator/apis v0.6.1-0.20260316100655-863ae03d41af/go.mod h1:nC/Jf3OYJRML8UEzJ/mn/TQcSCv/nhqO6x6LGkdDt60= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6 h1:8jpYazj7pGgzomNtQFL+BW5VxtDjRMfNJ7pTd53+5fw= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6/go.mod h1:y5Er36n6rjQA2Gi3dtwamhyeqWTGBIszN+ZexsvJCIo= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f h1:60I2YLHRznTY2BQXqXWc+ByJ3ipdQgKgW52t9J8C5DY= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f/go.mod h1:8o6LSPt1VAvvB2ngS2QObGS6HEikSdVpHoKIgmb78KI= -github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eUO7qu+f2/kJ6BVKgndBzMhnrxLaybHboXJKMi6HLww= -github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:tXxVkkk8HlATwTmDA5RTP3b+c8apfuMM15mZ2wW5iNs= -github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260320125710-3a5f82ff0f18 h1:wD5wuETMEpXiBdcMMFiY1bVpXrbiV5RM5Q4tIU46Xhk= -github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:GzD7Jc5o98ptJ97DSjhC0CQ6OiTP0PB/2qJqxYGcOH8= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18 h1:P1Nx+i6aH7rFy+T4nrB2AlQzzoLMrMwtnZPEsFvC5cM= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eJDwc8LPJg+H4bHMLh/pDJBk+OezQ+wkjUNpExUFhbM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18 h1:9lbaamHYKiWQq/Vth69GGNxQz67qC+PbeQdkXvUEeNo= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= -github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260320125710-3a5f82ff0f18 h1:beEKU5yv6ih8pbIqrU15QP0sGDXyxrKqVMh3zHDscrI= -github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:dEjz8zHRIlP3vnMmWdHytlLeSZ6BHcIiSTPM7xTQxFg= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7 h1:0iQ9FFFI1/y6m2qi2O9NLyj90KmajuZOr1FTSsPdrPw= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7/go.mod h1:O6PjMV49R7rfZyCmufUdVwiKBc5XW/dNJYSLSut/PRI= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70 h1:4REWM4l6kTOH14dsBSp/hhNdULbq3LDoCvfMWofPx4k= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70/go.mod h1:cyeexUkEIgzQ3c1vVVv/DQ3AbnECfDwKdZteKC+sZKY= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b h1:DLD0G/JbkC+ddNgHvw3/bpvDXlpFmoGdGT89+jVNiNY= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b/go.mod h1:GUSRylpcflm0a2Awsli7SHwa6ZPjL1FLvwFhu5RQ0SU= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f h1:zN73a9xm98uHpg9q/Owy/jyCyGJnrvvqdEF/UT+u328= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f/go.mod h1:FM7/Q+IjKsSOrWHzbgfEwym3XXZRWIKalpFrBbSMk6Q= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95 h1:OkoxRV9FQyBRo0MEctoKUKfS5T8D2+Z5rv92+5KWQpM= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95/go.mod h1:xhtJWduS/PTOF7xQDxDjVHRee3twrK+gzPECScMBWb4= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72 h1:Z7CzLGKRp8pg1bCK0JsO3y/NNNGd1HFKZ5XTl5xLj1M= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72/go.mod h1:TLRqdtji6ZhMcwI/uy70t8cKmIDjo/q4bjUUOYbeB+Y= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9 h1:Uk8OcXocKOb6KZ+EXnGOEjda4nNUz/Z6H3BBaH23F5s= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9/go.mod h1:8o0wLkMYyDDqZAdvU/YKMwgwiOyQzADWrmy38rZcHyE= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc h1:3r2wVspdAWx4j7ZScrukfLiPcGM7J9S/ClyOHsbY7ro= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc/go.mod h1:P0hUdNDsv8ISnK2GyFogNQF+dxatbKhtQ76UKhX6t7w= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34 h1:UgaEid1bqgUzsLg21BHtXSYOV2pljxR1Z3i1BcRVNQc= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34/go.mod h1:xEHdAz96FYfnBb1QAFgbfR2BCWCBIqhqKYT84IqU6zc= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581 h1:FntUoWPVWx8xaGCwP7kdUVT/N8Z0kfIxLLK4L+oQJ7c= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581/go.mod h1:l15wx+Qxi/I9Nlj6u6PheZqkf9dBW7cCxAcjl8zsu+8= +github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260310070607-b96da8dd520e h1:X7HkZG8rWmb5qK5IrGVuAQj1qCsjBRlo2JZyOPjmAiY= +github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:tXxVkkk8HlATwTmDA5RTP3b+c8apfuMM15mZ2wW5iNs= +github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260310070607-b96da8dd520e h1:OthI0EGrntYyFV0YkQHJ1i4sYcylWBeh09x1lxK97ak= +github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:GzD7Jc5o98ptJ97DSjhC0CQ6OiTP0PB/2qJqxYGcOH8= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e h1:EXpPxBaSHBDyAXhDApotNd9AZOm/DQfvAKdrWO5W4XA= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e h1:42OT26Ak0lwWbJDNwhv/0HsjafVkLyPhfonS5DjDb2g= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e h1:lHsE9kmPzGHfO6o9vXj6f5UTIlQRJNdrvrj8GWy/ct8= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= +github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260310070607-b96da8dd520e h1:PrtVs2n0tiuDH4TnTLf/J8GZi0nnd7lizUqWNT5tv2k= +github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:dEjz8zHRIlP3vnMmWdHytlLeSZ6BHcIiSTPM7xTQxFg= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463 h1:pqCtFGMf5haCOq9KYaykKjEE2NZIJI5nECVYvW+FZbY= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463/go.mod h1:KTkOh3/8ReJdkG0NkaDGq45eCIU6aUISvWP/b59y9tA= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727 h1:+IVZR4jm1MvVeoxS75cHNOsW7sf6jGdXx7kTnOSOxiw= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727/go.mod h1:bUpTGnR9HF19rD2Ow6IU8wJk+xrBtKdeA8PFjpguEh8= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d h1:oKRiIKhr1dm1wudWqBMvLViMPlXqi8B+PQT2Mv7rsj4= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d/go.mod h1:ljfpLBr2EyNAS7W7c+CQy61UhkwALTVLWl2Mc9YTSNA= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3 h1:W85oaZBQ/XmaPshZjOi46VMkzRUmZ17WDXbWcl4S6eM= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3/go.mod h1:ZQpGqN3AszLv7OoySPuCFyrNkuOEi1lPTymhbd1gOrc= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b h1:4vBr+f5KLrvg8XUtzWJ7F7fiJXS9UFMGnbPn3/quE+I= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd h1:zBTXXBuxdMHG/sPj53Y82iRnaU73vxz7+2n0G0Z7qAQ= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd/go.mod h1:JaHfKhcBA1csj+0udv/+H4IYoewpnNVvN3B8xubA670= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6 h1:i/SOqbbRvQ/6GjkJQDxLihMeEN/8384kr29vi+hBoZg= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7 h1:f6w4xa1MM4agqab34Yv6LaHKS5eUEi7cOou9TVGtwIY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7/go.mod h1:z/ee1KhCJocHOjnFT78i26Y2xlR1a4naMa2bPdY4z/E= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7 h1:v6ZXM+e5igFCkkjSoYctFcr9mVPFXnTg4VFnvZgOPGk= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7/go.mod h1:PxLz6iV8Z3Ql2QDylxLiljfoisGptsUVWEvbcXC8I3o= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955 h1:5LJ5YAEGNRZh5hVolC23bzViQoaT1P0MgRQu9xc7RRU= @@ -188,10 +188,10 @@ github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.2025092 github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20250929174222-a0d328fa4dec/go.mod h1:Nh2NEePLjovUQof2krTAg4JaAoLacqtPTZQXK6izNfg= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186 h1:2uSOOWJJXomiSegRgMrhbOcUQsyxEV+m7OJP4pXlCE0= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186/go.mod h1:kOdVr5xAw1jdwYJ8P9yKaqc+qbEzKhuxvOQdPfelPdg= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a h1:EgRkS/fvkrnFSlPitjxWrN3eLZJGtbwxO9VajrNDcOw= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= -github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260318144924-0bd3d126dcef h1:83l+Dz2/Isf2DSQkqK3jfuW1QdsZ8vCv89omKOd/NSg= -github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260318144924-0bd3d126dcef/go.mod h1:cj2h+WhruZtfo0Y8kFDW+VfQ7l7VXWEaY5rPjn6adlE= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e h1:mjuYX0PJjdZCuXzq+S4VLmZcAZ6BgcQLm7WB1DSfd14= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= +github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260304131340-9117f35b7132 h1:qzPcpXNvzcE9mthjPLT41jSKnBw/Ighct6Xq/eRoYLg= +github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260304131340-9117f35b7132/go.mod h1:FURkwNDovmsKaQIDpCBY9bWe554VtkknYdXGprm8pg0= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5 h1:QcAk6xiRA17p/9fL1VE4WzYWwoq9ycUVZahBPZBgbCo= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5/go.mod h1:Z43I0UN+6UUu7sC0nn/mjBmn3gYV27tu2O4wregSMg4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -277,8 +277,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/hack/export_operator_related_images.sh b/hack/export_operator_related_images.sh index a6b290b4d..c0e6cb199 100644 --- a/hack/export_operator_related_images.sh +++ b/hack/export_operator_related_images.sh @@ -6,18 +6,17 @@ export RELATED_IMAGE_DESIGNATE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s- export RELATED_IMAGE_GLANCE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/glance-operator@sha256:f649f31aca138e78f72963c98bafaeb0da514133f1d731019552c76dad08394c export RELATED_IMAGE_HEAT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/heat-operator@sha256:875a5a57ca5820e2b8b01463d5efbe0644afc288fcbb78898795d34637c1b7e2 export RELATED_IMAGE_HORIZON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/horizon-operator@sha256:67c5689bf3ea12b55f2c76e8dbefad03a980a6545d46f16493004cdcff4bfee4 -export RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/infra-operator@sha256:d5a153d4e0fd948855eb2f0d4d9e48b0a1f6cb4ee290490ec22a8d8a631b913b export RELATED_IMAGE_IRONIC_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/ironic-operator@sha256:741c1bc38c0d9430995a0d0aae6adae5c1f490b23d620564595cdd40683df68b export RELATED_IMAGE_KEYSTONE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/keystone-operator@sha256:9fd3681c6c8549a78b12dc5e83676bc0956558b01327b95598aa424d62acb189 export RELATED_IMAGE_MANILA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/manila-operator@sha256:e5f1303497321c083933cd8ab46e0c95c3f7f3f4101e0c2c3df79eb089abab9e export RELATED_IMAGE_MARIADB_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/mariadb-operator@sha256:16b276e3f22dc79232c2150ae53becd10ebcf2d9b883f7df4ff98a929eefac91 +export RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL=quay.io/lmiccini/infra-operator@sha256:76230ac3dc798dbd0d803461849d1f879a4193f0dc57c72aba938776beebe892 export RELATED_IMAGE_NEUTRON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/neutron-operator@sha256:526f9d4965431e1a5e4f8c3224bcee3f636a3108a5e0767296a994c2a517404a export RELATED_IMAGE_NOVA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/nova-operator@sha256:7398eb8fa5a4844d3326a5dff759d17199870c389b3ce3011a038b27bf95512a export RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/octavia-operator@sha256:b6d44a28b047f402b17b4cc07584f04cd6f1168d8742a9a8b17a9ce7c8550c5a export RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:3d084b1d36a44eee6d2412f49662a478752bdd7d930eda9ec4cb5a8169965d91 export RELATED_IMAGE_OVN_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/ovn-operator@sha256:bef93f71d3b42a72d8b96c69bdb4db4b8bd797c5093a0a719443d7a5c9aaab55 export RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/placement-operator@sha256:c8743a6661d118b0e5ba3eb110643358a8a3237dc75984a8f9829880b55a1622 -export RELATED_IMAGE_RABBITMQ_CLUSTER_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/rabbitmq-cluster-operator@sha256:893e66303c1b0bc1d00a299a3f0380bad55c8dc813c8a1c6a4aab379f5aa12a2 export RELATED_IMAGE_SWIFT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/swift-operator@sha256:866844c5b88e1e0518ceb7490cac9d093da3fb8b2f27ba7bd9bd89f946b9ee6e export RELATED_IMAGE_TELEMETRY_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/telemetry-operator@sha256:a5d3bc6ed05a1532661b72c6b833b3aef7c5cb399050e827c73e2a109d465fdb export RELATED_IMAGE_TEST_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/test-operator@sha256:7b0ae50ff89f31f9881d481c947b3726c023f42ee77bf46665c4a4241e3df80e diff --git a/hack/export_related_images.sh b/hack/export_related_images.sh index 52bbf16b7..493de788f 100755 --- a/hack/export_related_images.sh +++ b/hack/export_related_images.sh @@ -2,7 +2,7 @@ export OPENSTACK_RELEASE_VERSION=0.0.1-$(date +%s) export RELATED_IMAGE_OPENSTACK_CLIENT_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-openstackclient:current-podified -export RELATED_IMAGE_RABBITMQ_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-rabbitmq:current-podified +export RELATED_IMAGE_RABBITMQ_IMAGE_URL_DEFAULT=quay.io/lmiccini/openstack-rabbitmq:r42p export RELATED_IMAGE_KEYSTONE_API_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-keystone:current-podified export RELATED_IMAGE_MARIADB_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-mariadb:current-podified export RELATED_IMAGE_INFRA_MEMCACHED_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-memcached:current-podified diff --git a/hack/pin-bundle-images.sh b/hack/pin-bundle-images.sh index b85726c5b..9e2647b5e 100755 --- a/hack/pin-bundle-images.sh +++ b/hack/pin-bundle-images.sh @@ -121,8 +121,3 @@ for MOD_PATH in ${MOD_PATHS}; do echo -n ",${REPO_URL}/${BASE}-operator-bundle:$SHA" fi done -# append the rabbitmq URL only if we aren't in Dockerfile mode -if [ -z "$DOCKERFILE" ]; then - # pin rabbit to sha256 for our v2.16.0_patches fork - echo -n ",quay.io/openstack-k8s-operators/rabbitmq-cluster-operator-bundle@sha256:1612b82e274827281af1d64740a7d52e21745bc74c91d5149f111135d8e7779f" -fi diff --git a/hack/sync-bindata.sh b/hack/sync-bindata.sh index 0d7e2382b..29f4b27b1 100755 --- a/hack/sync-bindata.sh +++ b/hack/sync-bindata.sh @@ -371,13 +371,8 @@ EOF_CAT for X in $(ls manifests/*clusterserviceversion.yaml); do OPERATOR_NAME=$(echo $X | sed -e "s|manifests\/\([^\.]*\)\..*|\1|" | sed -e "s|-|_|g" | tr '[:lower:]' '[:upper:]' ) echo $OPERATOR_NAME - if [[ $OPERATOR_NAME == "RABBITMQ_CLUSTER_OPERATOR" ]]; then - # Rabbitmq cluster operator has just a container in the deployment and name is operator, different that openstack ones - IMAGE=$(cat $X | $LOCAL_BINARIES/yq -r '.spec.install.spec.deployments[0].spec.template.spec.containers.[] | select(.name == "operator") | .image') - else - # The name of the actual operator container in the openstack operators is manager - IMAGE=$(cat $X | $LOCAL_BINARIES/yq -r '.spec.install.spec.deployments[0].spec.template.spec.containers.[] | select(.name == "manager") | .image') - fi + # The name of the actual operator container in the openstack operators is manager + IMAGE=$(cat $X | $LOCAL_BINARIES/yq -r '.spec.install.spec.deployments[0].spec.template.spec.containers.[] | select(.name == "manager") | .image') echo $IMAGE diff --git a/internal/controller/operator/openstack_controller.go b/internal/controller/operator/openstack_controller.go index 22db386fe..daaa8fb5d 100644 --- a/internal/controller/operator/openstack_controller.go +++ b/internal/controller/operator/openstack_controller.go @@ -251,6 +251,11 @@ func (r *OpenStackReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( return ctrl.Result{}, err } + // cleanup rabbitmq-cluster-operator (now managed inline by infra-operator) + if err := r.cleanupRabbitMQClusterOperator(ctx, instance); err != nil { + Log.Error(err, "Failed to cleanup rabbitmq-cluster-operator resources") + } + // Check if OPENSTACK_RELEASE_VERSION has changed - if so, delete all owned resources // This is a one-time fix to handle incompatible upgrades shouldReinstall := false @@ -803,12 +808,6 @@ func (r *OpenStackReconciler) applyOperator(ctx context.Context, instance *opera Name: "METRICS_CERTS", Value: "false", }) - case operatorv1beta1.RabbitMQOperatorName: - serviceOp.Deployment.Manager.Env = append(serviceOp.Deployment.Manager.Env, - corev1.EnvVar{ - Name: "METRICS_CERTS", - Value: "false", - }) case operatorv1beta1.SwiftOperatorName: serviceOp.Deployment.Manager.Env = append(serviceOp.Deployment.Manager.Env, corev1.EnvVar{ @@ -856,9 +855,9 @@ func (r *OpenStackReconciler) applyOperator(ctx context.Context, instance *opera instance.Status.DisabledOperatorCount = &disabledOperators instance.Status.EnabledOperatorCount = &enabledOperators - // serviceOperators a copy of operators details, without openstack-operator and rabbitmq-cluster-operator - // which get removed bellow when creating openstackOperator and rabbitmqOperator, since they use dedicated - // templates + // serviceOperators a copy of operators details, without openstack-operator + // which gets removed below when creating openstackOperator, since it uses a dedicated + // template serviceOperators := operators // openstack-operator-controller-manager @@ -870,23 +869,11 @@ func (r *OpenStackReconciler) applyOperator(ctx context.Context, instance *opera serviceOperators = append(serviceOperators[:idx], serviceOperators[idx+1:]...) } - // rabbitmq-cluster-operator - rabbitmqOperator := operator.Operator{} - idx, op = operator.GetOperator(serviceOperators, operatorv1beta1.RabbitMQOperatorName) - if idx >= 0 { - rabbitmqOperator = op - // remove rabbitmq-cluster-operator from serviceOperators - serviceOperators = append(serviceOperators[:idx], serviceOperators[idx+1:]...) - } - data := bindata.MakeRenderData() // global stuff data.Data["OperatorNamespace"] = instance.Namespace - // rabbitmaq-cluster-operator-manager image rabbit.yaml - data.Data["RabbitmqOperator"] = rabbitmqOperator - // openstack-operator-controller-manager image operator.yaml data.Data["OpenStackOperator"] = openstackOperator @@ -1156,3 +1143,101 @@ func (r *OpenStackReconciler) SetupWithManager(mgr ctrl.Manager) error { For(&operatorv1beta1.OpenStack{}). Complete(r) } + +// cleanupRabbitMQClusterOperator removes the old rabbitmq-cluster-operator +// resources that are no longer needed since RabbitMQ is now managed inline +// by the infra-operator. +func (r *OpenStackReconciler) cleanupRabbitMQClusterOperator(ctx context.Context, instance *operatorv1beta1.OpenStack) error { + Log := r.GetLogger(ctx) + + // List of namespaced resources to delete + namespacedResources := []struct { + gvk schema.GroupVersionKind + name string + }{ + {schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"}, "rabbitmq-cluster-operator-manager"}, + {schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"}, "rabbitmq-cluster-operator-controller-manager"}, + {schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Service"}, "rabbitmq-cluster-operator-controller-manager-metrics-service"}, + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "Role"}, "rabbitmq-cluster-operator-leader-election-role"}, + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"}, "rabbitmq-cluster-operator-leader-election-rolebinding"}, + {schema.GroupVersionKind{Group: "cert-manager.io", Version: "v1", Kind: "Issuer"}, "rabbitmq-cluster-operator-selfsigned-issuer"}, + } + + for _, res := range namespacedResources { + obj := &uns.Unstructured{} + obj.SetGroupVersionKind(res.gvk) + obj.SetName(res.name) + obj.SetNamespace(instance.Namespace) + if err := r.Delete(ctx, obj); err != nil { + if !apierrors.IsNotFound(err) { + return fmt.Errorf("failed to delete %s %s: %w", res.gvk.Kind, res.name, err) + } + } else { + Log.Info("Deleted rabbitmq-cluster-operator resource", "kind", res.gvk.Kind, "name", res.name) + } + } + + // Cluster-scoped RBAC resources + clusterRBACResources := []struct { + gvk schema.GroupVersionKind + name string + }{ + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, "rabbitmq-cluster-operator-manager-role"}, + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, "rabbitmq-cluster-operator-proxy-role"}, + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, "rabbitmq-cluster-operator-manager-rolebinding"}, + {schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, "rabbitmq-cluster-operator-proxy-rolebinding"}, + } + + for _, res := range clusterRBACResources { + obj := &uns.Unstructured{} + obj.SetGroupVersionKind(res.gvk) + obj.SetName(res.name) + if err := r.Delete(ctx, obj); err != nil { + if !apierrors.IsNotFound(err) { + return fmt.Errorf("failed to delete %s %s: %w", res.gvk.Kind, res.name, err) + } + } else { + Log.Info("Deleted rabbitmq-cluster-operator resource", "kind", res.gvk.Kind, "name", res.name) + } + } + + // Delete the rabbitmqclusters.rabbitmq.com CRD only if no instances remain. + // The infra-operator handles deleting RabbitmqCluster CRs after reparenting. + rabbitmqClusterList := &uns.UnstructuredList{} + rabbitmqClusterList.SetGroupVersionKind(schema.GroupVersionKind{ + Group: "rabbitmq.com", + Version: "v1beta1", + Kind: "RabbitmqClusterList", + }) + canDeleteCRD := false + if err := r.List(ctx, rabbitmqClusterList); err != nil { + if apierrors.IsNotFound(err) || strings.Contains(err.Error(), "no matches for kind") { + // CRD already gone + return nil + } + Log.Info("Could not list RabbitmqCluster resources, skipping CRD deletion", "error", err.Error()) + } else if len(rabbitmqClusterList.Items) == 0 { + canDeleteCRD = true + } else { + Log.Info("RabbitmqCluster instances still exist, skipping CRD deletion", "count", len(rabbitmqClusterList.Items)) + } + + if canDeleteCRD { + crd := &uns.Unstructured{} + crd.SetGroupVersionKind(schema.GroupVersionKind{ + Group: "apiextensions.k8s.io", + Version: "v1", + Kind: "CustomResourceDefinition", + }) + crd.SetName("rabbitmqclusters.rabbitmq.com") + if err := r.Delete(ctx, crd); err != nil { + if !apierrors.IsNotFound(err) { + return fmt.Errorf("failed to delete rabbitmqclusters.rabbitmq.com CRD: %w", err) + } + } else { + Log.Info("Deleted rabbitmqclusters.rabbitmq.com CRD") + } + } + + return nil +} diff --git a/internal/openstack/rabbitmq.go b/internal/openstack/rabbitmq.go index 742b92ac8..5c71e8c79 100644 --- a/internal/openstack/rabbitmq.go +++ b/internal/openstack/rabbitmq.go @@ -26,6 +26,7 @@ import ( "k8s.io/utils/ptr" k8s_errors "k8s.io/apimachinery/pkg/api/errors" + apimeta "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" @@ -277,6 +278,13 @@ func reconcileRabbitMQ( rabbitmq.Spec.TLS.CaSecretName = tlsCert rabbitmq.Spec.TLS.DisableNonTLSListeners = true } + // set the target rabbitmq-server version in spec + if version.Status.ServiceDefaults.RabbitmqVersion != nil { + rabbitmq.Spec.TargetVersion = version.Status.ServiceDefaults.RabbitmqVersion + } else { + rabbitmq.Spec.TargetVersion = ptr.To("3.9") + } + rabbitmq.Spec.ContainerImage = *version.Status.ContainerImages.RabbitmqImage err := controllerutil.SetControllerReference(helper.GetBeforeObject(), rabbitmq, helper.GetScheme()) if err != nil { @@ -313,7 +321,7 @@ func removeRabbitmqClusterControllerReference( Namespace: instance.Namespace, } if err := helper.GetClient().Get(ctx, namespacedName, rabbitmqCluster); err != nil { - if k8s_errors.IsNotFound(err) { + if k8s_errors.IsNotFound(err) || apimeta.IsNoMatchError(err) { return nil } return err diff --git a/internal/openstack/version.go b/internal/openstack/version.go index f15e6c191..5eaf78718 100644 --- a/internal/openstack/version.go +++ b/internal/openstack/version.go @@ -230,6 +230,9 @@ func InitializeOpenStackVersionServiceDefaults(ctx context.Context) *corev1beta1 trueString := "true" defaults.GlanceWsgi = &trueString // all new glance deployments use WSGI by default (FR3 and later) + versionString := "4.2" + defaults.RabbitmqVersion = &versionString // all new rabbitmq deployments will have rabbitmq-server 4.2 (FR5) + return defaults } diff --git a/test/kuttl/tests/ctlplane-basic-deployment-with-appcred/05-cleanup.yaml b/test/kuttl/tests/ctlplane-basic-deployment-with-appcred/05-cleanup.yaml index df9df9fe0..c7a8395e9 100644 --- a/test/kuttl/tests/ctlplane-basic-deployment-with-appcred/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-basic-deployment-with-appcred/05-cleanup.yaml @@ -6,6 +6,9 @@ delete: name: openstack commands: - script: | + oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-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 diff --git a/test/kuttl/tests/ctlplane-basic-deployment-with-nicMappings/05-cleanup.yaml b/test/kuttl/tests/ctlplane-basic-deployment-with-nicMappings/05-cleanup.yaml index 6b4992512..6a724fcc8 100644 --- a/test/kuttl/tests/ctlplane-basic-deployment-with-nicMappings/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-basic-deployment-with-nicMappings/05-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-basic-deployment/05-cleanup.yaml b/test/kuttl/tests/ctlplane-basic-deployment/05-cleanup.yaml index 6b4992512..6a724fcc8 100644 --- a/test/kuttl/tests/ctlplane-basic-deployment/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-basic-deployment/05-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-collapsed/02-cleanup.yaml b/test/kuttl/tests/ctlplane-collapsed/02-cleanup.yaml index 0f45e50bc..081990043 100644 --- a/test/kuttl/tests/ctlplane-collapsed/02-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-collapsed/02-cleanup.yaml @@ -6,6 +6,9 @@ delete: name: openstack-collapsed-cell commands: - script: | + oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-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 diff --git a/test/kuttl/tests/ctlplane-galera-3replicas/02-cleanup.yaml b/test/kuttl/tests/ctlplane-galera-3replicas/02-cleanup.yaml index 22507881a..77ba1da30 100644 --- a/test/kuttl/tests/ctlplane-galera-3replicas/02-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-galera-3replicas/02-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ mysql-db-openstack-galera-0 \ mysql-db-openstack-galera-1 \ mysql-db-openstack-galera-2 \ diff --git a/test/kuttl/tests/ctlplane-nodeselectors/05-cleanup.yaml b/test/kuttl/tests/ctlplane-nodeselectors/05-cleanup.yaml index 722a0e8b1..1dc965afb 100644 --- a/test/kuttl/tests/ctlplane-nodeselectors/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-nodeselectors/05-cleanup.yaml @@ -8,6 +8,8 @@ commands: - script: | oc annotate namespace $NAMESPACE openshift.io/node-selector- oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-staged-deployment/03-cleanup.yaml b/test/kuttl/tests/ctlplane-staged-deployment/03-cleanup.yaml index 6b4992512..6a724fcc8 100644 --- a/test/kuttl/tests/ctlplane-staged-deployment/03-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-staged-deployment/03-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-tls-cert-rotation/05-cleanup.yaml b/test/kuttl/tests/ctlplane-tls-cert-rotation/05-cleanup.yaml index 6b4992512..6a724fcc8 100644 --- a/test/kuttl/tests/ctlplane-tls-cert-rotation/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-tls-cert-rotation/05-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-tls-custom-issuers/05-cleanup.yaml b/test/kuttl/tests/ctlplane-tls-custom-issuers/05-cleanup.yaml index 6b4992512..6a724fcc8 100644 --- a/test/kuttl/tests/ctlplane-tls-custom-issuers/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-tls-custom-issuers/05-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE oc delete secret -l service-cert -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-tls-custom-issuers/11-cleanup.yaml b/test/kuttl/tests/ctlplane-tls-custom-issuers/11-cleanup.yaml index 6fdd31ed9..98bfa81cd 100644 --- a/test/kuttl/tests/ctlplane-tls-custom-issuers/11-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-tls-custom-issuers/11-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete --ignore-not-found=true -n $NAMESPACE issuer rootca-internal-custom rootca-ingress-custom oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE diff --git a/test/kuttl/tests/ctlplane-tls-custom-route/05-cleanup.yaml b/test/kuttl/tests/ctlplane-tls-custom-route/05-cleanup.yaml index 6fdd31ed9..98bfa81cd 100644 --- a/test/kuttl/tests/ctlplane-tls-custom-route/05-cleanup.yaml +++ b/test/kuttl/tests/ctlplane-tls-custom-route/05-cleanup.yaml @@ -7,6 +7,8 @@ delete: commands: - script: | oc delete --ignore-not-found=true -n $NAMESPACE pvc \ + persistence-rabbitmq-server-0 \ + persistence-rabbitmq-cell1-server-0 \ srv-swift-storage-0 oc delete --ignore-not-found=true -n $NAMESPACE issuer rootca-internal-custom rootca-ingress-custom oc delete secret --ignore-not-found=true combined-ca-bundle -n $NAMESPACE From bf22505b07faf7241c13d13c905ecd4e4230426f Mon Sep 17 00:00:00 2001 From: Luca Miccini Date: Mon, 23 Mar 2026 14:21:29 +0100 Subject: [PATCH 2/2] Migrate override.service fields after DeepCopyInto in RabbitMQ reconcile DeepCopyInto overwrites the entire RabbitMqSpecCore from the template, which may have override.service set (old format) but not service.type (new format). Propagate override.service values to the service field after DeepCopyInto to avoid relying solely on the webhook for migration. Co-Authored-By: Claude Opus 4.6 --- api/go.mod | 2 +- api/go.sum | 72 ++++++++-------- config/operator/manager_operator_images.yaml | 2 +- go.mod | 2 +- go.sum | 88 ++++++++++---------- hack/export_operator_related_images.sh | 2 +- internal/openstack/rabbitmq.go | 17 ++++ 7 files changed, 101 insertions(+), 84 deletions(-) diff --git a/api/go.mod b/api/go.mod index 0b5eb32d5..b7259be03 100644 --- a/api/go.mod +++ b/api/go.mod @@ -143,4 +143,4 @@ replace k8s.io/component-base => k8s.io/component-base v0.31.14 //allow-merging replace github.com/cert-manager/cmctl/v2 => github.com/cert-manager/cmctl/v2 v2.1.2-0.20241127223932-88edb96860cf //allow-merging -replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de +replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429 diff --git a/api/go.sum b/api/go.sum index 2b44f3b9e..267ff8571 100644 --- a/api/go.sum +++ b/api/go.sum @@ -90,8 +90,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de h1:kapZ0xUDC+MrtXXLmqvuWQg5nxuFNoxM/EfhXhsxdnY= -github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= +github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429 h1:QwkH9nTpHVmflD0ABJZCN0V2N3XvlCkfYgmQthkMg2k= +github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -116,48 +116,48 @@ github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e h1:E1OdwSpqWuDPCedyUt0GEdoAE+r5TXy7YS21yNEo+2U= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e/go.mod h1:Shkl4HanLwDiiBzakv+con/aMGnVE2MAGvoKp5oyYUo= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b h1:DLD0G/JbkC+ddNgHvw3/bpvDXlpFmoGdGT89+jVNiNY= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b/go.mod h1:GUSRylpcflm0a2Awsli7SHwa6ZPjL1FLvwFhu5RQ0SU= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f h1:zN73a9xm98uHpg9q/Owy/jyCyGJnrvvqdEF/UT+u328= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f/go.mod h1:FM7/Q+IjKsSOrWHzbgfEwym3XXZRWIKalpFrBbSMk6Q= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95 h1:OkoxRV9FQyBRo0MEctoKUKfS5T8D2+Z5rv92+5KWQpM= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95/go.mod h1:xhtJWduS/PTOF7xQDxDjVHRee3twrK+gzPECScMBWb4= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72 h1:Z7CzLGKRp8pg1bCK0JsO3y/NNNGd1HFKZ5XTl5xLj1M= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72/go.mod h1:TLRqdtji6ZhMcwI/uy70t8cKmIDjo/q4bjUUOYbeB+Y= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9 h1:Uk8OcXocKOb6KZ+EXnGOEjda4nNUz/Z6H3BBaH23F5s= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9/go.mod h1:8o0wLkMYyDDqZAdvU/YKMwgwiOyQzADWrmy38rZcHyE= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc h1:3r2wVspdAWx4j7ZScrukfLiPcGM7J9S/ClyOHsbY7ro= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc/go.mod h1:P0hUdNDsv8ISnK2GyFogNQF+dxatbKhtQ76UKhX6t7w= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34 h1:UgaEid1bqgUzsLg21BHtXSYOV2pljxR1Z3i1BcRVNQc= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34/go.mod h1:xEHdAz96FYfnBb1QAFgbfR2BCWCBIqhqKYT84IqU6zc= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581 h1:FntUoWPVWx8xaGCwP7kdUVT/N8Z0kfIxLLK4L+oQJ7c= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581/go.mod h1:l15wx+Qxi/I9Nlj6u6PheZqkf9dBW7cCxAcjl8zsu+8= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e h1:EXpPxBaSHBDyAXhDApotNd9AZOm/DQfvAKdrWO5W4XA= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e h1:42OT26Ak0lwWbJDNwhv/0HsjafVkLyPhfonS5DjDb2g= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e h1:lHsE9kmPzGHfO6o9vXj6f5UTIlQRJNdrvrj8GWy/ct8= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463 h1:pqCtFGMf5haCOq9KYaykKjEE2NZIJI5nECVYvW+FZbY= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463/go.mod h1:KTkOh3/8ReJdkG0NkaDGq45eCIU6aUISvWP/b59y9tA= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727 h1:+IVZR4jm1MvVeoxS75cHNOsW7sf6jGdXx7kTnOSOxiw= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727/go.mod h1:bUpTGnR9HF19rD2Ow6IU8wJk+xrBtKdeA8PFjpguEh8= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d h1:I0irWEHQayqVYiLwrAm74WuRoOvK+vi9LYLh977uHaQ= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d/go.mod h1:CsJPeetdAsW1tWwjgeS/BTtASLrkG8WfzZnCggl1OVg= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df h1:AasR8YeZ0CfPtl1uolhb8kQmPGB3LCAPnY77Zfqp62k= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df/go.mod h1:82/md756vpv6AQhtRUkeL923qaX6Uu2sfnHdgfgJkFA= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0 h1:KRQ8YQeA6HegAeoS6qoIkxJqbGcumvH4FUyj4L1Q19g= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0/go.mod h1:eYiZSSr4liFHK3ycScT2V0egI6JXx3ffxh6kGZsP0bk= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753 h1:liEY4nDerLxsXvtmgFhSmxRtDQwXjpJY5RBIEJRKqIM= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753/go.mod h1:DLiEQFdAeeqAWDzsm19iKnnO+aLQeYeA7edIS9qlj2E= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5 h1:x0MjtALo7BqY3PD7ZmYYHVpcxpBki60f/CYpdImHt+s= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5/go.mod h1:D/clVT1Pf25PC/N2SEQiB2QQO/TF2IBCOPT5VkNkhHQ= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3 h1:t80wfV1UAjxA0ey3LHRsiJgoL6OEuBqOjqU6yvn7nOg= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3/go.mod h1:qQ7Ie2fWv5PnlffsAWlv6Y7jUgFbG0WQVZHCOgS0d/Y= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6 h1:8jpYazj7pGgzomNtQFL+BW5VxtDjRMfNJ7pTd53+5fw= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6/go.mod h1:y5Er36n6rjQA2Gi3dtwamhyeqWTGBIszN+ZexsvJCIo= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f h1:60I2YLHRznTY2BQXqXWc+ByJ3ipdQgKgW52t9J8C5DY= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f/go.mod h1:8o6LSPt1VAvvB2ngS2QObGS6HEikSdVpHoKIgmb78KI= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18 h1:P1Nx+i6aH7rFy+T4nrB2AlQzzoLMrMwtnZPEsFvC5cM= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eJDwc8LPJg+H4bHMLh/pDJBk+OezQ+wkjUNpExUFhbM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18 h1:9lbaamHYKiWQq/Vth69GGNxQz67qC+PbeQdkXvUEeNo= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7 h1:0iQ9FFFI1/y6m2qi2O9NLyj90KmajuZOr1FTSsPdrPw= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7/go.mod h1:O6PjMV49R7rfZyCmufUdVwiKBc5XW/dNJYSLSut/PRI= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70 h1:4REWM4l6kTOH14dsBSp/hhNdULbq3LDoCvfMWofPx4k= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70/go.mod h1:cyeexUkEIgzQ3c1vVVv/DQ3AbnECfDwKdZteKC+sZKY= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d h1:oKRiIKhr1dm1wudWqBMvLViMPlXqi8B+PQT2Mv7rsj4= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d/go.mod h1:ljfpLBr2EyNAS7W7c+CQy61UhkwALTVLWl2Mc9YTSNA= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3 h1:W85oaZBQ/XmaPshZjOi46VMkzRUmZ17WDXbWcl4S6eM= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3/go.mod h1:ZQpGqN3AszLv7OoySPuCFyrNkuOEi1lPTymhbd1gOrc= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6 h1:i/SOqbbRvQ/6GjkJQDxLihMeEN/8384kr29vi+hBoZg= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7 h1:f6w4xa1MM4agqab34Yv6LaHKS5eUEi7cOou9TVGtwIY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7/go.mod h1:z/ee1KhCJocHOjnFT78i26Y2xlR1a4naMa2bPdY4z/E= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b h1:4vBr+f5KLrvg8XUtzWJ7F7fiJXS9UFMGnbPn3/quE+I= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd h1:zBTXXBuxdMHG/sPj53Y82iRnaU73vxz7+2n0G0Z7qAQ= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd/go.mod h1:JaHfKhcBA1csj+0udv/+H4IYoewpnNVvN3B8xubA670= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7 h1:v6ZXM+e5igFCkkjSoYctFcr9mVPFXnTg4VFnvZgOPGk= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7/go.mod h1:PxLz6iV8Z3Ql2QDylxLiljfoisGptsUVWEvbcXC8I3o= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955 h1:5LJ5YAEGNRZh5hVolC23bzViQoaT1P0MgRQu9xc7RRU= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955/go.mod h1:+8lsJYJYsR8fBvgY4Wtvde4iY+l9O5PBPf6yhVQ1LQU= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186 h1:2uSOOWJJXomiSegRgMrhbOcUQsyxEV+m7OJP4pXlCE0= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186/go.mod h1:kOdVr5xAw1jdwYJ8P9yKaqc+qbEzKhuxvOQdPfelPdg= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e h1:mjuYX0PJjdZCuXzq+S4VLmZcAZ6BgcQLm7WB1DSfd14= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a h1:EgRkS/fvkrnFSlPitjxWrN3eLZJGtbwxO9VajrNDcOw= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5 h1:QcAk6xiRA17p/9fL1VE4WzYWwoq9ycUVZahBPZBgbCo= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5/go.mod h1:Z43I0UN+6UUu7sC0nn/mjBmn3gYV27tu2O4wregSMg4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -212,8 +212,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/config/operator/manager_operator_images.yaml b/config/operator/manager_operator_images.yaml index aa34c4307..f5948d8ba 100644 --- a/config/operator/manager_operator_images.yaml +++ b/config/operator/manager_operator_images.yaml @@ -26,7 +26,7 @@ spec: - name: RELATED_IMAGE_HORIZON_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/horizon-operator@sha256:67c5689bf3ea12b55f2c76e8dbefad03a980a6545d46f16493004cdcff4bfee4 - name: RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL - value: quay.io/lmiccini/infra-operator@sha256:76230ac3dc798dbd0d803461849d1f879a4193f0dc57c72aba938776beebe892 + value: quay.io/lmiccini/infra-operator@sha256:e05efe1bebd32134d2ad07a5bb3535d4a09e99f50e4365575d698a74d9a1d85b - name: RELATED_IMAGE_IRONIC_OPERATOR_MANAGER_IMAGE_URL value: quay.io/openstack-k8s-operators/ironic-operator@sha256:741c1bc38c0d9430995a0d0aae6adae5c1f490b23d620564595cdd40683df68b - name: RELATED_IMAGE_KEYSTONE_OPERATOR_MANAGER_IMAGE_URL diff --git a/go.mod b/go.mod index 69b1dd8a3..03f20e5e2 100644 --- a/go.mod +++ b/go.mod @@ -182,4 +182,4 @@ replace k8s.io/component-base => k8s.io/component-base v0.31.14 //allow-merging replace github.com/cert-manager/cmctl/v2 => github.com/cert-manager/cmctl/v2 v2.1.2-0.20241127223932-88edb96860cf //allow-merging -replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de +replace github.com/openstack-k8s-operators/infra-operator/apis => github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429 diff --git a/go.sum b/go.sum index 77625c361..467b26886 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de h1:kapZ0xUDC+MrtXXLmqvuWQg5nxuFNoxM/EfhXhsxdnY= -github.com/lmiccini/infra-operator/apis v0.0.0-20260320164938-2057972ad9de/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= +github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429 h1:QwkH9nTpHVmflD0ABJZCN0V2N3XvlCkfYgmQthkMg2k= +github.com/lmiccini/infra-operator/apis v0.0.0-20260323131947-8d359988b429/go.mod h1:QXzR9220I2d7CcoHqL4HWtU1PogJSN3NLmnh+bK3mco= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -140,46 +140,46 @@ github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e h1:E1OdwSpqWuDPCedyUt0GEdoAE+r5TXy7YS21yNEo+2U= github.com/openshift/api v0.0.0-20250711200046-c86d80652a9e/go.mod h1:Shkl4HanLwDiiBzakv+con/aMGnVE2MAGvoKp5oyYUo= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b h1:DLD0G/JbkC+ddNgHvw3/bpvDXlpFmoGdGT89+jVNiNY= -github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260314075329-07972699673b/go.mod h1:GUSRylpcflm0a2Awsli7SHwa6ZPjL1FLvwFhu5RQ0SU= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f h1:zN73a9xm98uHpg9q/Owy/jyCyGJnrvvqdEF/UT+u328= -github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260314075323-13c875b58d0f/go.mod h1:FM7/Q+IjKsSOrWHzbgfEwym3XXZRWIKalpFrBbSMk6Q= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95 h1:OkoxRV9FQyBRo0MEctoKUKfS5T8D2+Z5rv92+5KWQpM= -github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260314103230-ba6e6b4b4a95/go.mod h1:xhtJWduS/PTOF7xQDxDjVHRee3twrK+gzPECScMBWb4= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72 h1:Z7CzLGKRp8pg1bCK0JsO3y/NNNGd1HFKZ5XTl5xLj1M= -github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260314075608-2c0ea188dc72/go.mod h1:TLRqdtji6ZhMcwI/uy70t8cKmIDjo/q4bjUUOYbeB+Y= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9 h1:Uk8OcXocKOb6KZ+EXnGOEjda4nNUz/Z6H3BBaH23F5s= -github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260314075609-1b85a36fcef9/go.mod h1:8o0wLkMYyDDqZAdvU/YKMwgwiOyQzADWrmy38rZcHyE= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc h1:3r2wVspdAWx4j7ZScrukfLiPcGM7J9S/ClyOHsbY7ro= -github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260314075038-6794e497bcfc/go.mod h1:P0hUdNDsv8ISnK2GyFogNQF+dxatbKhtQ76UKhX6t7w= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34 h1:UgaEid1bqgUzsLg21BHtXSYOV2pljxR1Z3i1BcRVNQc= -github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260314080422-d98151f45e34/go.mod h1:xEHdAz96FYfnBb1QAFgbfR2BCWCBIqhqKYT84IqU6zc= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581 h1:FntUoWPVWx8xaGCwP7kdUVT/N8Z0kfIxLLK4L+oQJ7c= -github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260314080138-b41734470581/go.mod h1:l15wx+Qxi/I9Nlj6u6PheZqkf9dBW7cCxAcjl8zsu+8= -github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260310070607-b96da8dd520e h1:X7HkZG8rWmb5qK5IrGVuAQj1qCsjBRlo2JZyOPjmAiY= -github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:tXxVkkk8HlATwTmDA5RTP3b+c8apfuMM15mZ2wW5iNs= -github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260310070607-b96da8dd520e h1:OthI0EGrntYyFV0YkQHJ1i4sYcylWBeh09x1lxK97ak= -github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:GzD7Jc5o98ptJ97DSjhC0CQ6OiTP0PB/2qJqxYGcOH8= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e h1:EXpPxBaSHBDyAXhDApotNd9AZOm/DQfvAKdrWO5W4XA= -github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e h1:42OT26Ak0lwWbJDNwhv/0HsjafVkLyPhfonS5DjDb2g= -github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e h1:lHsE9kmPzGHfO6o9vXj6f5UTIlQRJNdrvrj8GWy/ct8= -github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= -github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260310070607-b96da8dd520e h1:PrtVs2n0tiuDH4TnTLf/J8GZi0nnd7lizUqWNT5tv2k= -github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260310070607-b96da8dd520e/go.mod h1:dEjz8zHRIlP3vnMmWdHytlLeSZ6BHcIiSTPM7xTQxFg= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463 h1:pqCtFGMf5haCOq9KYaykKjEE2NZIJI5nECVYvW+FZbY= -github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260314085148-3542cd0de463/go.mod h1:KTkOh3/8ReJdkG0NkaDGq45eCIU6aUISvWP/b59y9tA= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727 h1:+IVZR4jm1MvVeoxS75cHNOsW7sf6jGdXx7kTnOSOxiw= -github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260314091348-5c473d964727/go.mod h1:bUpTGnR9HF19rD2Ow6IU8wJk+xrBtKdeA8PFjpguEh8= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d h1:I0irWEHQayqVYiLwrAm74WuRoOvK+vi9LYLh977uHaQ= +github.com/openstack-k8s-operators/barbican-operator/api v0.6.1-0.20260321080732-c31d77fca95d/go.mod h1:CsJPeetdAsW1tWwjgeS/BTtASLrkG8WfzZnCggl1OVg= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df h1:AasR8YeZ0CfPtl1uolhb8kQmPGB3LCAPnY77Zfqp62k= +github.com/openstack-k8s-operators/cinder-operator/api v0.6.1-0.20260321080732-8652f3efe4df/go.mod h1:82/md756vpv6AQhtRUkeL923qaX6Uu2sfnHdgfgJkFA= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0 h1:KRQ8YQeA6HegAeoS6qoIkxJqbGcumvH4FUyj4L1Q19g= +github.com/openstack-k8s-operators/designate-operator/api v0.6.1-0.20260321080424-30da87862de0/go.mod h1:eYiZSSr4liFHK3ycScT2V0egI6JXx3ffxh6kGZsP0bk= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753 h1:liEY4nDerLxsXvtmgFhSmxRtDQwXjpJY5RBIEJRKqIM= +github.com/openstack-k8s-operators/glance-operator/api v0.6.1-0.20260321081011-835a7b2f1753/go.mod h1:DLiEQFdAeeqAWDzsm19iKnnO+aLQeYeA7edIS9qlj2E= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5 h1:x0MjtALo7BqY3PD7ZmYYHVpcxpBki60f/CYpdImHt+s= +github.com/openstack-k8s-operators/heat-operator/api v0.6.1-0.20260321081011-0ad5f7292fb5/go.mod h1:D/clVT1Pf25PC/N2SEQiB2QQO/TF2IBCOPT5VkNkhHQ= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3 h1:t80wfV1UAjxA0ey3LHRsiJgoL6OEuBqOjqU6yvn7nOg= +github.com/openstack-k8s-operators/horizon-operator/api v0.6.1-0.20260321080731-03e8ffbd65e3/go.mod h1:qQ7Ie2fWv5PnlffsAWlv6Y7jUgFbG0WQVZHCOgS0d/Y= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6 h1:8jpYazj7pGgzomNtQFL+BW5VxtDjRMfNJ7pTd53+5fw= +github.com/openstack-k8s-operators/ironic-operator/api v0.6.1-0.20260321081258-5c806856eeb6/go.mod h1:y5Er36n6rjQA2Gi3dtwamhyeqWTGBIszN+ZexsvJCIo= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f h1:60I2YLHRznTY2BQXqXWc+ByJ3ipdQgKgW52t9J8C5DY= +github.com/openstack-k8s-operators/keystone-operator/api v0.6.1-0.20260321081256-de45f3b1de4f/go.mod h1:8o6LSPt1VAvvB2ngS2QObGS6HEikSdVpHoKIgmb78KI= +github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eUO7qu+f2/kJ6BVKgndBzMhnrxLaybHboXJKMi6HLww= +github.com/openstack-k8s-operators/lib-common/modules/ansible v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:tXxVkkk8HlATwTmDA5RTP3b+c8apfuMM15mZ2wW5iNs= +github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260320125710-3a5f82ff0f18 h1:wD5wuETMEpXiBdcMMFiY1bVpXrbiV5RM5Q4tIU46Xhk= +github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:GzD7Jc5o98ptJ97DSjhC0CQ6OiTP0PB/2qJqxYGcOH8= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18 h1:P1Nx+i6aH7rFy+T4nrB2AlQzzoLMrMwtnZPEsFvC5cM= +github.com/openstack-k8s-operators/lib-common/modules/common v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:+vcGsjqibpMUz3y/g0B5YIXNotlTvQdMB6f92siiwKM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18 h1:eJDwc8LPJg+H4bHMLh/pDJBk+OezQ+wkjUNpExUFhbM= +github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:7yqbVpg0k0vW+kZks+TMU/cd1ovoejyHfVPWcyGYLHI= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18 h1:9lbaamHYKiWQq/Vth69GGNxQz67qC+PbeQdkXvUEeNo= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:3loLaPUDQyvbPekylZd9OCLF+EXH2klRI9IeeQhuMcs= +github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260320125710-3a5f82ff0f18 h1:beEKU5yv6ih8pbIqrU15QP0sGDXyxrKqVMh3zHDscrI= +github.com/openstack-k8s-operators/lib-common/modules/test v0.6.1-0.20260320125710-3a5f82ff0f18/go.mod h1:dEjz8zHRIlP3vnMmWdHytlLeSZ6BHcIiSTPM7xTQxFg= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7 h1:0iQ9FFFI1/y6m2qi2O9NLyj90KmajuZOr1FTSsPdrPw= +github.com/openstack-k8s-operators/manila-operator/api v0.6.1-0.20260321081547-64d64a0c02c7/go.mod h1:O6PjMV49R7rfZyCmufUdVwiKBc5XW/dNJYSLSut/PRI= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70 h1:4REWM4l6kTOH14dsBSp/hhNdULbq3LDoCvfMWofPx4k= +github.com/openstack-k8s-operators/mariadb-operator/api v0.6.1-0.20260321081546-85bcf5293c70/go.mod h1:cyeexUkEIgzQ3c1vVVv/DQ3AbnECfDwKdZteKC+sZKY= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d h1:oKRiIKhr1dm1wudWqBMvLViMPlXqi8B+PQT2Mv7rsj4= github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20260314103518-fe1a1eae182d/go.mod h1:ljfpLBr2EyNAS7W7c+CQy61UhkwALTVLWl2Mc9YTSNA= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3 h1:W85oaZBQ/XmaPshZjOi46VMkzRUmZ17WDXbWcl4S6eM= github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20260314091347-3f967274eff3/go.mod h1:ZQpGqN3AszLv7OoySPuCFyrNkuOEi1lPTymhbd1gOrc= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6 h1:i/SOqbbRvQ/6GjkJQDxLihMeEN/8384kr29vi+hBoZg= -github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260314103518-fbebe65acec6/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7 h1:f6w4xa1MM4agqab34Yv6LaHKS5eUEi7cOou9TVGtwIY= -github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260314104055-3878b7bcd6b7/go.mod h1:z/ee1KhCJocHOjnFT78i26Y2xlR1a4naMa2bPdY4z/E= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b h1:4vBr+f5KLrvg8XUtzWJ7F7fiJXS9UFMGnbPn3/quE+I= +github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20260320063057-a82e61ffdd6b/go.mod h1:XO02J/MSp7f+HMyoT5xImUvTtDvDY4SgG2mi+nwdTMY= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd h1:zBTXXBuxdMHG/sPj53Y82iRnaU73vxz7+2n0G0Z7qAQ= +github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20260321082950-d7798d4bc5bd/go.mod h1:JaHfKhcBA1csj+0udv/+H4IYoewpnNVvN3B8xubA670= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7 h1:v6ZXM+e5igFCkkjSoYctFcr9mVPFXnTg4VFnvZgOPGk= github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20260314104343-4225d7a41ec7/go.mod h1:PxLz6iV8Z3Ql2QDylxLiljfoisGptsUVWEvbcXC8I3o= github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20260314091105-4ba8bc4c4955 h1:5LJ5YAEGNRZh5hVolC23bzViQoaT1P0MgRQu9xc7RRU= @@ -188,10 +188,10 @@ github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.2025092 github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20250929174222-a0d328fa4dec/go.mod h1:Nh2NEePLjovUQof2krTAg4JaAoLacqtPTZQXK6izNfg= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186 h1:2uSOOWJJXomiSegRgMrhbOcUQsyxEV+m7OJP4pXlCE0= github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20260314085148-07c5c7f39186/go.mod h1:kOdVr5xAw1jdwYJ8P9yKaqc+qbEzKhuxvOQdPfelPdg= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e h1:mjuYX0PJjdZCuXzq+S4VLmZcAZ6BgcQLm7WB1DSfd14= -github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260314104344-15c2ffcfe08e/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= -github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260304131340-9117f35b7132 h1:qzPcpXNvzcE9mthjPLT41jSKnBw/Ighct6Xq/eRoYLg= -github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260304131340-9117f35b7132/go.mod h1:FURkwNDovmsKaQIDpCBY9bWe554VtkknYdXGprm8pg0= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a h1:EgRkS/fvkrnFSlPitjxWrN3eLZJGtbwxO9VajrNDcOw= +github.com/openstack-k8s-operators/telemetry-operator/api v0.6.1-0.20260320110651-64eb99221d5a/go.mod h1:htVoPbguZfrRyEs4NNK6WpSpofHagOx5oNtJbyt8SVY= +github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260318144924-0bd3d126dcef h1:83l+Dz2/Isf2DSQkqK3jfuW1QdsZ8vCv89omKOd/NSg= +github.com/openstack-k8s-operators/test-operator/api v0.6.1-0.20260318144924-0bd3d126dcef/go.mod h1:cj2h+WhruZtfo0Y8kFDW+VfQ7l7VXWEaY5rPjn6adlE= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5 h1:QcAk6xiRA17p/9fL1VE4WzYWwoq9ycUVZahBPZBgbCo= github.com/openstack-k8s-operators/watcher-operator/api v0.6.1-0.20260309154718-a9587689aba5/go.mod h1:Z43I0UN+6UUu7sC0nn/mjBmn3gYV27tu2O4wregSMg4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -277,8 +277,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/hack/export_operator_related_images.sh b/hack/export_operator_related_images.sh index c0e6cb199..db8900a3d 100644 --- a/hack/export_operator_related_images.sh +++ b/hack/export_operator_related_images.sh @@ -6,11 +6,11 @@ export RELATED_IMAGE_DESIGNATE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s- export RELATED_IMAGE_GLANCE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/glance-operator@sha256:f649f31aca138e78f72963c98bafaeb0da514133f1d731019552c76dad08394c export RELATED_IMAGE_HEAT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/heat-operator@sha256:875a5a57ca5820e2b8b01463d5efbe0644afc288fcbb78898795d34637c1b7e2 export RELATED_IMAGE_HORIZON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/horizon-operator@sha256:67c5689bf3ea12b55f2c76e8dbefad03a980a6545d46f16493004cdcff4bfee4 +export RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL=quay.io/lmiccini/infra-operator@sha256:e05efe1bebd32134d2ad07a5bb3535d4a09e99f50e4365575d698a74d9a1d85b export RELATED_IMAGE_IRONIC_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/ironic-operator@sha256:741c1bc38c0d9430995a0d0aae6adae5c1f490b23d620564595cdd40683df68b export RELATED_IMAGE_KEYSTONE_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/keystone-operator@sha256:9fd3681c6c8549a78b12dc5e83676bc0956558b01327b95598aa424d62acb189 export RELATED_IMAGE_MANILA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/manila-operator@sha256:e5f1303497321c083933cd8ab46e0c95c3f7f3f4101e0c2c3df79eb089abab9e export RELATED_IMAGE_MARIADB_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/mariadb-operator@sha256:16b276e3f22dc79232c2150ae53becd10ebcf2d9b883f7df4ff98a929eefac91 -export RELATED_IMAGE_INFRA_OPERATOR_MANAGER_IMAGE_URL=quay.io/lmiccini/infra-operator@sha256:76230ac3dc798dbd0d803461849d1f879a4193f0dc57c72aba938776beebe892 export RELATED_IMAGE_NEUTRON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/neutron-operator@sha256:526f9d4965431e1a5e4f8c3224bcee3f636a3108a5e0767296a994c2a517404a export RELATED_IMAGE_NOVA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/nova-operator@sha256:7398eb8fa5a4844d3326a5dff759d17199870c389b3ce3011a038b27bf95512a export RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/octavia-operator@sha256:b6d44a28b047f402b17b4cc07584f04cd6f1168d8742a9a8b17a9ce7c8550c5a diff --git a/internal/openstack/rabbitmq.go b/internal/openstack/rabbitmq.go index 5c71e8c79..976875d5d 100644 --- a/internal/openstack/rabbitmq.go +++ b/internal/openstack/rabbitmq.go @@ -268,6 +268,23 @@ func reconcileRabbitMQ( op, err := controllerutil.CreateOrPatch(ctx, helper.GetClient(), rabbitmq, func() error { spec.DeepCopyInto(&rabbitmq.Spec.RabbitMqSpecCore) + + // Migrate deprecated override.service fields to the new service field. + // DeepCopyInto copies the template which may have override.service set + // (old format) but not service.type (new format), so we propagate here + // to avoid relying solely on the webhook for migration. + if rabbitmq.Spec.Override != nil && rabbitmq.Spec.Override.Service != nil { + if rabbitmq.Spec.Override.Service.Spec != nil && rabbitmq.Spec.Override.Service.Spec.Type != "" { + rabbitmq.Spec.Service.Type = rabbitmq.Spec.Override.Service.Spec.Type + } + if len(rabbitmq.Spec.Service.Annotations) == 0 && rabbitmq.Spec.Override.Service.Annotations != nil { + rabbitmq.Spec.Service.Annotations = make(map[string]string) + for k, v := range rabbitmq.Spec.Override.Service.Annotations { + rabbitmq.Spec.Service.Annotations[k] = v + } + } + } + if rabbitmq.Spec.Persistence.StorageClassName == nil { log.Info(fmt.Sprintf("Setting StorageClassName: %s", instance.Spec.StorageClass)) rabbitmq.Spec.Persistence.StorageClassName = &instance.Spec.StorageClass