diff --git a/pkg/operator/ceph/pool/controller.go b/pkg/operator/ceph/pool/controller.go index c5b413a8d..22073984d 100644 --- a/pkg/operator/ceph/pool/controller.go +++ b/pkg/operator/ceph/pool/controller.go @@ -235,8 +235,19 @@ func createPool(context *clusterd.Context, p *cephv1.CephBlockPool) error { // Delete the pool func deletePool(context *clusterd.Context, p *cephv1.CephBlockPool) error { - if err := cephclient.DeletePool(context, p.Namespace, p.Name); err != nil { - return errors.Wrapf(err, "failed to delete pool %q", p.Name) + pools, err := cephclient.ListPoolSummaries(context, p.Namespace) + if err != nil { + return errors.Wrapf(err, "failed to list pools") + } + + // Only delete the pool if it exists... + for _, pool := range pools { + if pool.Name == p.Name { + err := cephclient.DeletePool(context, p.Namespace, p.Name) + if err != nil { + return errors.Wrapf(err, "failed to delete pool %q", p.Name) + } + } } return nil diff --git a/tests/framework/clients/pool.go b/tests/framework/clients/pool.go index 6c46f0798..9bca1d0d9 100644 --- a/tests/framework/clients/pool.go +++ b/tests/framework/clients/pool.go @@ -111,7 +111,10 @@ func (p *PoolOperation) DeletePool(blockClient *BlockOperation, namespace, poolN for _, blockImage := range blockImagesList { if poolName == blockImage.PoolName { logger.Infof("force deleting block image %q in pool %q", blockImage, poolName) - blockClient.DeleteBlockImage(blockImage, namespace) + err := blockClient.DeleteBlockImage(blockImage, namespace) + if err != nil { + logger.Infof("failed deleting image %q from %q. %v", blockImage, poolName, err) + } } }