Merge pull request #74191 from andyzhangx/get-account-timeout
fix get azure accounts timeout issue when there is no out-bound IP
This commit is contained in:
commit
8d6f20ea43
@ -490,22 +490,8 @@ func initDiskControllers(az *Cloud) error {
|
|||||||
cloud: az,
|
cloud: az,
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlobDiskController: contains the function needed to
|
az.BlobDiskController = &BlobDiskController{common: common}
|
||||||
// create/attach/detach/delete blob based (unmanaged disks)
|
az.ManagedDiskController = &ManagedDiskController{common: common}
|
||||||
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.controllerCommon = common
|
az.controllerCommon = common
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -18,6 +18,7 @@ package azure
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
@ -62,18 +63,19 @@ var (
|
|||||||
accountsLock = &sync.Mutex{}
|
accountsLock = &sync.Mutex{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func newBlobDiskController(common *controllerCommon) (*BlobDiskController, error) {
|
func (c *BlobDiskController) initStorageAccounts() {
|
||||||
c := BlobDiskController{common: common}
|
accountsLock.Lock()
|
||||||
|
defer accountsLock.Unlock()
|
||||||
|
|
||||||
|
if c.accounts == nil {
|
||||||
// get accounts
|
// get accounts
|
||||||
accounts, err := c.getAllStorageAccounts()
|
accounts, err := c.getAllStorageAccounts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("azureDisk - getAllStorageAccounts error: %v", err)
|
klog.Errorf("azureDisk - getAllStorageAccounts error: %v", err)
|
||||||
c.accounts = make(map[string]*storageAccountState)
|
c.accounts = make(map[string]*storageAccountState)
|
||||||
return &c, nil
|
|
||||||
}
|
}
|
||||||
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.
|
// CreateVolume creates a VHD blob in a storage account that has storageType and location using the given storage account.
|
||||||
@ -217,6 +219,8 @@ func (c *BlobDiskController) deleteVhdBlob(accountName, accountKey, blobName str
|
|||||||
func (c *BlobDiskController) CreateBlobDisk(dataDiskName string, storageAccountType storage.SkuName, sizeGB int) (string, error) {
|
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)
|
klog.V(4).Infof("azureDisk - creating blob data disk named:%s on StorageAccountType:%s", dataDiskName, storageAccountType)
|
||||||
|
|
||||||
|
c.initStorageAccounts()
|
||||||
|
|
||||||
storageAccountName, err := c.findSANameForDisk(storageAccountType)
|
storageAccountName, err := c.findSANameForDisk(storageAccountType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -436,7 +440,7 @@ func (c *BlobDiskController) getDiskCount(SAName string) (int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *BlobDiskController) getAllStorageAccounts() (map[string]*storageAccountState, error) {
|
func (c *BlobDiskController) getAllStorageAccounts() (map[string]*storageAccountState, error) {
|
||||||
ctx, cancel := getContextWithCancel()
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
accountListResult, err := c.common.cloud.StorageAccountClient.ListByResourceGroup(ctx, c.common.resourceGroup)
|
accountListResult, err := c.common.cloud.StorageAccountClient.ListByResourceGroup(ctx, c.common.resourceGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -67,10 +67,6 @@ type ManagedDiskOptions struct {
|
|||||||
DiskMBpsReadWrite string
|
DiskMBpsReadWrite string
|
||||||
}
|
}
|
||||||
|
|
||||||
func newManagedDiskController(common *controllerCommon) (*ManagedDiskController, error) {
|
|
||||||
return &ManagedDiskController{common: common}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
//CreateManagedDisk : create managed disk
|
//CreateManagedDisk : create managed disk
|
||||||
func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) (string, error) {
|
func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) (string, error) {
|
||||||
var err error
|
var err error
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute"
|
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute"
|
||||||
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage"
|
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2018-07-01/storage"
|
||||||
@ -164,7 +165,9 @@ func (plugin *azureDataDiskPlugin) GetVolumeLimits() (map[string]int64, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if vmSizeList == nil {
|
if vmSizeList == nil {
|
||||||
result, err := az.VirtualMachineSizesClient.List(context.TODO(), az.Location)
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
result, err := az.VirtualMachineSizesClient.List(ctx, az.Location)
|
||||||
if err != nil || result.Value == nil {
|
if err != nil || result.Value == nil {
|
||||||
klog.Errorf("failed to list vm sizes in GetVolumeLimits, plugin.host: %s, location: %s", plugin.host.GetHostName(), az.Location)
|
klog.Errorf("failed to list vm sizes in GetVolumeLimits, plugin.host: %s, location: %s", plugin.host.GetHostName(), az.Location)
|
||||||
return volumeLimits, nil
|
return volumeLimits, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user