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 {