diff --git a/api/bases/watcher.openstack.org_watchers.yaml b/api/bases/watcher.openstack.org_watchers.yaml index 46a9fa9..55fd954 100644 --- a/api/bases/watcher.openstack.org_watchers.yaml +++ b/api/bases/watcher.openstack.org_watchers.yaml @@ -652,16 +652,6 @@ spec: description: ServiceUser - optional username used for this service to register in keystone type: string - tlsLevel: - default: PodLevel - description: |- - TLSLevel choose until what level should use TLS (terminate at the route, - at the pod or no TLS at all) - enum: - - Ingress - - PodLevel - - None - type: string required: - apiContainerImageURL - apiServiceTemplate diff --git a/api/v1beta1/common_types.go b/api/v1beta1/common_types.go index cca881e..e581068 100644 --- a/api/v1beta1/common_types.go +++ b/api/v1beta1/common_types.go @@ -108,13 +108,6 @@ type WatcherTemplate struct { // APIOverride, provides the ability to override the generated // manifest of several child resources. APIOverride Override `json:"apiOverride,omitempty"` - - // +kubebuilder:validation:Enum=Ingress;PodLevel;None - // +kubebuilder:validation:Optional - // +kubebuilder:default=PodLevel - // TLSLevel choose until what level should use TLS (terminate at the route, - // at the pod or no TLS at all) - TLSLevel string `json:"tlsLevel"` } // Override to override the generated manifest of several child resources. diff --git a/config/crd/bases/watcher.openstack.org_watchers.yaml b/config/crd/bases/watcher.openstack.org_watchers.yaml index 46a9fa9..55fd954 100644 --- a/config/crd/bases/watcher.openstack.org_watchers.yaml +++ b/config/crd/bases/watcher.openstack.org_watchers.yaml @@ -652,16 +652,6 @@ spec: description: ServiceUser - optional username used for this service to register in keystone type: string - tlsLevel: - default: PodLevel - description: |- - TLSLevel choose until what level should use TLS (terminate at the route, - at the pod or no TLS at all) - enum: - - Ingress - - PodLevel - - None - type: string required: - apiContainerImageURL - apiServiceTemplate diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index c1752ce..b421b3f 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -75,6 +75,13 @@ rules: - patch - update - watch +- apiGroups: + - core.openstack.org + resources: + - openstackcontrolplanes + verbs: + - get + - list - apiGroups: - keystone.openstack.org resources: diff --git a/controllers/watcher_controller.go b/controllers/watcher_controller.go index fea480a..7017b1c 100644 --- a/controllers/watcher_controller.go +++ b/controllers/watcher_controller.go @@ -58,6 +58,7 @@ import ( "github.com/openstack-k8s-operators/lib-common/modules/common/tls" "github.com/openstack-k8s-operators/lib-common/modules/common/util" mariadbv1 "github.com/openstack-k8s-operators/mariadb-operator/api/v1beta1" + corev1beta1 "github.com/openstack-k8s-operators/openstack-operator/apis/core/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" watcherv1beta1 "github.com/openstack-k8s-operators/watcher-operator/api/v1beta1" @@ -144,13 +145,14 @@ func (e *Endpoints) GetEndptCertSecret(endpt service.Endpoint) *string { func (ed *EndpointDetail) ensureRoute( ctx context.Context, helper *helper.Helper, + controlPlane *corev1beta1.OpenStackControlPlane, ) (ctrl.Result, error) { if ed.Route.Create { if ed.Service.OverrideSpec.EmbeddedLabelsAnnotations == nil { ed.Service.OverrideSpec.EmbeddedLabelsAnnotations = &service.EmbeddedLabelsAnnotations{} } - ctrlResult, err := ed.CreateRoute(ctx, helper) + ctrlResult, err := ed.CreateRoute(ctx, helper, controlPlane) return ctrlResult, err } @@ -160,6 +162,7 @@ func (ed *EndpointDetail) ensureRoute( func (ed *EndpointDetail) CreateRoute( ctx context.Context, helper *helper.Helper, + controlPlane *corev1beta1.OpenStackControlPlane, ) (ctrl.Result, error) { // initialize the route with any custom provided route override // per default use the service name as targetPortName if we don't have the annotation. @@ -241,6 +244,12 @@ func (ed *EndpointDetail) CreateRoute( Labels: util.MergeMaps(ed.Labels, map[string]string{serviceCertSelector: ""}), Usages: nil, } + if controlPlane.Spec.TLS.Ingress.Cert.Duration != nil { + certRequest.Duration = &controlPlane.Spec.TLS.Ingress.Cert.Duration.Duration + } + if controlPlane.Spec.TLS.Ingress.Cert.RenewBefore != nil { + certRequest.Duration = &controlPlane.Spec.TLS.Ingress.Cert.RenewBefore.Duration + } // create the cert using the default issue for the endpointSpec certSecret, ctrlResult, err = certmanager.EnsureCert( @@ -338,14 +347,6 @@ const ( // serviceCertSelector selector passed to cert-manager to set on the // service cert secret serviceCertSelector = "service-cert" - - // publicIssuerName name of the default public issuer name used in - // openstack-operator - publicIssuerName = "rootca-public" - - // internalIssuerName name of the default internal issuer name used in - // openstack-operator - internalIssuerName = "rootca-public" ) // end of helper types to expose services @@ -389,6 +390,10 @@ func (r *WatcherReconciler) GetLogger(ctx context.Context) logr.Logger { //+kubebuilder:rbac:groups="rbac.authorization.k8s.io",resources=rolebindings,verbs=get;list;watch;create;update;patch //+kubebuilder:rbac:groups="security.openshift.io",resourceNames=anyuid,resources=securitycontextconstraints,verbs=use +// controlplane, should only be needed until watcher-operator is integrated +// into openstack-operator +// +kubebuilder:rbac:groups=core.openstack.org,resources=openstackcontrolplanes,verbs=get;list + // Reconcile is part of the main kubernetes reconciliation loop which aims to // move the current state of the cluster closer to the desired state. // @@ -632,11 +637,29 @@ func (r *WatcherReconciler) Reconcile(ctx context.Context, req ctrl.Request) (re return ctrl.Result{}, err } + controlPlaneLists := &corev1beta1.OpenStackControlPlaneList{} + + listOps := []client.ListOption{ + client.InNamespace(instance.Namespace), + } + err = r.Client.List(ctx, controlPlaneLists, listOps...) + if err != nil { + return ctrl.Result{}, err + } + if len(controlPlaneLists.Items) > 1 { + return ctrl.Result{}, fmt.Errorf("more than one OpenStackControlPlane found in namespace %s", instance.Namespace) + } + if len(controlPlaneLists.Items) == 0 { + // no control plane found + return ctrl.Result{}, fmt.Errorf("No OpenStackControlPlane found in namespace %s", instance.Namespace) + } + controlPlane := &controlPlaneLists.Items[0] oldSpec := instance.DeepCopy().Spec.APIServiceTemplate ctrlResult, err = r.exposeEndpoints( ctx, helper, instance, + controlPlane, ) if err != nil { instance.Status.Conditions.Set(condition.FalseCondition( @@ -1263,6 +1286,7 @@ func (r *WatcherReconciler) exposeEndpoints( ctx context.Context, helper *helper.Helper, instance *watcherv1beta1.Watcher, + controlPlane *corev1beta1.OpenStackControlPlane, ) (ctrl.Result, error) { Log := r.GetLogger(ctx) @@ -1292,7 +1316,8 @@ func (r *WatcherReconciler) exposeEndpoints( } ed.Service.OverrideSpec = instance.Spec.APIServiceTemplate.Override.Service[ed.Type] - if instance.Spec.TLSLevel == "PodLevel" { + + if controlPlane.Spec.TLS.PodLevel.Enabled { ed.Service.TLS.Enabled = true ed.Service.TLS.CertName = fmt.Sprintf("%s-svc", ed.Name) } else { @@ -1311,7 +1336,7 @@ func (r *WatcherReconciler) exposeEndpoints( // we have TLS termination at the ingress if any of PodLevel or // Ingress tlslevels are selected - if instance.Spec.TLSLevel != "None" { + if controlPlane.Spec.TLS.Ingress.Enabled { // TLS for route enabled if public endpoint TLS is true ed.Route.TLS.Enabled = true ed.Route.TLS.CertName = fmt.Sprintf("%s-route", ed.Name) @@ -1330,11 +1355,8 @@ func (r *WatcherReconciler) exposeEndpoints( return ctrl.Result{}, err } } else { - // we don't support custom cert issuers for now, just rely - // on the default ones from the openstack-operator - ed.Route.TLS.IssuerName = publicIssuerName + ed.Route.TLS.IssuerName = controlPlane.GetPublicIssuer() } - } if ed.Service.TLS.Enabled { @@ -1369,7 +1391,7 @@ func (r *WatcherReconciler) exposeEndpoints( } else { // issue a certificate for public pod virthost certRequest := certmanager.CertificateRequest{ - IssuerName: publicIssuerName, + IssuerName: controlPlane.GetPublicIssuer(), CertName: ed.Service.TLS.CertName, Hostnames: []string{ fmt.Sprintf("%s.%s.svc", ed.Name, instance.Namespace), @@ -1384,6 +1406,12 @@ func (r *WatcherReconciler) exposeEndpoints( if len(addSubjNames) > 0 { certRequest.Hostnames = append(certRequest.Hostnames, addSubjNames...) } + if controlPlane.Spec.TLS.Ingress.Cert.Duration != nil { + certRequest.Duration = &controlPlane.Spec.TLS.Ingress.Cert.Duration.Duration + } + if controlPlane.Spec.TLS.Ingress.Cert.RenewBefore != nil { + certRequest.RenewBefore = &controlPlane.Spec.TLS.Ingress.Cert.RenewBefore.Duration + } certSecret, ctrlResult, err := certmanager.EnsureCert( ctx, @@ -1398,7 +1426,7 @@ func (r *WatcherReconciler) exposeEndpoints( } } - ctrlResult, err := ed.ensureRoute(ctx, helper) + ctrlResult, err := ed.ensureRoute(ctx, helper, controlPlane) if err != nil || (ctrlResult != ctrl.Result{}) { return ctrlResult, err } @@ -1408,7 +1436,7 @@ func (r *WatcherReconciler) exposeEndpoints( // create certificate for internal pod virthost // request certificate certRequest := certmanager.CertificateRequest{ - IssuerName: internalIssuerName, + IssuerName: controlPlane.GetInternalIssuer(), CertName: ed.Service.TLS.CertName, Hostnames: []string{ fmt.Sprintf("%s.%s.svc", ed.Name, instance.Namespace), @@ -1423,6 +1451,12 @@ func (r *WatcherReconciler) exposeEndpoints( if len(addSubjNames) > 0 { certRequest.Hostnames = append(certRequest.Hostnames, addSubjNames...) } + if controlPlane.Spec.TLS.PodLevel.Internal.Cert.Duration != nil { + certRequest.Duration = &controlPlane.Spec.TLS.PodLevel.Internal.Cert.Duration.Duration + } + if controlPlane.Spec.TLS.PodLevel.Internal.Cert.RenewBefore != nil { + certRequest.RenewBefore = &controlPlane.Spec.TLS.PodLevel.Internal.Cert.RenewBefore.Duration + } certSecret, ctrlResult, err := certmanager.EnsureCert( ctx, diff --git a/go.mod b/go.mod index 3ba44b6..f3d9a90 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/openstack-k8s-operators/lib-common/modules/common v0.5.1-0.20241029151503-4878b3fa3333 github.com/openstack-k8s-operators/lib-common/modules/test v0.5.1-0.20241029151503-4878b3fa3333 github.com/openstack-k8s-operators/mariadb-operator/api v0.5.0 + github.com/openstack-k8s-operators/openstack-operator/apis v0.5.0 go.uber.org/zap v1.27.0 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.29.10 @@ -23,7 +24,29 @@ require ( sigs.k8s.io/controller-runtime v0.17.6 ) -require sigs.k8s.io/gateway-api v1.0.0 // indirect +require ( + github.com/openstack-k8s-operators/barbican-operator/api v0.4.1-0.20241016144515-afdcc747d15d // indirect + github.com/openstack-k8s-operators/cinder-operator/api v0.4.1-0.20241016131023-405a20c57587 // indirect + github.com/openstack-k8s-operators/designate-operator/api v0.1.1-0.20241017142748-ba17591a0731 // indirect + github.com/openstack-k8s-operators/glance-operator/api v0.4.1-0.20241018102005-b38ee106b37d // indirect + github.com/openstack-k8s-operators/heat-operator/api v0.4.1-0.20241018100621-bfd90678fca0 // indirect + github.com/openstack-k8s-operators/horizon-operator/api v0.4.1-0.20241017085952-cdfbe98abf09 // indirect + github.com/openstack-k8s-operators/ironic-operator/api v0.4.1-0.20241016184335-60fb2a3ccf1a // indirect + github.com/openstack-k8s-operators/lib-common/modules/storage v0.4.1-0.20241014140317-e5c35d28f3af // indirect + github.com/openstack-k8s-operators/manila-operator/api v0.4.1-0.20241016213652-f06ae482a4bf // indirect + github.com/openstack-k8s-operators/neutron-operator/api v0.4.1-0.20241018124837-82fbf3bc498e // indirect + github.com/openstack-k8s-operators/nova-operator/api v0.4.1-0.20241017115306-c3ef3bef3be5 // indirect + github.com/openstack-k8s-operators/octavia-operator/api v0.4.1-0.20241017154659-930f3479c2e4 // indirect + github.com/openstack-k8s-operators/ovn-operator/api v0.4.1-0.20241018052304-b2f1022e67a0 // indirect + github.com/openstack-k8s-operators/placement-operator/api v0.4.1-0.20241016073632-718abf1faec1 // indirect + github.com/openstack-k8s-operators/swift-operator/api v0.4.1-0.20241016113221-7b5e6572638c // indirect + github.com/openstack-k8s-operators/telemetry-operator/api v0.4.1-0.20241018110953-a5889858101b // indirect + github.com/rabbitmq/cluster-operator/v2 v2.11.0 // indirect + github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.71.0-rhobs1 // indirect + github.com/rhobs/observability-operator v0.3.1 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + sigs.k8s.io/gateway-api v1.0.0 // indirect +) require ( github.com/beorn7/perks v1.0.1 // indirect @@ -41,7 +64,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect @@ -56,19 +79,19 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/openstack-k8s-operators/lib-common/modules/openstack v0.5.1-0.20241029151503-4878b3fa3333 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.46.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.53.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/spf13/pflag v1.0.5 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/mod v0.20.0 // indirect golang.org/x/net v0.28.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect - golang.org/x/sys v0.23.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.24.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -90,3 +113,6 @@ replace github.com/openstack-k8s-operators/watcher-operator/api => ./api // mschuppert: map to latest commit from release-4.16 tag // must consistent within modules and service operators replace github.com/openshift/api => github.com/openshift/api v0.0.0-20240830023148-b7d0481c9094 //allow-merging + +// custom RabbitmqClusterSpecCore for OpenStackControlplane (v2.9.0_patches_tag) +replace github.com/rabbitmq/cluster-operator/v2 => github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20241017142550-a3524acedd49 //allow-merging diff --git a/go.sum b/go.sum index d2b5ce6..ed4d0ab 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= +github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -80,8 +80,22 @@ github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/openshift/api v0.0.0-20240830023148-b7d0481c9094 h1:J1wuGhVxpsHykZBa6Beb1gQ96Ptej9AE/BvwCBiRj1E= github.com/openshift/api v0.0.0-20240830023148-b7d0481c9094/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4= +github.com/openstack-k8s-operators/barbican-operator/api v0.4.1-0.20241016144515-afdcc747d15d h1:Z9bzKnRcpjcJrl+P6KdRZyi/bPVZSijPv8AbE2hM+jM= +github.com/openstack-k8s-operators/barbican-operator/api v0.4.1-0.20241016144515-afdcc747d15d/go.mod h1:D/O5qFJ3x8ViMkT0jAfaWNqo8/7FcOJt6zOYh5BDlvs= +github.com/openstack-k8s-operators/cinder-operator/api v0.4.1-0.20241016131023-405a20c57587 h1:jbe9Bx2M/e2QHtWX/dg1bRUh+f0TBXhysm22fBnL7wI= +github.com/openstack-k8s-operators/cinder-operator/api v0.4.1-0.20241016131023-405a20c57587/go.mod h1:s9V6ai3rkIPwYhUJTNNEWzPDIO5hTcfbHC1tutKgUGw= +github.com/openstack-k8s-operators/designate-operator/api v0.1.1-0.20241017142748-ba17591a0731 h1:r40sFjjLSaVB+KtuXy94yL7NaXHZSzsdOEZoy18E7Xc= +github.com/openstack-k8s-operators/designate-operator/api v0.1.1-0.20241017142748-ba17591a0731/go.mod h1:aLc4dvPi5Bqb8FXnZ14YYRWFjZOmUdj+eJmaUPNZ5Qs= +github.com/openstack-k8s-operators/glance-operator/api v0.4.1-0.20241018102005-b38ee106b37d h1:Q4gL00IjFEQPUjPuHgP66RPUMrnksNStlUYkzy4KQ+w= +github.com/openstack-k8s-operators/glance-operator/api v0.4.1-0.20241018102005-b38ee106b37d/go.mod h1:xRoM6j/L1yvUhghhF/OL5GExWlahTf64Z5svidliqsE= +github.com/openstack-k8s-operators/heat-operator/api v0.4.1-0.20241018100621-bfd90678fca0 h1:8uN0sCXUXjKgghlxKecCl1x8RgUFJ7BLxGhd3ZkZVwc= +github.com/openstack-k8s-operators/heat-operator/api v0.4.1-0.20241018100621-bfd90678fca0/go.mod h1:mANVocVuc9ww98iuDBKA6fd7sULOr/Po9ks/fUgOIqA= +github.com/openstack-k8s-operators/horizon-operator/api v0.4.1-0.20241017085952-cdfbe98abf09 h1:UDBimEMYbpqS7lfhhOFxFPxd76bfUdkCaxd3xtZlkxk= +github.com/openstack-k8s-operators/horizon-operator/api v0.4.1-0.20241017085952-cdfbe98abf09/go.mod h1:6qGsJdObALYyH1G4mRLyRpmpTKsmTrKLGxx2hFUtU28= github.com/openstack-k8s-operators/infra-operator/apis v0.5.0 h1:+1Q1Ux7DeEg3dPsVEWsm+MCJASlAy9FH/CGRD5jZeXo= github.com/openstack-k8s-operators/infra-operator/apis v0.5.0/go.mod h1:J9oUh3eGBvAFfyUMiPxPRBSxAcO8rnwITN4RTh/It+8= +github.com/openstack-k8s-operators/ironic-operator/api v0.4.1-0.20241016184335-60fb2a3ccf1a h1:yTFMBAdgnoGnPAjHsm35DXmE40U1LarB4YF7agT4jws= +github.com/openstack-k8s-operators/ironic-operator/api v0.4.1-0.20241016184335-60fb2a3ccf1a/go.mod h1:qxdXTRt7kY6orSnFc/OTRHtqElNPuMV0W0KvMPHbE2s= github.com/openstack-k8s-operators/keystone-operator/api v0.5.1-0.20241023160107-bd8e671350e1 h1:he0/o7mLKhXa16QlwajRHtAOjot84Emvgl4jdl3esgU= github.com/openstack-k8s-operators/keystone-operator/api v0.5.1-0.20241023160107-bd8e671350e1/go.mod h1:saoorrsPo3DzDPGM6PJ8sQJBNuNRGCHjRHChRQmkoQ0= github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.5.0 h1:Y2wAPS3TBQrjSbTrbtCjJUYL2spltyyjfzQ3bF7DRZ8= @@ -90,23 +104,51 @@ github.com/openstack-k8s-operators/lib-common/modules/common v0.5.1-0.2024102915 github.com/openstack-k8s-operators/lib-common/modules/common v0.5.1-0.20241029151503-4878b3fa3333/go.mod h1:YpNTuJhDWhbXM50O3qBkhO7M+OOyRmWkNVmJ4y3cyFs= github.com/openstack-k8s-operators/lib-common/modules/openstack v0.5.1-0.20241029151503-4878b3fa3333 h1:XWxFOmOYPC6V5KUDkzU20vQOsha1PPNQzzqkNv926mg= github.com/openstack-k8s-operators/lib-common/modules/openstack v0.5.1-0.20241029151503-4878b3fa3333/go.mod h1:IASoGvp5QM/tBJUd/8i8uIjj4DBnI+64Ydh4r7pmnvA= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.4.1-0.20241014140317-e5c35d28f3af h1:l8GXJhv4P/fy7Amz9XPEi8sn+hvxrQf1gICpmOaqOuE= +github.com/openstack-k8s-operators/lib-common/modules/storage v0.4.1-0.20241014140317-e5c35d28f3af/go.mod h1:cGynoLGY9NfyIeWXI3zZ+hgZdHF3SUi8ht5ygZ8CmhI= github.com/openstack-k8s-operators/lib-common/modules/test v0.5.1-0.20241029151503-4878b3fa3333 h1:zUlxLqucrLMNDp6dc3I7eYWZyGVE7tLrPyWR/n+VD9w= github.com/openstack-k8s-operators/lib-common/modules/test v0.5.1-0.20241029151503-4878b3fa3333/go.mod h1:LV0jo5etIsGyINpmB37i4oWR8zU6ApIuh7fsqGGA41o= +github.com/openstack-k8s-operators/manila-operator/api v0.4.1-0.20241016213652-f06ae482a4bf h1:5fOMgDpyz3JDg1vBReRZDDvEZ/L4Z4lvQXr19mXEG7g= +github.com/openstack-k8s-operators/manila-operator/api v0.4.1-0.20241016213652-f06ae482a4bf/go.mod h1:Gi9t38UJU4opGJIS55qhunX2qC4oihlVdRhn7IJhQAg= github.com/openstack-k8s-operators/mariadb-operator/api v0.5.0 h1:XBx1TuyKhgtWAigYVcdqTUzIwWRYHN63pfa0zxHB12M= github.com/openstack-k8s-operators/mariadb-operator/api v0.5.0/go.mod h1:Uyc8m+72l3rVm6jKb8FRUrQbjMWyifc5m0K+Ge0QV80= +github.com/openstack-k8s-operators/neutron-operator/api v0.4.1-0.20241018124837-82fbf3bc498e h1:wG/wIq2IPZbIL6uSEFGE0E0dRE8jSzuW3V+jafcgZpE= +github.com/openstack-k8s-operators/neutron-operator/api v0.4.1-0.20241018124837-82fbf3bc498e/go.mod h1:ARxoBFEgQUA+tM6Qu+TNDCArCN3kgG4WBI15pb2b1jc= +github.com/openstack-k8s-operators/nova-operator/api v0.4.1-0.20241017115306-c3ef3bef3be5 h1:e+TtFliPKKjvac14t92kvTOQjIm3F1ikFT1bWS9cun4= +github.com/openstack-k8s-operators/nova-operator/api v0.4.1-0.20241017115306-c3ef3bef3be5/go.mod h1:E3DA4NEoTMqKDdgxEHut63BaHI0fSmRuVTMjGMqx1Z0= +github.com/openstack-k8s-operators/octavia-operator/api v0.4.1-0.20241017154659-930f3479c2e4 h1:OGaICctMZLrly0njlZ8uMXYipIvKC0g81Aw9oAeiQvk= +github.com/openstack-k8s-operators/octavia-operator/api v0.4.1-0.20241017154659-930f3479c2e4/go.mod h1:6Z+1yna/RM9bCKkwd64pHxGrRpKFEhOtYUt1PDh6/xU= +github.com/openstack-k8s-operators/openstack-operator/apis v0.5.0 h1:cxeGlnao240yFg1wG44PLAyOVll63OtsQIYIZ1+XwTQ= +github.com/openstack-k8s-operators/openstack-operator/apis v0.5.0/go.mod h1:Ap/RMmuc1EvgH/ai1Zneifc7i3JIk/FjTa8A1a23PAQ= +github.com/openstack-k8s-operators/ovn-operator/api v0.4.1-0.20241018052304-b2f1022e67a0 h1:R9fr/+MirGRPeVOI5coVzmbjjL39T5HabK+/gFAviA4= +github.com/openstack-k8s-operators/ovn-operator/api v0.4.1-0.20241018052304-b2f1022e67a0/go.mod h1:UNtD7SqSmflXUs8bzUu+azWxaFSEGPpprb9U86FaGTY= +github.com/openstack-k8s-operators/placement-operator/api v0.4.1-0.20241016073632-718abf1faec1 h1:faHfDJshTpzpyJoY6NUyMoUi17e7h8EQi/NQLo7oTIc= +github.com/openstack-k8s-operators/placement-operator/api v0.4.1-0.20241016073632-718abf1faec1/go.mod h1:4cleawzE+/WdVDo52BDbLyaeiOnIITAL2KqOhTlnQwM= +github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20241017142550-a3524acedd49 h1:/7SnnHfGCH/dwuZFNUx54zw4cnwv2w6hjONq16aoowM= +github.com/openstack-k8s-operators/rabbitmq-cluster-operator/v2 v2.6.1-0.20241017142550-a3524acedd49/go.mod h1:6Mq2N/KtNFW20L+PQC5qkeK8R8UGadmGBXL8HDY6lcg= +github.com/openstack-k8s-operators/swift-operator/api v0.4.1-0.20241016113221-7b5e6572638c h1:KETdApa+d+69+coHQGL1merUGhDflBgkM6VlXkUDsPY= +github.com/openstack-k8s-operators/swift-operator/api v0.4.1-0.20241016113221-7b5e6572638c/go.mod h1:jMHEP2K98nm4OwCW8b4i9Uqqv2GtUpU8PMYyHozsr/U= +github.com/openstack-k8s-operators/telemetry-operator/api v0.4.1-0.20241018110953-a5889858101b h1:Zz15b653D4AGod45D/K+b5ELL05wZu3PfHf2dmuNyGI= +github.com/openstack-k8s-operators/telemetry-operator/api v0.4.1-0.20241018110953-a5889858101b/go.mod h1:1yPvSebSiduMJKNyIxTqOjgLoTlF+n4w+2d+9+Ofmu4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= -github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.71.0-rhobs1 h1:NBdZFQUVKllUnmh6suuH02+K8VS8ibErnOhxNiH+aio= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.71.0-rhobs1/go.mod h1:oDJbA/Byh5LNU7zBgBZYRM5263mgL16NtysHl/uVtGY= +github.com/rhobs/observability-operator v0.3.1 h1:vVGCt/a7Ds5VeqikaKZJz18oOPV9p4YUaezlVlwdpIM= +github.com/rhobs/observability-operator v0.3.1/go.mod h1:nC2YcqsTdm44agl9Fz5QzNSGtSFokIGUhS1g7OlzFrs= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -145,8 +187,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -159,19 +201,19 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/main.go b/main.go index ca06957..d0c4936 100644 --- a/main.go +++ b/main.go @@ -43,6 +43,7 @@ import ( rabbitmqv1 "github.com/openstack-k8s-operators/infra-operator/apis/rabbitmq/v1beta1" keystonev1 "github.com/openstack-k8s-operators/keystone-operator/api/v1beta1" mariadbv1 "github.com/openstack-k8s-operators/mariadb-operator/api/v1beta1" + corev1beta1 "github.com/openstack-k8s-operators/openstack-operator/apis/core/v1beta1" watcherv1beta1 "github.com/openstack-k8s-operators/watcher-operator/api/v1beta1" "github.com/openstack-k8s-operators/watcher-operator/controllers" @@ -64,6 +65,7 @@ func init() { utilruntime.Must(memcachedv1.AddToScheme(scheme)) utilruntime.Must(routev1.AddToScheme(scheme)) utilruntime.Must(certmgrv1.AddToScheme(scheme)) + utilruntime.Must(corev1beta1.AddToScheme(scheme)) //+kubebuilder:scaffold:scheme }