Skip to content

Commit 1fad42f

Browse files
committed
[b/r] Add backup/restore labels to ControlPlane controller
Wire the BackupConfig reconciliation into the ControlPlane controller with proper condition handling (OpenStackControlPlaneBackupConfigReady). Add backup/restore labels to CA cert secrets via SecretTemplate, and restore=false labels to internal service cert requests. Add the ReconcileBackupConfig call, secret watch with annotation change predicate, and RBAC for openstackbackupconfigs. Set BackupConfig spec defaults in the CreateOrPatch mutate function. Label custom Issuers for backup/restore in addIssuerLabelAnnotation after removeIssuerLabel so the MatchingLabels query only uses CA selector labels. Remove getCertSecretBackupLabels wrapper, call backup.GetCertSecretBackupLabels directly. Return error from GetCertSecretBackupLabels for non-NotFound errors. Rename GetConfig parameter from gvk to crdName. Jira: OSPRH-22912 Jira: OSPRH-22913
1 parent 465c956 commit 1fad42f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+293
-30
lines changed

api/bases/core.openstack.org_openstackcontrolplanes.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.18.0
7+
labels:
8+
backup.openstack.org/category: controlplane
9+
backup.openstack.org/restore: "true"
10+
backup.openstack.org/restore-order: "30"
711
name: openstackcontrolplanes.core.openstack.org
812
spec:
913
group: core.openstack.org

api/bases/core.openstack.org_openstackversions.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.18.0
7+
labels:
8+
backup.openstack.org/category: controlplane
9+
backup.openstack.org/restore: "true"
10+
backup.openstack.org/restore-order: "20"
711
name: openstackversions.core.openstack.org
812
spec:
913
group: core.openstack.org

api/bases/dataplane.openstack.org_openstackdataplanenodesets.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.18.0
7+
labels:
8+
backup.openstack.org/category: dataplane
9+
backup.openstack.org/restore: "true"
10+
backup.openstack.org/restore-order: "60"
711
name: openstackdataplanenodesets.dataplane.openstack.org
812
spec:
913
group: dataplane.openstack.org

api/bases/dataplane.openstack.org_openstackdataplaneservices.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.18.0
7+
labels:
8+
backup.openstack.org/category: dataplane
9+
backup.openstack.org/restore: "true"
10+
backup.openstack.org/restore-order: "40"
711
name: openstackdataplaneservices.dataplane.openstack.org
812
spec:
913
group: dataplane.openstack.org

api/core/v1beta1/conditions.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,9 @@ const (
166166
// Infrastructure includes: CAs, DNSMasq, RabbitMQ, Galera (MariaDB), Memcached, and OVN databases
167167
// This condition is set to True when deployment-stage annotation is "infrastructure-only" and all infrastructure is ready
168168
OpenStackControlPlaneInfrastructureReadyCondition condition.Type = "OpenStackControlPlaneInfrastructureReady"
169+
170+
// OpenStackControlPlaneBackupConfigReadyCondition Status=True condition which indicates if OpenStackBackupConfig is reconciled
171+
OpenStackControlPlaneBackupConfigReadyCondition condition.Type = "OpenStackControlPlaneBackupConfigReady"
169172
)
170173

171174
// Common Messages used by API objects.
@@ -501,6 +504,15 @@ const (
501504
// OpenStackControlPlaneOpenStackVersionInitializationReadyErrorMessage
502505
OpenStackControlPlaneOpenStackVersionInitializationReadyErrorMessage = "OpenStackControlPlane OpenStackVersion initialization error occured %s"
503506

507+
// OpenStackControlPlaneBackupConfigReadyInitMessage
508+
OpenStackControlPlaneBackupConfigReadyInitMessage = "OpenStackControlPlane BackupConfig not started"
509+
510+
// OpenStackControlPlaneBackupConfigReadyMessage
511+
OpenStackControlPlaneBackupConfigReadyMessage = "OpenStackControlPlane BackupConfig ready"
512+
513+
// OpenStackControlPlaneBackupConfigReadyErrorMessage
514+
OpenStackControlPlaneBackupConfigReadyErrorMessage = "OpenStackControlPlane BackupConfig error occured %s"
515+
504516
// OpenStackControlPlaneWatcherReadyInitMessage
505517
OpenStackControlPlaneWatcherReadyInitMessage = "OpenStackControlPlane Watcher not started"
506518

api/core/v1beta1/openstackcontrolplane_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,6 +1118,9 @@ type TLSCAStatus struct {
11181118
// +kubebuilder:resource:shortName=osctlplane;osctlplanes;oscp;oscps
11191119
// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.conditions[0].status",description="Status"
11201120
// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[0].message",description="Message"
1121+
// +kubebuilder:metadata:labels=backup.openstack.org/restore=true
1122+
// +kubebuilder:metadata:labels=backup.openstack.org/category=controlplane
1123+
// +kubebuilder:metadata:labels=backup.openstack.org/restore-order=30
11211124

11221125
// OpenStackControlPlane is the Schema for the openstackcontrolplanes API
11231126
type OpenStackControlPlane struct {
@@ -1192,6 +1195,7 @@ func (instance *OpenStackControlPlane) InitConditions() {
11921195
condition.UnknownCondition(OpenStackControlPlaneOpenStackVersionInitializationReadyCondition, condition.InitReason, OpenStackControlPlaneOpenStackVersionInitializationReadyInitMessage),
11931196
condition.UnknownCondition(OpenStackControlPlaneWatcherReadyCondition, condition.InitReason, OpenStackControlPlaneWatcherReadyInitMessage),
11941197
condition.UnknownCondition(OpenStackControlPlaneInfrastructureReadyCondition, condition.InitReason, OpenStackControlPlaneInfrastructureReadyInitMessage),
1198+
condition.UnknownCondition(OpenStackControlPlaneBackupConfigReadyCondition, condition.InitReason, OpenStackControlPlaneBackupConfigReadyInitMessage),
11951199

11961200
// Also add the overall status condition as Unknown
11971201
condition.UnknownCondition(condition.ReadyCondition, condition.InitReason, condition.ReadyInitMessage),

api/core/v1beta1/openstackversion_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,9 @@ type OpenStackVersionStatus struct {
218218
// +kubebuilder:printcolumn:name="Target Version",type=string,JSONPath=`.spec.targetVersion`
219219
// +kubebuilder:printcolumn:name="Available Version",type=string,JSONPath=`.status.availableVersion`
220220
// +kubebuilder:printcolumn:name="Deployed Version",type=string,JSONPath=`.status.deployedVersion`
221+
// +kubebuilder:metadata:labels=backup.openstack.org/restore=true
222+
// +kubebuilder:metadata:labels=backup.openstack.org/category=controlplane
223+
// +kubebuilder:metadata:labels=backup.openstack.org/restore-order=20
221224

222225
// OpenStackVersion defines the Schema for the openstackversionupdates API
223226
type OpenStackVersion struct {

api/dataplane/v1beta1/openstackdataplanenodeset_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ type OpenStackDataPlaneNodeSetSpec struct {
9494
// +kubebuilder:resource:shortName=osdpns;osdpnodeset;osdpnodesets
9595
// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.conditions[0].status",description="Status"
9696
// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[0].message",description="Message"
97+
// +kubebuilder:metadata:labels=backup.openstack.org/restore=true
98+
// +kubebuilder:metadata:labels=backup.openstack.org/category=dataplane
99+
// +kubebuilder:metadata:labels=backup.openstack.org/restore-order=60
97100

98101
// OpenStackDataPlaneNodeSet is the Schema for the openstackdataplanenodesets API
99102
// OpenStackDataPlaneNodeSet name must be a valid RFC1123 as it is used in labels

api/dataplane/v1beta1/openstackdataplaneservice_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ type OpenStackDataPlaneServiceStatus struct {
130130
// +kubebuilder:subresource:status
131131
// +kubebuilder:resource:shortName=osdps;osdpservice;osdpservices
132132
// +operator-sdk:csv:customresourcedefinitions:displayName="OpenStack Data Plane Service"
133+
// +kubebuilder:metadata:labels=backup.openstack.org/restore=true
134+
// +kubebuilder:metadata:labels=backup.openstack.org/category=dataplane
135+
// +kubebuilder:metadata:labels=backup.openstack.org/restore-order=40
133136

134137
// OpenStackDataPlaneService defines the Schema for the openstackdataplaneservices API.
135138
// OpenStackDataPlaneService name must be a valid RFC1123 as it is used in labels

api/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ require (
8080
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
8181
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
8282
github.com/openshift/api v3.9.0+incompatible // indirect
83-
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260331122750-ecff41ebb61d // indirect
83+
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.6.1-0.20260417092244-81c71b39e981 // indirect
8484
github.com/pkg/errors v0.9.1 // indirect
8585
github.com/prometheus/client_golang v1.22.0 // indirect
8686
github.com/prometheus/client_model v0.6.2 // indirect

0 commit comments

Comments
 (0)