From d36d74e3ecaa02df7491073ab8324ecec50bac1d Mon Sep 17 00:00:00 2001 From: YuChen Date: Fri, 16 Feb 2024 08:42:00 -0800 Subject: [PATCH] check Opreg and NSS resources CRD Signed-off-by: YuChen --- controllers/bootstrap/init.go | 11 +++++++++++ controllers/commonservice_controller.go | 22 +++++++++++++++++----- controllers/constant/constant.go | 16 ++++++++++------ 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/controllers/bootstrap/init.go b/controllers/bootstrap/init.go index 16b2a692c..dc7b2aeaf 100644 --- a/controllers/bootstrap/init.go +++ b/controllers/bootstrap/init.go @@ -1249,6 +1249,17 @@ func (b *Bootstrap) CleanNamespaceScopeResources() error { } // Delete NamespaceScope CRs and wait for those are deleted exactly, if time is out for deleting the CRs, then proceed to delete the operator + // Check if the NamespaceScope CRD is existent + exist, err := b.CheckCRD(constant.NssAPIVersion, constant.NssKindCR) + if err != nil { + klog.Errorf("Failed to check resource with kind: %s, apiGroupVersion: %s", constant.NssKindCR, constant.NssAPIVersion) + return err + } + if !exist { + klog.Infof("Skiped deleting NamespaceScope CRs, it is not exist in cluster") + return nil + } + nssCRsList, err := b.ListNssCRs(ctx, b.CSData.ServicesNs) if len(nssCRsList.Items) > 0 && err == nil { for _, nssCR := range nssCRsList.Items { diff --git a/controllers/commonservice_controller.go b/controllers/commonservice_controller.go index c4370df91..6abb52075 100644 --- a/controllers/commonservice_controller.go +++ b/controllers/commonservice_controller.go @@ -62,6 +62,11 @@ const ( CRFailed string = "Failed" ) +var ( + OpregAPIGroupVersion = "operator.ibm.com/v1alpha1" + OpregKind = "OperandRegistry" +) + func (r *CommonServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { klog.Infof("Reconciling CommonService: %s", req.NamespacedName) @@ -452,7 +457,8 @@ func shouldReconcile(operandRegistry *odlm.OperandRegistry) bool { } func (r *CommonServiceReconciler) SetupWithManager(mgr ctrl.Manager) error { - return ctrl.NewControllerManagedBy(mgr). + + controller := ctrl.NewControllerManagedBy(mgr). // AnnotationChangedPredicate is intended to be used in conjunction with the GenerationChangedPredicate For(&apiv3.CommonService{}, builder.WithPredicates( predicate.Or( @@ -472,8 +478,12 @@ func (r *CommonServiceReconciler) SetupWithManager(mgr ctrl.Manager) error { UpdateFunc: func(e event.UpdateEvent) bool { return true }, - })). - Watches( + })) + if isOpregAPI, err := r.Bootstrap.CheckCRD(OpregAPIGroupVersion, OpregKind); err != nil { + klog.Errorf("Failed to check if OperandRegistry CRD exists: %v", err) + return err + } else if isOpregAPI { + controller = controller.Watches( &source.Kind{Type: &odlm.OperandRegistry{}}, handler.EnqueueRequestsFromMapFunc(r.mappingToCsRequestForOperandRegistry()), builder.WithPredicates(predicate.Funcs{ @@ -491,6 +501,8 @@ func (r *CommonServiceReconciler) SetupWithManager(mgr ctrl.Manager) error { // Check if the .status field has changed return !reflect.DeepEqual(oldOperandRegistry.Status, newOperandRegistry.Status) }, - }), - ).Complete(r) + }, + )) + } + return controller.Complete(r) } diff --git a/controllers/constant/constant.go b/controllers/constant/constant.go index 58a49357a..9f9e039b9 100644 --- a/controllers/constant/constant.go +++ b/controllers/constant/constant.go @@ -46,10 +46,18 @@ const ( SaasConfigMap = "saas-config" // Namespace Scope Operator resource name NsSubResourceName = "nsSubscription" - // Namespace Scope Operator Restricted resource name - NsRestrictedSubResourceName = "nsRestrictedSubscription" // Namespace Scope Operator sub name NsSubName = "ibm-namespace-scope-operator" + // NamespaceScope CRs kind + NssKindCR = "NamespaceScope" + // NamespaceScope CRs api version + NssAPIVersion = "operator.ibm.com/v1" + // NamespaceScopeConfigmapName is the name of ConfigMap which stores the NamespaceScope Info + NamespaceScopeConfigmapName = "namespace-scope" + // NssCRFinalizer is the name for the finalizer to allow for deletion + NssCRFinalizer = "finalizer.nss.operator.ibm.com" + // Namespace Scope Operator Restricted resource name + NsRestrictedSubResourceName = "nsRestrictedSubscription" // Namespace Scope Operator Restricted sub name NsRestrictedSubName = "ibm-namespace-scope-operator-restricted" //DefaultRequeueDuration is the default requeue time duration for request @@ -76,8 +84,6 @@ const ( IBMODLMPackage = "operand-deployment-lifecycle-manager-app" //IBMNSSPackage is the package name of the namespace scope operator IBMNSSPackage = "ibm-namespace-scope-operator" - // NamespaceScopeConfigmapName is the name of ConfigMap which stores the NamespaceScope Info - NamespaceScopeConfigmapName = "namespace-scope" // DevBuildImage is regular expression of the image address of internal dev build for testing DevBuildImage = `^hyc\-cloud\-private\-(.*)\-docker\-local\.artifactory\.swg\-devops\.com\/ibmcom\/ibm\-common\-service\-catalog\:(.*)` // BedrockCatalogsourcePriority is an annotation defined in the catalogsource @@ -90,8 +96,6 @@ const ( CsClonedFromLabel = "operator.ibm.com/common-services.cloned-from" // IBMCPPCONFIG is the name of ibm-cpp-config ConfigMap IBMCPPCONFIG = "ibm-cpp-config" - // NssCRFinalizer is the name for the finalizer to allow for deletion - NssCRFinalizer = "finalizer.nss.operator.ibm.com" ) // CsOg is OperatorGroup constent for the common service operator