diff --git a/pkg/volume/plugins.go b/pkg/volume/plugins.go index 933a18fc7f8..922e7403626 100644 --- a/pkg/volume/plugins.go +++ b/pkg/volume/plugins.go @@ -66,6 +66,13 @@ const ( CSIVolumePublished CSIVolumePhaseType = "published" ) +var ( + deprecatedVolumeProviders = map[string]string{ + "kubernetes.io/cinder": "The Cinder volume provider is deprecated and will be removed in a future release", + "kubernetes.io/scaleio": "The ScaleIO volume provider is deprecated and will be removed in a future release", + } +) + // VolumeOptions contains option information about a volume. type VolumeOptions struct { // The attributes below are required by volume.Provisioner @@ -674,6 +681,11 @@ func (pm *VolumePluginMgr) FindPluginBySpec(spec *Spec) (VolumePlugin, error) { } return nil, fmt.Errorf("multiple volume plugins matched: %s", strings.Join(matchedPluginNames, ",")) } + + // Issue warning if the matched provider is deprecated + if detail, ok := deprecatedVolumeProviders[matches[0].GetPluginName()]; ok { + klog.Warningf("WARNING: %s built-in volume provider is now deprecated. %s", matches[0].GetPluginName(), detail) + } return matches[0], nil } @@ -737,6 +749,11 @@ func (pm *VolumePluginMgr) FindPluginByName(name string) (VolumePlugin, error) { } return nil, fmt.Errorf("multiple volume plugins matched: %s", strings.Join(matchedPluginNames, ",")) } + + // Issue warning if the matched provider is deprecated + if detail, ok := deprecatedVolumeProviders[matches[0].GetPluginName()]; ok { + klog.Warningf("WARNING: %s built-in volume provider is now deprecated. %s", matches[0].GetPluginName(), detail) + } return matches[0], nil }