@@ -37,8 +37,6 @@ import (
3737 "github.com/operator-framework/api/pkg/operators/v1alpha1"
3838
3939 admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
40- appsv1 "k8s.io/api/apps/v1"
41- v1 "k8s.io/api/core/v1"
4240 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
4341 apierrors "k8s.io/apimachinery/pkg/api/errors"
4442 apimeta "k8s.io/apimachinery/pkg/api/meta"
@@ -88,7 +86,7 @@ type DBaaSPlatformReconciler struct {
8886//+kubebuilder:rbac:groups=dbaas.redhat.com,resources=*/finalizers,verbs=update
8987//+kubebuilder:rbac:groups=operators.coreos.com,resources=catalogsources;operatorgroups,verbs=get;list;create;update;watch
9088//+kubebuilder:rbac:groups=operators.coreos.com,resources=subscriptions,verbs=get;list;create;update;watch;delete
91- //+kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions,verbs=get;update;delete
89+ //+kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions,verbs=get;update;delete;list
9290//+kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions/finalizers,verbs=update
9391//+kubebuilder:rbac:groups=apps,resources=deployments;daemonsets;statefulsets,verbs=get;list;create;update;watch;delete
9492//+kubebuilder:rbac:groups=core,resources=services,verbs=get;list;create;update;watch;delete
@@ -100,7 +98,6 @@ type DBaaSPlatformReconciler struct {
10098//+kubebuilder:rbac:groups=config.openshift.io,resources=consoles,verbs=get;list;watch
10199//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch
102100//+kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=validatingwebhookconfigurations,verbs=get;list;watch;delete
103- //+kubebuilder:rbac:groups="",resources=secrets;configmaps,verbs=get;create
104101
105102// Reconcile is part of the main kubernetes reconciliation loop which aims to
106103// move the current state of the cluster closer to the desired state.
@@ -133,11 +130,6 @@ func (r *DBaaSPlatformReconciler) Reconcile(ctx context.Context, req ctrl.Reques
133130 logger .Error (err , "Error related to conversion webhook setup" )
134131 }
135132
136- // temporary fix for ack-rds-controller v0.1.3 upgrade issue
137- if err = r .fixRDSControllerUpgrade (ctx ); err != nil {
138- logger .Error (err , "Error related to ack-rds-controller v0.1.3 upgrade" )
139- }
140-
141133 if cr .DeletionTimestamp != nil {
142134 event = metrics .LabelEventValueDelete
143135 } else {
@@ -433,82 +425,38 @@ func (r *DBaaSPlatformReconciler) fixConversionWebhooks(ctx context.Context) err
433425
434426// Temporary solution to the rds-controller upgrade issue, will revert in the next release
435427func (r * DBaaSPlatformReconciler ) prepareRDSController (ctx context.Context , cli k8sclient.Client ) error {
436- secret := & v1.Secret {
437- ObjectMeta : metav1.ObjectMeta {
438- Name : "ack-rds-user-secrets" , //#nosec G101
439- Namespace : r .DBaaSReconciler .InstallNamespace ,
440- },
428+ subscriptionList := & v1alpha1.SubscriptionList {}
429+ if err := cli .List (ctx , subscriptionList , k8sclient .InNamespace (r .InstallNamespace )); err != nil {
430+ return err
441431 }
442- if err := cli .Get (ctx , k8sclient .ObjectKeyFromObject (secret ), secret ); err != nil {
443- if apierrors .IsNotFound (err ) {
444- secret .Data = map [string ][]byte {
445- "AWS_ACCESS_KEY_ID" : []byte ("dummy" ),
446- "AWS_SECRET_ACCESS_KEY" : []byte ("dummy" ), //#nosec G101
447- }
448- if err := cli .Create (ctx , secret ); err != nil {
432+ for _ , subscription := range subscriptionList .Items {
433+ if subscription .Spec != nil && subscription .Spec .Package == "ack-rds-controller" {
434+ if err := cli .Delete (ctx , & subscription ); err != nil {
449435 return err
450436 }
451- } else {
452- return err
453437 }
454438 }
455439
456- cm := & v1.ConfigMap {
457- ObjectMeta : metav1.ObjectMeta {
458- Name : "ack-rds-user-config" ,
459- Namespace : r .DBaaSReconciler .InstallNamespace ,
460- },
440+ csvList := & v1alpha1.ClusterServiceVersionList {}
441+ if err := cli .List (ctx , csvList , k8sclient .InNamespace (r .InstallNamespace )); err != nil {
442+ return err
461443 }
462- if err := cli .Get (ctx , k8sclient .ObjectKeyFromObject (cm ), cm ); err != nil {
463- if apierrors .IsNotFound (err ) {
464- cm .Data = map [string ]string {
465- "AWS_REGION" : "dummy" ,
466- "AWS_ENDPOINT_URL" : "" ,
467- "ACK_ENABLE_DEVELOPMENT_LOGGING" : "false" ,
468- "ACK_WATCH_NAMESPACE" : "" ,
469- "ACK_LOG_LEVEL" : "info" ,
470- "ACK_RESOURCE_TAGS" : "rhoda" ,
444+ for _ , csv := range csvList .Items {
445+ instanceCRD := false
446+ clusterCRD := false
447+ for _ , crd := range csv .Spec .CustomResourceDefinitions .Owned {
448+ if crd .Name == "dbinstances.rds.services.k8s.aws" && crd .Kind == "DBInstance" {
449+ instanceCRD = true
450+ } else if crd .Name == "dbclusters.rds.services.k8s.aws" && crd .Kind == "DBCluster" {
451+ clusterCRD = true
471452 }
472- if err := cli .Create (ctx , cm ); err != nil {
453+ }
454+ if instanceCRD && clusterCRD {
455+ if err := cli .Delete (ctx , & csv ); err != nil {
473456 return err
474457 }
475- } else {
476- return err
477458 }
478459 }
479460
480461 return nil
481462}
482-
483- // Temporary solution to the rds-controller v0.1.3 upgrade issue
484- func (r * DBaaSPlatformReconciler ) fixRDSControllerUpgrade (ctx context.Context ) error {
485- csv := & v1alpha1.ClusterServiceVersion {
486- ObjectMeta : metav1.ObjectMeta {
487- Name : "ack-rds-controller.v0.1.3" ,
488- Namespace : r .DBaaSReconciler .InstallNamespace ,
489- },
490- }
491- if err := r .Client .Get (ctx , k8sclient .ObjectKeyFromObject (csv ), csv ); err != nil {
492- if apierrors .IsNotFound (err ) {
493- return nil
494- }
495- return err
496- }
497-
498- if csv .Status .Phase == v1alpha1 .CSVPhaseFailed && csv .Status .Reason == v1alpha1 .CSVReasonComponentFailed &&
499- csv .Status .Message == "install strategy failed: Deployment.apps \" ack-rds-controller\" is invalid: spec.selector: " +
500- "Invalid value: v1.LabelSelector{MatchLabels:map[string]string{\" app.kubernetes.io/name\" :\" ack-rds-controller\" }, " +
501- "MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable" {
502- ackDeployment := & appsv1.Deployment {
503- ObjectMeta : metav1.ObjectMeta {
504- Name : "ack-rds-controller" ,
505- Namespace : r .DBaaSReconciler .InstallNamespace ,
506- },
507- }
508- if err := r .Client .Delete (ctx , ackDeployment ); err != nil {
509- return err
510- }
511- log .FromContext (ctx ).Info ("Applied fix to the failed RDS controller v0.1.3 installation" )
512- }
513- return nil
514- }
0 commit comments