From 01713f2411d8be01aa2742a5a2646dd8e3d923a4 Mon Sep 17 00:00:00 2001 From: ZeroMagic Date: Sat, 9 May 2020 02:51:26 +0000 Subject: [PATCH] chore: set resourceGroup into azure pv annotation Signed-off-by: ZeroMagic --- pkg/volume/azure_file/azure_file.go | 3 +++ pkg/volume/azure_file/azure_provision.go | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pkg/volume/azure_file/azure_file.go b/pkg/volume/azure_file/azure_file.go index 0b0d4bd9d32..3db30787f60 100644 --- a/pkg/volume/azure_file/azure_file.go +++ b/pkg/volume/azure_file/azure_file.go @@ -169,6 +169,9 @@ func (plugin *azureFilePlugin) ExpandVolumeDevice( if err != nil { return oldSize, err } + if spec.PersistentVolume.ObjectMeta.Annotations[resourceGroupAnnotation] != "" { + resourceGroup = spec.PersistentVolume.ObjectMeta.Annotations[resourceGroupAnnotation] + } secretName, secretNamespace, err := getSecretNameAndNamespace(spec, spec.PersistentVolume.Spec.ClaimRef.Namespace) if err != nil { diff --git a/pkg/volume/azure_file/azure_provision.go b/pkg/volume/azure_file/azure_provision.go index e24651bfb61..abb5bb8750b 100644 --- a/pkg/volume/azure_file/azure_provision.go +++ b/pkg/volume/azure_file/azure_provision.go @@ -36,8 +36,12 @@ import ( utilstrings "k8s.io/utils/strings" ) -var _ volume.DeletableVolumePlugin = &azureFilePlugin{} -var _ volume.ProvisionableVolumePlugin = &azureFilePlugin{} +var ( + _ volume.DeletableVolumePlugin = &azureFilePlugin{} + _ volume.ProvisionableVolumePlugin = &azureFilePlugin{} + + resourceGroupAnnotation = "kubernetes.io/azure-file-resource-group" +) // Abstract interface to file share operations. // azure cloud provider should implement it @@ -62,6 +66,9 @@ func (plugin *azureFilePlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, er klog.V(4).Infof("failed to get azure provider") return nil, err } + if spec.PersistentVolume != nil && spec.PersistentVolume.ObjectMeta.Annotations[resourceGroupAnnotation] != "" { + resourceGroup = spec.PersistentVolume.ObjectMeta.Annotations[resourceGroupAnnotation] + } return plugin.newDeleterInternal(spec, &azureSvc{}, azure, resourceGroup) } @@ -94,7 +101,7 @@ func (plugin *azureFilePlugin) newDeleterInternal(spec *volume.Spec, util azureU } func (plugin *azureFilePlugin) NewProvisioner(options volume.VolumeOptions) (volume.Provisioner, error) { - azure, _, err := getAzureCloudProvider(plugin.host.GetCloudProvider()) + azure, resourceGroup, err := getAzureCloudProvider(plugin.host.GetCloudProvider()) if err != nil { klog.V(4).Infof("failed to get azure provider") return nil, err @@ -102,6 +109,9 @@ func (plugin *azureFilePlugin) NewProvisioner(options volume.VolumeOptions) (vol if len(options.PVC.Spec.AccessModes) == 0 { options.PVC.Spec.AccessModes = plugin.GetAccessModes() } + if resourceGroup != "" { + options.PVC.ObjectMeta.Annotations[resourceGroupAnnotation] = resourceGroup + } return plugin.newProvisionerInternal(options, azure) } @@ -181,6 +191,10 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie shareName = strings.Replace(name, "--", "-", -1) } + if resourceGroup == "" { + resourceGroup = a.options.PVC.ObjectMeta.Annotations[resourceGroupAnnotation] + } + // when use azure file premium, account kind should be specified as FileStorage accountKind := string(storage.StorageV2) if strings.HasPrefix(strings.ToLower(sku), "premium") { @@ -203,6 +217,7 @@ func (a *azureFileProvisioner) Provision(selectedNode *v1.Node, allowedTopologie Labels: map[string]string{}, Annotations: map[string]string{ util.VolumeDynamicallyCreatedByKey: "azure-file-dynamic-provisioner", + resourceGroupAnnotation: resourceGroup, }, }, Spec: v1.PersistentVolumeSpec{