@@ -37,8 +37,6 @@ import (
37
37
"github.com/operator-framework/api/pkg/operators/v1alpha1"
38
38
39
39
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
40
- appsv1 "k8s.io/api/apps/v1"
41
- v1 "k8s.io/api/core/v1"
42
40
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
43
41
apierrors "k8s.io/apimachinery/pkg/api/errors"
44
42
apimeta "k8s.io/apimachinery/pkg/api/meta"
@@ -88,7 +86,7 @@ type DBaaSPlatformReconciler struct {
88
86
//+kubebuilder:rbac:groups=dbaas.redhat.com,resources=*/finalizers,verbs=update
89
87
//+kubebuilder:rbac:groups=operators.coreos.com,resources=catalogsources;operatorgroups,verbs=get;list;create;update;watch
90
88
//+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
92
90
//+kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions/finalizers,verbs=update
93
91
//+kubebuilder:rbac:groups=apps,resources=deployments;daemonsets;statefulsets,verbs=get;list;create;update;watch;delete
94
92
//+kubebuilder:rbac:groups=core,resources=services,verbs=get;list;create;update;watch;delete
@@ -100,7 +98,6 @@ type DBaaSPlatformReconciler struct {
100
98
//+kubebuilder:rbac:groups=config.openshift.io,resources=consoles,verbs=get;list;watch
101
99
//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch
102
100
//+kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=validatingwebhookconfigurations,verbs=get;list;watch;delete
103
- //+kubebuilder:rbac:groups="",resources=secrets;configmaps,verbs=get;create
104
101
105
102
// Reconcile is part of the main kubernetes reconciliation loop which aims to
106
103
// 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
133
130
logger .Error (err , "Error related to conversion webhook setup" )
134
131
}
135
132
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
-
141
133
if cr .DeletionTimestamp != nil {
142
134
event = metrics .LabelEventValueDelete
143
135
} else {
@@ -433,82 +425,38 @@ func (r *DBaaSPlatformReconciler) fixConversionWebhooks(ctx context.Context) err
433
425
434
426
// Temporary solution to the rds-controller upgrade issue, will revert in the next release
435
427
func (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
441
431
}
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 {
449
435
return err
450
436
}
451
- } else {
452
- return err
453
437
}
454
438
}
455
439
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
461
443
}
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
471
452
}
472
- if err := cli .Create (ctx , cm ); err != nil {
453
+ }
454
+ if instanceCRD && clusterCRD {
455
+ if err := cli .Delete (ctx , & csv ); err != nil {
473
456
return err
474
457
}
475
- } else {
476
- return err
477
458
}
478
459
}
479
460
480
461
return nil
481
462
}
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