mirror of https://github.com/k3s-io/k3s
add shareName param in azure file storage class
skip create azure file if it existspull/564/head
parent
3c949c7d41
commit
3e1553ee6c
|
@ -60,9 +60,13 @@ func (f *azureFileClient) createFileShare(accountName, accountKey, name string,
|
||||||
}
|
}
|
||||||
share := fileClient.GetShareReference(name)
|
share := fileClient.GetShareReference(name)
|
||||||
share.Properties.Quota = sizeGiB
|
share.Properties.Quota = sizeGiB
|
||||||
if err = share.Create(nil); err != nil {
|
newlyCreated, err := share.CreateIfNotExists(nil)
|
||||||
|
if err != nil {
|
||||||
return fmt.Errorf("failed to create file share, err: %v", err)
|
return fmt.Errorf("failed to create file share, err: %v", err)
|
||||||
}
|
}
|
||||||
|
if !newlyCreated {
|
||||||
|
klog.V(2).Infof("file share(%s) under account(%s) already exists", name, accountName)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,11 +142,8 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
|
||||||
return nil, fmt.Errorf("%s does not support block volume provisioning", a.plugin.GetPluginName())
|
return nil, fmt.Errorf("%s does not support block volume provisioning", a.plugin.GetPluginName())
|
||||||
}
|
}
|
||||||
|
|
||||||
var sku, resourceGroup, location, account string
|
var sku, resourceGroup, location, account, shareName string
|
||||||
|
|
||||||
// File share name has a length limit of 63, and it cannot contain two consecutive '-'s.
|
|
||||||
name := util.GenerateVolumeName(a.options.ClusterName, a.options.PVName, 63)
|
|
||||||
name = strings.Replace(name, "--", "-", -1)
|
|
||||||
capacity := a.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)]
|
capacity := a.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)]
|
||||||
requestGiB := int(volumehelpers.RoundUpToGiB(capacity))
|
requestGiB := int(volumehelpers.RoundUpToGiB(capacity))
|
||||||
secretNamespace := a.options.PVC.Namespace
|
secretNamespace := a.options.PVC.Namespace
|
||||||
|
@ -164,6 +161,8 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
|
||||||
secretNamespace = v
|
secretNamespace = v
|
||||||
case "resourcegroup":
|
case "resourcegroup":
|
||||||
resourceGroup = v
|
resourceGroup = v
|
||||||
|
case "sharename":
|
||||||
|
shareName = v
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, a.plugin.GetPluginName())
|
return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, a.plugin.GetPluginName())
|
||||||
}
|
}
|
||||||
|
@ -173,12 +172,18 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
|
||||||
return nil, fmt.Errorf("claim.Spec.Selector is not supported for dynamic provisioning on Azure file")
|
return nil, fmt.Errorf("claim.Spec.Selector is not supported for dynamic provisioning on Azure file")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if shareName == "" {
|
||||||
|
// File share name has a length limit of 63, and it cannot contain two consecutive '-'s.
|
||||||
|
name := util.GenerateVolumeName(a.options.ClusterName, a.options.PVName, 63)
|
||||||
|
shareName = strings.Replace(name, "--", "-", -1)
|
||||||
|
}
|
||||||
|
|
||||||
// when use azure file premium, account kind should be specified as FileStorage
|
// when use azure file premium, account kind should be specified as FileStorage
|
||||||
accountKind := string(storage.StorageV2)
|
accountKind := string(storage.StorageV2)
|
||||||
if strings.HasPrefix(strings.ToLower(sku), "premium") {
|
if strings.HasPrefix(strings.ToLower(sku), "premium") {
|
||||||
accountKind = string(storage.FileStorage)
|
accountKind = string(storage.FileStorage)
|
||||||
}
|
}
|
||||||
account, key, err := a.azureProvider.CreateFileShare(name, account, sku, accountKind, resourceGroup, location, requestGiB)
|
account, key, err := a.azureProvider.CreateFileShare(shareName, account, sku, accountKind, resourceGroup, location, requestGiB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -206,7 +211,7 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie
|
||||||
PersistentVolumeSource: v1.PersistentVolumeSource{
|
PersistentVolumeSource: v1.PersistentVolumeSource{
|
||||||
AzureFile: &v1.AzureFilePersistentVolumeSource{
|
AzureFile: &v1.AzureFilePersistentVolumeSource{
|
||||||
SecretName: secretName,
|
SecretName: secretName,
|
||||||
ShareName: name,
|
ShareName: shareName,
|
||||||
SecretNamespace: &secretNamespace,
|
SecretNamespace: &secretNamespace,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue