diff --git a/pkg/skr/cloudresources/deleteUiCms.go b/pkg/skr/cloudresources/deleteUiCms.go new file mode 100644 index 000000000..ad70bb337 --- /dev/null +++ b/pkg/skr/cloudresources/deleteUiCms.go @@ -0,0 +1,43 @@ +package cloudresources + +import ( + "context" + "fmt" + "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 == "ui-cm" { + u := util.NewUiCmUnstructured() + u.SetName(uiCm.GetName()) + 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..2a46de1fe 100644 --- a/pkg/skr/cloudresources/reconciler.go +++ b/pkg/skr/cloudresources/reconciler.go @@ -56,7 +56,7 @@ func (r *reconciler) newAction() composed.Action { checkIfResourcesExist, deleteCrds, removeFinalizer, - + deleteUiCms, composed.StopAndForgetAction, ), nil, 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 + +}