From 1c22dc9a5a665f966edba4e90c5c06521ebb6f0c Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Mon, 2 Jul 2018 14:04:50 +0200 Subject: [PATCH] Block volumes should have empty FSType FSType in block PVs has no meaning and it should be empty in provisioned PVs. --- pkg/volume/aws_ebs/aws_ebs.go | 14 ++++++++++---- pkg/volume/azure_dd/azure_provision.go | 14 ++++++++++---- pkg/volume/cinder/cinder.go | 14 ++++++++++---- pkg/volume/gce_pd/gce_pd.go | 14 ++++++++++---- pkg/volume/rbd/rbd.go | 14 ++++++++++---- 5 files changed, 50 insertions(+), 20 deletions(-) diff --git a/pkg/volume/aws_ebs/aws_ebs.go b/pkg/volume/aws_ebs/aws_ebs.go index 4ba24bd6ff..f59c11ff18 100644 --- a/pkg/volume/aws_ebs/aws_ebs.go +++ b/pkg/volume/aws_ebs/aws_ebs.go @@ -514,6 +514,15 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow fstype = "ext4" } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -528,6 +537,7 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ AWSElasticBlockStore: &v1.AWSElasticBlockStoreVolumeSource{ VolumeID: string(volumeID), @@ -553,9 +563,5 @@ func (c *awsElasticBlockStoreProvisioner) Provision(selectedNode *v1.Node, allow } } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = c.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/pkg/volume/azure_dd/azure_provision.go b/pkg/volume/azure_dd/azure_provision.go index e70f046d3f..c48585cc70 100644 --- a/pkg/volume/azure_dd/azure_provision.go +++ b/pkg/volume/azure_dd/azure_provision.go @@ -170,6 +170,15 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie } } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = p.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fsType = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: p.options.PVName, @@ -184,6 +193,7 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", requestGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ AzureDisk: &v1.AzureDiskVolumeSource{ CachingMode: &cachingMode, @@ -197,9 +207,5 @@ func (p *azureDiskProvisioner) Provision(selectedNode *v1.Node, allowedTopologie }, } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = p.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/pkg/volume/cinder/cinder.go b/pkg/volume/cinder/cinder.go index fd84c674e2..b64e8c5be0 100644 --- a/pkg/volume/cinder/cinder.go +++ b/pkg/volume/cinder/cinder.go @@ -512,6 +512,15 @@ func (c *cinderVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopolo return nil, err } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -526,6 +535,7 @@ func (c *cinderVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopolo Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ Cinder: &v1.CinderPersistentVolumeSource{ VolumeID: volumeID, @@ -540,10 +550,6 @@ func (c *cinderVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopolo pv.Spec.AccessModes = c.plugin.GetAccessModes() } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = c.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/pkg/volume/gce_pd/gce_pd.go b/pkg/volume/gce_pd/gce_pd.go index 18e040433a..ecc7a4165c 100644 --- a/pkg/volume/gce_pd/gce_pd.go +++ b/pkg/volume/gce_pd/gce_pd.go @@ -480,6 +480,15 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT fstype = "ext4" } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = c.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + pv := &v1.PersistentVolume{ ObjectMeta: metav1.ObjectMeta{ Name: c.options.PVName, @@ -494,6 +503,7 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dG", sizeGB)), }, + VolumeMode: volumeMode, PersistentVolumeSource: v1.PersistentVolumeSource{ GCEPersistentDisk: &v1.GCEPersistentDiskVolumeSource{ PDName: volumeID, @@ -518,9 +528,5 @@ func (c *gcePersistentDiskProvisioner) Provision(selectedNode *v1.Node, allowedT } } - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = c.options.PVC.Spec.VolumeMode - } - return pv, nil } diff --git a/pkg/volume/rbd/rbd.go b/pkg/volume/rbd/rbd.go index f34fed285b..4c5d7e761a 100644 --- a/pkg/volume/rbd/rbd.go +++ b/pkg/volume/rbd/rbd.go @@ -691,6 +691,15 @@ func (r *rbdVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologie rbd.Keyring = keyring } + var volumeMode *v1.PersistentVolumeMode + if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { + volumeMode = r.options.PVC.Spec.VolumeMode + if volumeMode != nil && *volumeMode == v1.PersistentVolumeBlock { + // Block volumes should not have any FSType + fstype = "" + } + } + rbd.RadosUser = r.Id rbd.FSType = fstype pv.Spec.PersistentVolumeSource.RBD = rbd @@ -703,10 +712,7 @@ func (r *rbdVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologie v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dMi", sizeMB)), } pv.Spec.MountOptions = r.options.MountOptions - - if utilfeature.DefaultFeatureGate.Enabled(features.BlockVolume) { - pv.Spec.VolumeMode = r.options.PVC.Spec.VolumeMode - } + pv.Spec.VolumeMode = volumeMode return pv, nil }