Skip to content

Commit b445974

Browse files
committed
JIRA:OKE-14024 :: Changes in ControllerUnpublishVolume and FVD
1 parent fb57ed3 commit b445974

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

pkg/csi/driver/controller.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"google.golang.org/grpc/codes"
1414
"google.golang.org/grpc/status"
1515
kubeAPI "k8s.io/api/core/v1"
16-
"k8s.io/apimachinery/pkg/api/errors"
16+
errors "k8s.io/apimachinery/pkg/api/errors"
1717

1818
"github.com/oracle/oci-cloud-controller-manager/pkg/metrics"
1919
"github.com/oracle/oci-cloud-controller-manager/pkg/oci/client"
@@ -399,9 +399,15 @@ func (d *ControllerDriver) ControllerUnpublishVolume(ctx context.Context, req *c
399399

400400
compartmentID, err := util.LookupNodeCompartment(d.KubeClient, req.NodeId)
401401
if err != nil {
402+
if errors.IsNotFound(err) {
403+
log.Infof("Node with nodeID %s is not found, volume is likely already detached", req.NodeId)
404+
// https://jira.oci.oraclecorp.com/browse/OKE-13873 : Cleanup of dangling volumeAttachments is deferred.
405+
metrics.SendMetricData(d.metricPusher, metrics.PVDetachSuccess, time.Since(startTime).Seconds(), csiDriver, req.VolumeId)
406+
return &csi.ControllerUnpublishVolumeResponse{}, nil
407+
}
402408
log.With(zap.Error(err)).Errorf("failed to get compartmentID from node annotation: %s", util.CompartmentIDAnnotation)
403409
metrics.SendMetricData(d.metricPusher, metrics.PVDetachFailure, time.Since(startTime).Seconds(), csiDriver, req.VolumeId)
404-
return nil, status.Errorf(codes.Unknown, "failed to get compartmentID from node annotation:. error : %s", err)
410+
return nil, status.Errorf(codes.Unknown, "failed to get compartmentID from node annotation:: error : %s", err)
405411
}
406412

407413
attachedVolume, err := d.client.Compute().FindVolumeAttachment(context.Background(), compartmentID, req.VolumeId)

pkg/flexvolume/block/driver.go

+7
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"github.com/oracle/oci-cloud-controller-manager/pkg/util"
3737
"github.com/oracle/oci-cloud-controller-manager/pkg/util/disk"
3838
"github.com/oracle/oci-go-sdk/v31/core"
39+
apierrors "k8s.io/apimachinery/pkg/api/errors"
3940
)
4041

4142
const (
@@ -306,6 +307,12 @@ func (d OCIFlexvolumeDriver) Detach(logger *zap.SugaredLogger, pvOrVolumeName, n
306307

307308
compartmentID, err := util.LookupNodeCompartment(d.K, nodeName)
308309
if err != nil {
310+
if apierrors.IsNotFound(err) {
311+
// https://jira.oci.oraclecorp.com/browse/OKE-14168 : Volume detachment is deferred
312+
logger.Info("Node is not found, volume is likely already detached.")
313+
metrics.SendMetricData(d.metricPusher, metrics.PVDetachSuccess, time.Since(startTime).Seconds(), flexvolumeDriver, "")
314+
return flexvolume.Succeed(logger, "Volume detachment completed.")
315+
}
309316
metrics.SendMetricData(d.metricPusher, metrics.PVDetachFailure, time.Since(startTime).Seconds(), flexvolumeDriver, "")
310317
return flexvolume.Fail(logger, "failed to get compartmentID from node annotation: ", err)
311318
}

0 commit comments

Comments
 (0)