From 95b9929136dc346de4adf093c089bc0a36442e5b Mon Sep 17 00:00:00 2001 From: Deep Debroy Date: Tue, 5 Feb 2019 07:59:14 +0000 Subject: [PATCH] Add CSI Translation API for Storage Class parameters Signed-off-by: Deep Debroy --- .../src/k8s.io/csi-translation-lib/plugins/aws_ebs.go | 5 +++++ .../src/k8s.io/csi-translation-lib/plugins/gce_pd.go | 5 +++++ .../csi-translation-lib/plugins/in_tree_volume.go | 5 +++++ .../csi-translation-lib/plugins/openstack_cinder.go | 5 +++++ staging/src/k8s.io/csi-translation-lib/translate.go | 11 +++++++++++ 5 files changed, 31 insertions(+) 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 eda70843feb..4ce000a8a39 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 @@ -40,6 +40,11 @@ func NewAWSElasticBlockStoreCSITranslator() InTreePlugin { return &awsElasticBlockStoreCSITranslator{} } +// TranslateInTreeStorageClassParametersToCSI translates InTree EBS storage class parameters to CSI storage class +func (t *awsElasticBlockStoreCSITranslator) TranslateInTreeStorageClassParametersToCSI(scParameters map[string]string) (map[string]string, error) { + return scParameters, nil +} + // TranslateInTreePVToCSI takes a PV with AWSElasticBlockStore set from in-tree // and converts the AWSElasticBlockStore source to a CSIPersistentVolumeSource func (t *awsElasticBlockStoreCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) { 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 740e54f5feb..9082b739366 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 @@ -58,6 +58,11 @@ func NewGCEPersistentDiskCSITranslator() InTreePlugin { return &gcePersistentDiskCSITranslator{} } +// TranslateInTreeStorageClassParametersToCSI translates InTree GCE storage class parameters to CSI storage class +func (g *gcePersistentDiskCSITranslator) TranslateInTreeStorageClassParametersToCSI(scParameters map[string]string) (map[string]string, error) { + return scParameters, nil +} + // TranslateInTreePVToCSI takes a PV with GCEPersistentDisk set from in-tree // and converts the GCEPersistentDisk source to a CSIPersistentVolumeSource func (g *gcePersistentDiskCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) { diff --git a/staging/src/k8s.io/csi-translation-lib/plugins/in_tree_volume.go b/staging/src/k8s.io/csi-translation-lib/plugins/in_tree_volume.go index e2eb16e4981..3e65340d9a1 100644 --- a/staging/src/k8s.io/csi-translation-lib/plugins/in_tree_volume.go +++ b/staging/src/k8s.io/csi-translation-lib/plugins/in_tree_volume.go @@ -20,6 +20,11 @@ import "k8s.io/api/core/v1" // InTreePlugin handles translations between CSI and in-tree sources in a PV type InTreePlugin interface { + + // TranslateInTreeStorageClassParametersToCSI takes in-tree storage class + // parameters and translates them to a set of parameters consumable by CSI plugin + TranslateInTreeStorageClassParametersToCSI(scParameters map[string]string) (map[string]string, error) + // TranslateInTreePVToCSI takes a persistent volume and will translate // the in-tree source to a CSI Source. The input persistent volume can be modified TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) 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 7694845aa79..b429601e695 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 @@ -38,6 +38,11 @@ func NewOpenStackCinderCSITranslator() InTreePlugin { return &osCinderCSITranslator{} } +// TranslateInTreeStorageClassParametersToCSI translates InTree Cinder storage class parameters to CSI storage class +func (t *osCinderCSITranslator) TranslateInTreeStorageClassParametersToCSI(scParameters map[string]string) (map[string]string, error) { + return scParameters, nil +} + // TranslateInTreePVToCSI takes a PV with Cinder set from in-tree // and converts the Cinder source to a CSIPersistentVolumeSource func (t *osCinderCSITranslator) TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) { diff --git a/staging/src/k8s.io/csi-translation-lib/translate.go b/staging/src/k8s.io/csi-translation-lib/translate.go index 754cab9e0e2..eb1825f8fc7 100644 --- a/staging/src/k8s.io/csi-translation-lib/translate.go +++ b/staging/src/k8s.io/csi-translation-lib/translate.go @@ -31,6 +31,17 @@ var ( } ) +// TranslateInTreeStorageClassParametersToCSI takes in-tree storage class +// parameters and translates them to a set of parameters consumable by CSI plugin +func TranslateInTreeStorageClassParametersToCSI(inTreePluginName string, scParameters map[string]string) (map[string]string, error) { + for _, curPlugin := range inTreePlugins { + if inTreePluginName == curPlugin.GetInTreePluginName() { + return curPlugin.TranslateInTreeStorageClassParametersToCSI(scParameters) + } + } + return nil, fmt.Errorf("could not find in-tree storage class parameter translation logic for %#v", inTreePluginName) +} + // TranslateInTreePVToCSI takes a persistent volume and will translate // the in-tree source to a CSI Source if the translation logic // has been implemented. The input persistent volume will not