From 93d6356d2f1cc6013e9fea2f9935928e101c8407 Mon Sep 17 00:00:00 2001 From: David Zhu Date: Thu, 11 Jul 2019 11:18:42 -0700 Subject: [PATCH] Fixes mount/unmount paths for migrated inline volumes. Some minor fixes for GCE specific inline migrated volumes --- pkg/volume/util/operationexecutor/operation_generator.go | 6 ++++++ staging/src/k8s.io/csi-translation-lib/plugins/BUILD | 1 + staging/src/k8s.io/csi-translation-lib/plugins/aws_ebs.go | 5 +++++ .../src/k8s.io/csi-translation-lib/plugins/azure_disk.go | 5 +++++ .../src/k8s.io/csi-translation-lib/plugins/azure_file.go | 5 +++++ staging/src/k8s.io/csi-translation-lib/plugins/gce_pd.go | 5 +++++ .../csi-translation-lib/plugins/openstack_cinder.go | 5 +++++ staging/src/k8s.io/csi-translation-lib/translate.go | 8 ++++++-- 8 files changed, 38 insertions(+), 2 deletions(-) diff --git a/pkg/volume/util/operationexecutor/operation_generator.go b/pkg/volume/util/operationexecutor/operation_generator.go index 34a0e8a6533..fc6e2ffea67 100644 --- a/pkg/volume/util/operationexecutor/operation_generator.go +++ b/pkg/volume/util/operationexecutor/operation_generator.go @@ -763,6 +763,12 @@ func (og *operationGenerator) resizeFileSystem(volumeToMount VolumeToMount, rsOp return true, nil } + if volumeToMount.VolumeSpec != nil && + volumeToMount.VolumeSpec.InlineVolumeSpecForCSIMigration { + klog.V(4).Infof("This volume %s is a migrated inline volume and is not resizable", volumeToMount.VolumeName) + return true, nil + } + // Get expander, if possible expandableVolumePlugin, _ := og.volumePluginMgr.FindNodeExpandablePluginBySpec(volumeToMount.VolumeSpec) diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/BUILD b/staging/src/k8s.io/csi-translation-lib/plugins/BUILD index 70eb5d54d7b..befec190443 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/BUILD +++ b/staging/src/k8s.io/csi-translation-lib/plugins/BUILD @@ -16,6 +16,7 @@ go_library( deps = [ "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/storage/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/cloud-provider/volume:go_default_library", ], diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/aws_ebs.go b/staging/src/k8s.io/csi-translation-lib/plugins/aws_ebs.go index 97c264f965e..097b2181f2b 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/aws_ebs.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/aws_ebs.go @@ -25,6 +25,7 @@ import ( "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -57,6 +58,10 @@ func (t *awsElasticBlockStoreCSITranslator) TranslateInTreeInlineVolumeToCSI(vol } ebsSource := volume.AWSElasticBlockStore pv := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + // A.K.A InnerVolumeSpecName required to match for Unmount + Name: volume.Name, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{ diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/azure_disk.go b/staging/src/k8s.io/csi-translation-lib/plugins/azure_disk.go index 7b44c658b55..403b4a88ea4 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/azure_disk.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/azure_disk.go @@ -23,6 +23,7 @@ import ( "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -67,6 +68,10 @@ func (t *azureDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol azureSource := volume.AzureDisk pv := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + // A.K.A InnerVolumeSpecName required to match for Unmount + Name: volume.Name, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{ diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/azure_file.go b/staging/src/k8s.io/csi-translation-lib/plugins/azure_file.go index 2b58dbda765..b78a4f83fda 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/azure_file.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/azure_file.go @@ -22,6 +22,7 @@ import ( "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -63,6 +64,10 @@ func (t *azureFileCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Vol azureSource := volume.AzureFile pv := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + // A.K.A InnerVolumeSpecName required to match for Unmount + Name: volume.Name, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{ diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/gce_pd.go b/staging/src/k8s.io/csi-translation-lib/plugins/gce_pd.go index 4dee96ef9fe..ed9d079b5eb 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/gce_pd.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/gce_pd.go @@ -23,6 +23,7 @@ import ( "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" cloudvolume "k8s.io/cloud-provider/volume" ) @@ -197,6 +198,10 @@ func (g *gcePersistentDiskCSITranslator) TranslateInTreeInlineVolumeToCSI(volume } pv := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + // A.K.A InnerVolumeSpecName required to match for Unmount + Name: volume.Name, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{ diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/openstack_cinder.go b/staging/src/k8s.io/csi-translation-lib/plugins/openstack_cinder.go index 0573ebc0526..9965eacf596 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/openstack_cinder.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/openstack_cinder.go @@ -21,6 +21,7 @@ import ( "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -54,6 +55,10 @@ func (t *osCinderCSITranslator) TranslateInTreeInlineVolumeToCSI(volume *v1.Volu cinderSource := volume.Cinder pv := &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + // A.K.A InnerVolumeSpecName required to match for Unmount + Name: volume.Name, + }, Spec: v1.PersistentVolumeSpec{ PersistentVolumeSource: v1.PersistentVolumeSource{ CSI: &v1.CSIPersistentVolumeSource{ diff --git a/staging/src/k8s.io/csi-translation-lib/translate.go b/staging/src/k8s.io/csi-translation-lib/translate.go index 46ae1cbbfd3..c5e46f9d8fb 100644 --- a/staging/src/k8s.io/csi-translation-lib/translate.go +++ b/staging/src/k8s.io/csi-translation-lib/translate.go @@ -125,8 +125,12 @@ func GetInTreePluginNameFromSpec(pv *v1.PersistentVolume, vol *v1.Volume) (strin } return "", fmt.Errorf("could not find in-tree plugin name from persistent volume %v", pv) } else if vol != nil { - // TODO(dyzz): Implement inline volume migration support - return "", errors.New("inline volume migration not yet supported") + for _, curPlugin := range inTreePlugins { + if curPlugin.CanSupportInline(vol) { + return curPlugin.GetInTreePluginName(), nil + } + } + return "", fmt.Errorf("could not find in-tree plugin name from volume %v", vol) } else { return "", errors.New("both persistent volume and volume are nil") }