diff --git a/pkg/volume/csi/csi_block.go b/pkg/volume/csi/csi_block.go index cfda3e69f8a..687f2bc4385 100644 --- a/pkg/volume/csi/csi_block.go +++ b/pkg/volume/csi/csi_block.go @@ -95,6 +95,7 @@ type csiBlockMapper struct { spec *volume.Spec pod *v1.Pod podUID types.UID + volume.MetricsProvider } var _ volume.BlockVolumeMapper = &csiBlockMapper{} diff --git a/pkg/volume/csi/csi_plugin.go b/pkg/volume/csi/csi_plugin.go index 7609d0a3c47..3c6a68d2f5d 100644 --- a/pkg/volume/csi/csi_plugin.go +++ b/pkg/volume/csi/csi_plugin.go @@ -698,6 +698,13 @@ func (p *csiPlugin) NewBlockVolumeMapper(spec *volume.Spec, podRef *api.Pod, opt } klog.V(4).Info(log("created path successfully [%s]", dataDir)) + blockPath, err := mapper.GetGlobalMapPath(spec) + if err != nil { + return nil, errors.New(log("failed to get device path: %v", err)) + } + + mapper.MetricsProvider = NewMetricsCsi(pvSource.VolumeHandle, blockPath, csiDriverName(pvSource.Driver)) + // persist volume info data for teardown node := string(p.host.GetNodeName()) attachID := getAttachmentName(pvSource.VolumeHandle, pvSource.Driver, node)