From fdc49f5257cc84b7165e90c331bf110c344bb94a Mon Sep 17 00:00:00 2001 From: Humble Chirammal Date: Thu, 8 Jun 2023 13:36:53 +0530 Subject: [PATCH] Return deprecation warning for storageOS,PhotonPD,ScaleIO..etc Thes plugins are deprecated in earlier version of Kubernetes, however the PVspec was not validated and provided enough warning that, these are deprecated plugins. This commit add the warning and unit tests for the same. Signed-off-by: Humble Chirammal --- pkg/api/persistentvolume/util.go | 12 ++++ pkg/api/persistentvolume/util_test.go | 79 +++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go index b74b96c5f78..d065ccc6df5 100644 --- a/pkg/api/persistentvolume/util.go +++ b/pkg/api/persistentvolume/util.go @@ -83,6 +83,18 @@ func warningsForPersistentVolumeSpecAndMeta(fieldPath *field.Path, pvSpec *api.P if pvSpec.CephFS != nil { warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.28, non-functional in v1.31+", fieldPath.Child("spec", "persistentVolumeSource").Child("cephfs"))) } + if pvSpec.PhotonPersistentDisk != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.11, non-functional in v1.16+", fieldPath.Child("spec", "persistentVolumeSource").Child("photonPersistentDisk"))) + } + if pvSpec.ScaleIO != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.16, non-functional in v1.22+", fieldPath.Child("spec", "persistentVolumeSource").Child("scaleIO"))) + } + if pvSpec.StorageOS != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.22, non-functional in v1.25+", fieldPath.Child("spec", "persistentVolumeSource").Child("storageOS"))) + } + if pvSpec.Glusterfs != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.25, non-functional in v1.26+", fieldPath.Child("spec", "persistentVolumeSource").Child("glusterfs"))) + } return warnings } diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go index f423f09f85e..4557cf49479 100644 --- a/pkg/api/persistentvolume/util_test.go +++ b/pkg/api/persistentvolume/util_test.go @@ -196,6 +196,85 @@ func TestWarnings(t *testing.T) { `spec.persistentVolumeSource.cephfs: deprecated in v1.28, non-functional in v1.31+`, }, }, + { + name: "PV PhotonPersistentDisk deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeSource: api.PersistentVolumeSource{ + PhotonPersistentDisk: &api.PhotonPersistentDiskVolumeSource{ + PdID: "", + FSType: "", + }, + }, + }, + }, + expected: []string{ + `spec.persistentVolumeSource.photonPersistentDisk: deprecated in v1.11, non-functional in v1.16+`, + }, + }, + { + name: "PV ScaleIO deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeSource: api.PersistentVolumeSource{ + ScaleIO: &api.ScaleIOPersistentVolumeSource{ + Gateway: "", + System: "", + SecretRef: nil, + SSLEnabled: false, + ProtectionDomain: "", + StoragePool: "", + StorageMode: "", + VolumeName: "", + FSType: "", + ReadOnly: false, + }, + }, + }, + }, + expected: []string{ + `spec.persistentVolumeSource.scaleIO: deprecated in v1.16, non-functional in v1.22+`, + }, + }, + + { + name: "PV StorageOS deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeSource: api.PersistentVolumeSource{ + StorageOS: &api.StorageOSPersistentVolumeSource{ + VolumeName: "", + VolumeNamespace: "", + FSType: "", + ReadOnly: false, + SecretRef: nil, + }, + }, + }, + }, + expected: []string{ + `spec.persistentVolumeSource.storageOS: deprecated in v1.22, non-functional in v1.25+`, + }, + }, + + { + name: "PV GlusterFS deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeSource: api.PersistentVolumeSource{ + Glusterfs: &api.GlusterfsPersistentVolumeSource{ + EndpointsName: "", + Path: "", + ReadOnly: false, + EndpointsNamespace: nil, + }, + }, + }, + }, + expected: []string{ + `spec.persistentVolumeSource.glusterfs: deprecated in v1.25, non-functional in v1.26+`, + }, + }, } for _, tc := range testcases {