From 811bbab59179689a66ee0aee5c03cd3f4d05727d Mon Sep 17 00:00:00 2001 From: Kevin Ho Date: Tue, 9 Jul 2024 13:27:22 -0700 Subject: [PATCH 1/2] added deleteUiCms.go, uiCm.go, and where to call it. --- pkg/skr/cloudresources/deleteUiCms.go | 46 +++++++++++++++++++++++++++ pkg/skr/cloudresources/reconciler.go | 1 + pkg/util/uiCm.go | 23 ++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 pkg/skr/cloudresources/deleteUiCms.go create mode 100644 pkg/util/uiCm.go diff --git a/pkg/skr/cloudresources/deleteUiCms.go b/pkg/skr/cloudresources/deleteUiCms.go new file mode 100644 index 000000000..62a62bd27 --- /dev/null +++ b/pkg/skr/cloudresources/deleteUiCms.go @@ -0,0 +1,46 @@ +package cloudresources + +import ( + "context" + "github.com/kyma-project/cloud-manager/pkg/composed" + "github.com/kyma-project/cloud-manager/pkg/util" +) + +func deleteUiCms(ctx context.Context, st composed.State) (error, context.Context) { + + state := st.(*State) + logger := composed.LoggerFromCtx(ctx) + + uiCmList := util.NewUiCmListUnstructured() + err := state.Cluster().ApiReader().List(ctx, uiCmList) + if err != nil { + return composed.LogErrorAndReturn(err, "Error listing UI CMs", composed.StopWithRequeue, ctx) + } + + logger.Info("Checking UI ConfigMaps to uninstall") + + // Loop through the uiCmList + uiKey := "cloud-manager" + + for _, uiCm := range uiCmList.Items { + + labels := uiCm.GetLabels() + value, hasUiKey := labels[uiKey] + if hasUiKey && value == "cloud-manager" { + // delete + + u := util.NewUiCmUnstructured() + u.SetName(uiCm.GetName()) + // delete call + //err = state.Cluster().K8sClient().Delete(ctx, u) + //if err != nil { + // return composed.LogErrorAndReturn(err, fmt.Sprintf("Error deleting ConfigMap %s", uiCm.GetName()), composed.StopWithRequeue, ctx) + //} + } else { + continue + } + + } + + return nil, nil +} diff --git a/pkg/skr/cloudresources/reconciler.go b/pkg/skr/cloudresources/reconciler.go index 3a2c57e5c..249d81852 100644 --- a/pkg/skr/cloudresources/reconciler.go +++ b/pkg/skr/cloudresources/reconciler.go @@ -56,6 +56,7 @@ func (r *reconciler) newAction() composed.Action { checkIfResourcesExist, deleteCrds, removeFinalizer, + // TODO: call deleteUiCms here composed.StopAndForgetAction, ), diff --git a/pkg/util/uiCm.go b/pkg/util/uiCm.go new file mode 100644 index 000000000..67d6a3c5f --- /dev/null +++ b/pkg/util/uiCm.go @@ -0,0 +1,23 @@ +package util + +import ( + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +func NewUiCmListUnstructured() *unstructured.UnstructuredList { + u := &unstructured.UnstructuredList{} + u.SetAPIVersion("v1") + u.SetKind("ConfigMapList") + + return u +} + +func NewUiCmUnstructured() *unstructured.Unstructured { + u := &unstructured.Unstructured{} + u.SetAPIVersion("v1") + u.SetKind("ConfigMap") + u.SetNamespace("kyma-system") + + return u + +} From 2050723b6e8e4c120b9b56f4a6ee11aed1392d2b Mon Sep 17 00:00:00 2001 From: Kevin Ho Date: Thu, 1 Aug 2024 15:41:03 -0700 Subject: [PATCH 2/2] enabled the delete logic and added to reconciler.go --- pkg/skr/cloudresources/deleteUiCms.go | 15 ++++++--------- pkg/skr/cloudresources/reconciler.go | 3 +-- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/pkg/skr/cloudresources/deleteUiCms.go b/pkg/skr/cloudresources/deleteUiCms.go index 62a62bd27..ad70bb337 100644 --- a/pkg/skr/cloudresources/deleteUiCms.go +++ b/pkg/skr/cloudresources/deleteUiCms.go @@ -2,6 +2,7 @@ package cloudresources import ( "context" + "fmt" "github.com/kyma-project/cloud-manager/pkg/composed" "github.com/kyma-project/cloud-manager/pkg/util" ) @@ -26,20 +27,16 @@ func deleteUiCms(ctx context.Context, st composed.State) (error, context.Context labels := uiCm.GetLabels() value, hasUiKey := labels[uiKey] - if hasUiKey && value == "cloud-manager" { - // delete - + if hasUiKey && value == "ui-cm" { u := util.NewUiCmUnstructured() u.SetName(uiCm.GetName()) - // delete call - //err = state.Cluster().K8sClient().Delete(ctx, u) - //if err != nil { - // return composed.LogErrorAndReturn(err, fmt.Sprintf("Error deleting ConfigMap %s", uiCm.GetName()), composed.StopWithRequeue, ctx) - //} + err = state.Cluster().K8sClient().Delete(ctx, u) + if err != nil { + return composed.LogErrorAndReturn(err, fmt.Sprintf("Error deleting ConfigMap %s", uiCm.GetName()), composed.StopWithRequeue, ctx) + } } else { continue } - } return nil, nil diff --git a/pkg/skr/cloudresources/reconciler.go b/pkg/skr/cloudresources/reconciler.go index 249d81852..2a46de1fe 100644 --- a/pkg/skr/cloudresources/reconciler.go +++ b/pkg/skr/cloudresources/reconciler.go @@ -56,8 +56,7 @@ func (r *reconciler) newAction() composed.Action { checkIfResourcesExist, deleteCrds, removeFinalizer, - // TODO: call deleteUiCms here - + deleteUiCms, composed.StopAndForgetAction, ), nil,