mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	Merge pull request #45345 from codablock/storageclass_fstype
Automatic merge from submit-queue (batch tested with PRs 45345, 49470, 49407, 49448, 49486) Support "fstype" parameter in dynamically provisioned PVs This PR is a replacement for https://github.com/kubernetes/kubernetes/pull/40805. I was not able to push fixes and rebases to the original branch as I don't have access to the Github organization anymore. I assume the PR will need a new "ok to test" **ORIGINAL PR DESCRIPTION** **What this PR does / why we need it**: This PR allows specifying the desired FSType when dynamically provisioning volumes with storage classes. The FSType can now be set as a parameter: ```yaml kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: test provisioner: kubernetes.io/azure-disk parameters: fstype: xfs ``` **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #37801 **Special notes for your reviewer**: The PR also implicitly adds checks for unsupported parameters. **Release note**: ```release-note Support specifying of FSType in StorageClass ```
This commit is contained in:
		@@ -158,10 +158,10 @@ func getZonesFromNodes(kubeClient clientset.Interface) (sets.String, error) {
 | 
			
		||||
	return zones, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID string, volumeSizeGB int, volumeLabels map[string]string, err error) {
 | 
			
		||||
func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID string, volumeSizeGB int, volumeLabels map[string]string, fstype string, err error) {
 | 
			
		||||
	cloud, err := c.plugin.getCloudProvider()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", 0, nil, err
 | 
			
		||||
		return "", 0, nil, "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	capacity := c.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)]
 | 
			
		||||
@@ -179,13 +179,15 @@ func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID s
 | 
			
		||||
			vtype = v
 | 
			
		||||
		case "availability":
 | 
			
		||||
			availability = v
 | 
			
		||||
		case volume.VolumeParameterFSType:
 | 
			
		||||
			fstype = v
 | 
			
		||||
		default:
 | 
			
		||||
			return "", 0, nil, fmt.Errorf("invalid option %q for volume plugin %s", k, c.plugin.GetPluginName())
 | 
			
		||||
			return "", 0, nil, "", fmt.Errorf("invalid option %q for volume plugin %s", k, c.plugin.GetPluginName())
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: implement PVC.Selector parsing
 | 
			
		||||
	if c.options.PVC.Spec.Selector != nil {
 | 
			
		||||
		return "", 0, nil, fmt.Errorf("claim.Spec.Selector is not supported for dynamic provisioning on Cinder")
 | 
			
		||||
		return "", 0, nil, "", fmt.Errorf("claim.Spec.Selector is not supported for dynamic provisioning on Cinder")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if availability == "" {
 | 
			
		||||
@@ -193,7 +195,7 @@ func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID s
 | 
			
		||||
		zones, err := getZonesFromNodes(c.plugin.host.GetKubeClient())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.V(2).Infof("error getting zone information: %v", err)
 | 
			
		||||
			return "", 0, nil, err
 | 
			
		||||
			return "", 0, nil, "", err
 | 
			
		||||
		}
 | 
			
		||||
		// if we did not get any zones, lets leave it blank and gophercloud will
 | 
			
		||||
		// use zone "nova" as default
 | 
			
		||||
@@ -205,7 +207,7 @@ func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID s
 | 
			
		||||
	volumeID, volumeAZ, errr := cloud.CreateVolume(name, volSizeGB, vtype, availability, c.options.CloudTags)
 | 
			
		||||
	if errr != nil {
 | 
			
		||||
		glog.V(2).Infof("Error creating cinder volume: %v", errr)
 | 
			
		||||
		return "", 0, nil, errr
 | 
			
		||||
		return "", 0, nil, "", errr
 | 
			
		||||
	}
 | 
			
		||||
	glog.V(2).Infof("Successfully created cinder volume %s", volumeID)
 | 
			
		||||
 | 
			
		||||
@@ -213,7 +215,7 @@ func (util *CinderDiskUtil) CreateVolume(c *cinderVolumeProvisioner) (volumeID s
 | 
			
		||||
	volumeLabels = make(map[string]string)
 | 
			
		||||
	volumeLabels[kubeletapis.LabelZoneFailureDomain] = volumeAZ
 | 
			
		||||
 | 
			
		||||
	return volumeID, volSizeGB, volumeLabels, nil
 | 
			
		||||
	return volumeID, volSizeGB, volumeLabels, fstype, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func probeAttachedVolume() error {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user