diff --git a/changelogs/unreleased/210-shubham14bajpai b/changelogs/unreleased/210-shubham14bajpai new file mode 100644 index 00000000..b3e4fe0e --- /dev/null +++ b/changelogs/unreleased/210-shubham14bajpai @@ -0,0 +1 @@ +fix(cspc): cleanup pending bdcs on cspc deletion diff --git a/pkg/controllers/cspc-controller/sync.go b/pkg/controllers/cspc-controller/sync.go index 774a353c..f5e15722 100644 --- a/pkg/controllers/cspc-controller/sync.go +++ b/pkg/controllers/cspc-controller/sync.go @@ -25,6 +25,7 @@ import ( cstor "github.com/openebs/api/v2/pkg/apis/cstor/v1" "github.com/openebs/api/v2/pkg/apis/types" clientset "github.com/openebs/api/v2/pkg/client/clientset/versioned" + "github.com/openebs/api/v2/pkg/util" "github.com/openebs/cstor-operators/pkg/cspc/algorithm" "github.com/openebs/cstor-operators/pkg/version" "github.com/pkg/errors" @@ -261,6 +262,27 @@ func (c *Controller) removeCSPCFinalizer(cspc *cstor.CStorPoolCluster) error { "CSPI(s) still exists for CSPC") } + // If the BD(s) are claimed and the CSPI(s) do not spawn up for some reason, + // the pending BDC(s) finalizer don't get removed automatically. + // The below code handles cleanup for such cases. + bdcList, err := c.GetStoredOpenebsVersionClient().BlockDeviceClaims(cspc.Namespace).List( + metav1.ListOptions{ + LabelSelector: string(types.CStorPoolClusterLabelKey) + "=" + cspc.Name, + }, + ) + if err != nil { + return err + } + for _, bdcItem := range bdcList.Items { + bdcItem := bdcItem // pin it + bdcObj := &bdcItem + bdcObj.Finalizers = util.RemoveString(bdcObj.Finalizers, types.CSPCFinalizer) + bdcObj, err = c.GetStoredOpenebsVersionClient().BlockDeviceClaims(cspc.Namespace).Update(bdcObj) + if err != nil { + return errors.Wrapf(err, "failed to remove finalizers from bdc %s", bdcItem.Name) + } + } + cspc.RemoveFinalizer(types.CSPCFinalizer) _, err = c.GetStoredCStorVersionClient().CStorPoolClusters(cspc.Namespace).Update(cspc) diff --git a/pkg/version/util.go b/pkg/version/util.go index 48bff683..eaec8d7a 100644 --- a/pkg/version/util.go +++ b/pkg/version/util.go @@ -22,6 +22,7 @@ var ( validCurrentVersions = map[string]bool{ "1.10.0": true, "1.11.0": true, "1.12.0": true, "2.0.0": true, "2.1.0": true, "2.2.0": true, "2.3.0": true, + "2.4.0": true, } validDesiredVersion = strings.Split(GetVersion(), "-")[0] )