diff --git a/pkg/cloudprovider/providers/azure/azure.go b/pkg/cloudprovider/providers/azure/azure.go index 25650e022b7..62da8dc27e3 100644 --- a/pkg/cloudprovider/providers/azure/azure.go +++ b/pkg/cloudprovider/providers/azure/azure.go @@ -490,22 +490,8 @@ func initDiskControllers(az *Cloud) error { cloud: az, } - // BlobDiskController: contains the function needed to - // create/attach/detach/delete blob based (unmanaged disks) - blobController, err := newBlobDiskController(common) - if err != nil { - return fmt.Errorf("AzureDisk - failed to init Blob Disk Controller with error (%s)", err.Error()) - } - - // ManagedDiskController: contains the functions needed to - // create/attach/detach/delete managed disks - managedController, err := newManagedDiskController(common) - if err != nil { - return fmt.Errorf("AzureDisk - failed to init Managed Disk Controller with error (%s)", err.Error()) - } - - az.BlobDiskController = blobController - az.ManagedDiskController = managedController + az.BlobDiskController = &BlobDiskController{common: common} + az.ManagedDiskController = &ManagedDiskController{common: common} az.controllerCommon = common return nil diff --git a/pkg/cloudprovider/providers/azure/azure_blobDiskController.go b/pkg/cloudprovider/providers/azure/azure_blobDiskController.go index 1ff0a892cd4..2323a860f2a 100644 --- a/pkg/cloudprovider/providers/azure/azure_blobDiskController.go +++ b/pkg/cloudprovider/providers/azure/azure_blobDiskController.go @@ -62,18 +62,19 @@ var ( accountsLock = &sync.Mutex{} ) -func newBlobDiskController(common *controllerCommon) (*BlobDiskController, error) { - c := BlobDiskController{common: common} +func (c *BlobDiskController) initStorageAccounts() { + accountsLock.Lock() + defer accountsLock.Unlock() - // get accounts - accounts, err := c.getAllStorageAccounts() - if err != nil { - klog.Errorf("azureDisk - getAllStorageAccounts error: %v", err) - c.accounts = make(map[string]*storageAccountState) - return &c, nil + if c.accounts == nil { + // get accounts + accounts, err := c.getAllStorageAccounts() + if err != nil { + klog.Errorf("azureDisk - getAllStorageAccounts error: %v", err) + c.accounts = make(map[string]*storageAccountState) + } + c.accounts = accounts } - c.accounts = accounts - return &c, nil } // CreateVolume creates a VHD blob in a storage account that has storageType and location using the given storage account. @@ -217,6 +218,8 @@ func (c *BlobDiskController) deleteVhdBlob(accountName, accountKey, blobName str func (c *BlobDiskController) CreateBlobDisk(dataDiskName string, storageAccountType storage.SkuName, sizeGB int) (string, error) { klog.V(4).Infof("azureDisk - creating blob data disk named:%s on StorageAccountType:%s", dataDiskName, storageAccountType) + c.initStorageAccounts() + storageAccountName, err := c.findSANameForDisk(storageAccountType) if err != nil { return "", err diff --git a/pkg/cloudprovider/providers/azure/azure_managedDiskController.go b/pkg/cloudprovider/providers/azure/azure_managedDiskController.go index efdbb67275e..ba0d1b81bd8 100644 --- a/pkg/cloudprovider/providers/azure/azure_managedDiskController.go +++ b/pkg/cloudprovider/providers/azure/azure_managedDiskController.go @@ -67,10 +67,6 @@ type ManagedDiskOptions struct { DiskMBpsReadWrite string } -func newManagedDiskController(common *controllerCommon) (*ManagedDiskController, error) { - return &ManagedDiskController{common: common}, nil -} - //CreateManagedDisk : create managed disk func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) (string, error) { var err error