diff --git a/pkg/cloudprovider/providers/azure/BUILD b/pkg/cloudprovider/providers/azure/BUILD index bce40d50e0b..f3eb6e938a0 100644 --- a/pkg/cloudprovider/providers/azure/BUILD +++ b/pkg/cloudprovider/providers/azure/BUILD @@ -42,11 +42,9 @@ go_library( "//pkg/controller:go_default_library", "//pkg/version:go_default_library", "//pkg/volume:go_default_library", - "//vendor/github.com/Azure/azure-sdk-for-go/arm/compute:go_default_library", - "//vendor/github.com/Azure/azure-sdk-for-go/arm/disk:go_default_library", - "//vendor/github.com/Azure/azure-sdk-for-go/arm/storage:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library", + "//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/storage:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library", @@ -89,10 +87,9 @@ go_test( "//pkg/cloudprovider:go_default_library", "//pkg/cloudprovider/providers/azure/auth:go_default_library", "//pkg/kubelet/apis:go_default_library", - "//vendor/github.com/Azure/azure-sdk-for-go/arm/compute:go_default_library", - "//vendor/github.com/Azure/azure-sdk-for-go/arm/storage:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network:go_default_library", + "//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", diff --git a/pkg/cloudprovider/providers/azure/azure_backoff.go b/pkg/cloudprovider/providers/azure/azure_backoff.go index aa678567c02..d552f73ba99 100644 --- a/pkg/cloudprovider/providers/azure/azure_backoff.go +++ b/pkg/cloudprovider/providers/azure/azure_backoff.go @@ -20,8 +20,7 @@ import ( "context" "net/http" - "github.com/Azure/azure-sdk-for-go/arm/compute" - computepreview "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "github.com/Azure/go-autorest/autorest" "github.com/golang/glog" @@ -72,10 +71,11 @@ func (az *Cloud) GetVirtualMachineWithRetry(name types.NodeName) (compute.Virtua // VirtualMachineClientListWithRetry invokes az.VirtualMachinesClient.List with exponential backoff retry func (az *Cloud) VirtualMachineClientListWithRetry() ([]compute.VirtualMachine, error) { allNodes := []compute.VirtualMachine{} - var result compute.VirtualMachineListResult err := wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) { var retryErr error - result, retryErr = az.VirtualMachinesClient.List(az.ResourceGroup) + ctx, cancel := getContextWithCancel() + defer cancel() + allNodes, retryErr = az.VirtualMachinesClient.List(ctx, az.ResourceGroup) if retryErr != nil { glog.Errorf("VirtualMachinesClient.List(%v) - backoff: failure, will retry,err=%v", az.ResourceGroup, @@ -89,30 +89,6 @@ func (az *Cloud) VirtualMachineClientListWithRetry() ([]compute.VirtualMachine, return nil, err } - appendResults := (result.Value != nil && len(*result.Value) > 0) - for appendResults { - allNodes = append(allNodes, *result.Value...) - appendResults = false - // follow the next link to get all the vms for resource group - if result.NextLink != nil { - err := wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) { - var retryErr error - result, retryErr = az.VirtualMachinesClient.ListNextResults(az.ResourceGroup, result) - if retryErr != nil { - glog.Errorf("VirtualMachinesClient.ListNextResults(%v) - backoff: failure, will retry,err=%v", - az.ResourceGroup, retryErr) - return false, retryErr - } - glog.V(2).Infof("VirtualMachinesClient.ListNextResults(%v): success", az.ResourceGroup) - return true, nil - }) - if err != nil { - return allNodes, err - } - appendResults = (result.Value != nil && len(*result.Value) > 0) - } - } - return allNodes, err } @@ -352,16 +328,17 @@ func (az *Cloud) DeleteRouteWithRetry(routeName string) error { // CreateOrUpdateVMWithRetry invokes az.VirtualMachinesClient.CreateOrUpdate with exponential backoff retry func (az *Cloud) CreateOrUpdateVMWithRetry(vmName string, newVM compute.VirtualMachine) error { return wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) { - respChan, errChan := az.VirtualMachinesClient.CreateOrUpdate(az.ResourceGroup, vmName, newVM, nil) - resp := <-respChan - err := <-errChan + ctx, cancel := getContextWithCancel() + defer cancel() + + resp, err := az.VirtualMachinesClient.CreateOrUpdate(ctx, az.ResourceGroup, vmName, newVM) glog.V(10).Infof("VirtualMachinesClient.CreateOrUpdate(%s): end", vmName) - return processRetryResponse(resp.Response, err) + return processHTTPRetryResponse(resp, err) }) } // UpdateVmssVMWithRetry invokes az.VirtualMachineScaleSetVMsClient.Update with exponential backoff retry -func (az *Cloud) UpdateVmssVMWithRetry(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters computepreview.VirtualMachineScaleSetVM) error { +func (az *Cloud) UpdateVmssVMWithRetry(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) error { return wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) { resp, err := az.VirtualMachineScaleSetVMsClient.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters) glog.V(10).Infof("VirtualMachinesClient.CreateOrUpdate(%s,%s): end", VMScaleSetName, instanceID) diff --git a/pkg/cloudprovider/providers/azure/azure_blobDiskController.go b/pkg/cloudprovider/providers/azure/azure_blobDiskController.go index 265b96af914..d0365936da5 100644 --- a/pkg/cloudprovider/providers/azure/azure_blobDiskController.go +++ b/pkg/cloudprovider/providers/azure/azure_blobDiskController.go @@ -27,7 +27,7 @@ import ( "sync/atomic" "time" - storage "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" azstorage "github.com/Azure/azure-sdk-for-go/storage" "github.com/Azure/go-autorest/autorest/to" "github.com/golang/glog" @@ -277,7 +277,10 @@ func (c *BlobDiskController) getStorageAccountKey(SAName string) (string, error) if account, exists := c.accounts[SAName]; exists && account.key != "" { return c.accounts[SAName].key, nil } - listKeysResult, err := c.common.cloud.StorageAccountClient.ListKeys(c.common.resourceGroup, SAName) + + ctx, cancel := getContextWithCancel() + defer cancel() + listKeysResult, err := c.common.cloud.StorageAccountClient.ListKeys(ctx, c.common.resourceGroup, SAName) if err != nil { return "", err } @@ -432,7 +435,9 @@ func (c *BlobDiskController) getDiskCount(SAName string) (int, error) { } func (c *BlobDiskController) getAllStorageAccounts() (map[string]*storageAccountState, error) { - accountListResult, err := c.common.cloud.StorageAccountClient.ListByResourceGroup(c.common.resourceGroup) + ctx, cancel := getContextWithCancel() + defer cancel() + accountListResult, err := c.common.cloud.StorageAccountClient.ListByResourceGroup(ctx, c.common.resourceGroup) if err != nil { return nil, err } @@ -484,12 +489,12 @@ func (c *BlobDiskController) createStorageAccount(storageAccountName string, sto cp := storage.AccountCreateParameters{ Sku: &storage.Sku{Name: storageAccountType}, - Tags: &map[string]*string{"created-by": to.StringPtr("azure-dd")}, + Tags: map[string]*string{"created-by": to.StringPtr("azure-dd")}, Location: &location} - cancel := make(chan struct{}) + ctx, cancel := getContextWithCancel() + defer cancel() - _, errChan := c.common.cloud.StorageAccountClient.Create(c.common.resourceGroup, storageAccountName, cp, cancel) - err := <-errChan + _, err := c.common.cloud.StorageAccountClient.Create(ctx, c.common.resourceGroup, storageAccountName, cp) if err != nil { return fmt.Errorf(fmt.Sprintf("Create Storage Account: %s, error: %s", storageAccountName, err)) } @@ -584,7 +589,9 @@ func (c *BlobDiskController) findSANameForDisk(storageAccountType storage.SkuNam //Gets storage account exist, provisionStatus, Error if any func (c *BlobDiskController) getStorageAccountState(storageAccountName string) (bool, storage.ProvisioningState, error) { - account, err := c.common.cloud.StorageAccountClient.GetProperties(c.common.resourceGroup, storageAccountName) + ctx, cancel := getContextWithCancel() + defer cancel() + account, err := c.common.cloud.StorageAccountClient.GetProperties(ctx, c.common.resourceGroup, storageAccountName) if err != nil { return false, "", err } diff --git a/pkg/cloudprovider/providers/azure/azure_controller_common.go b/pkg/cloudprovider/providers/azure/azure_controller_common.go index 84a911c4c8f..318f72042e7 100644 --- a/pkg/cloudprovider/providers/azure/azure_controller_common.go +++ b/pkg/cloudprovider/providers/azure/azure_controller_common.go @@ -20,7 +20,7 @@ import ( "fmt" "time" - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "k8s.io/apimachinery/pkg/types" kwait "k8s.io/apimachinery/pkg/util/wait" diff --git a/pkg/cloudprovider/providers/azure/azure_controller_standard.go b/pkg/cloudprovider/providers/azure/azure_controller_standard.go index 5563f4cf743..d348031bb20 100644 --- a/pkg/cloudprovider/providers/azure/azure_controller_standard.go +++ b/pkg/cloudprovider/providers/azure/azure_controller_standard.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/golang/glog" "k8s.io/apimachinery/pkg/types" @@ -70,10 +70,10 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri } vmName := mapNodeNameToVMName(nodeName) glog.V(2).Infof("azureDisk - update(%s): vm(%s) - attach disk", as.resourceGroup, vmName) - respChan, errChan := as.VirtualMachinesClient.CreateOrUpdate(as.resourceGroup, vmName, newVM, nil) - resp := <-respChan - err = <-errChan - if as.CloudProviderBackoff && shouldRetryAPIRequest(resp.Response, err) { + ctx, cancel := getContextWithCancel() + defer cancel() + resp, err := as.VirtualMachinesClient.CreateOrUpdate(ctx, as.resourceGroup, vmName, newVM) + if as.CloudProviderBackoff && shouldRetryHTTPRequest(resp, err) { glog.V(2).Infof("azureDisk - update(%s) backing off: vm(%s)", as.resourceGroup, vmName) retryErr := as.CreateOrUpdateVMWithRetry(vmName, newVM) if retryErr != nil { @@ -135,10 +135,10 @@ func (as *availabilitySet) DetachDiskByName(diskName, diskURI string, nodeName t } vmName := mapNodeNameToVMName(nodeName) glog.V(2).Infof("azureDisk - update(%s): vm(%s) - detach disk", as.resourceGroup, vmName) - respChan, errChan := as.VirtualMachinesClient.CreateOrUpdate(as.resourceGroup, vmName, newVM, nil) - resp := <-respChan - err = <-errChan - if as.CloudProviderBackoff && shouldRetryAPIRequest(resp.Response, err) { + ctx, cancel := getContextWithCancel() + defer cancel() + resp, err := as.VirtualMachinesClient.CreateOrUpdate(ctx, as.resourceGroup, vmName, newVM) + if as.CloudProviderBackoff && shouldRetryHTTPRequest(resp, err) { glog.V(2).Infof("azureDisk - update(%s) backing off: vm(%s)", as.resourceGroup, vmName) retryErr := as.CreateOrUpdateVMWithRetry(vmName, newVM) if retryErr != nil { diff --git a/pkg/cloudprovider/providers/azure/azure_controller_vmss.go b/pkg/cloudprovider/providers/azure/azure_controller_vmss.go index ea07a8a30c7..711b82341ab 100644 --- a/pkg/cloudprovider/providers/azure/azure_controller_vmss.go +++ b/pkg/cloudprovider/providers/azure/azure_controller_vmss.go @@ -20,8 +20,7 @@ import ( "fmt" "strings" - "github.com/Azure/azure-sdk-for-go/arm/compute" - computepreview "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/golang/glog" "k8s.io/apimachinery/pkg/types" @@ -39,24 +38,24 @@ func (ss *scaleSet) AttachDisk(isManagedDisk bool, diskName, diskURI string, nod disks := *vm.StorageProfile.DataDisks if isManagedDisk { disks = append(disks, - computepreview.DataDisk{ + compute.DataDisk{ Name: &diskName, Lun: &lun, - Caching: computepreview.CachingTypes(cachingMode), + Caching: compute.CachingTypes(cachingMode), CreateOption: "attach", - ManagedDisk: &computepreview.ManagedDiskParameters{ + ManagedDisk: &compute.ManagedDiskParameters{ ID: &diskURI, }, }) } else { disks = append(disks, - computepreview.DataDisk{ + compute.DataDisk{ Name: &diskName, - Vhd: &computepreview.VirtualHardDisk{ + Vhd: &compute.VirtualHardDisk{ URI: &diskURI, }, Lun: &lun, - Caching: computepreview.CachingTypes(cachingMode), + Caching: compute.CachingTypes(cachingMode), CreateOption: "attach", }) } diff --git a/pkg/cloudprovider/providers/azure/azure_fakes.go b/pkg/cloudprovider/providers/azure/azure_fakes.go index acab61f9c08..4c0f451f96e 100644 --- a/pkg/cloudprovider/providers/azure/azure_fakes.go +++ b/pkg/cloudprovider/providers/azure/azure_fakes.go @@ -29,11 +29,9 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/cloudprovider" - "github.com/Azure/azure-sdk-for-go/arm/compute" - "github.com/Azure/azure-sdk-for-go/arm/disk" - "github.com/Azure/azure-sdk-for-go/arm/storage" - computepreview "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" ) @@ -400,32 +398,19 @@ func newFakeAzureVirtualMachinesClient() *fakeAzureVirtualMachinesClient { return fVMC } -func (fVMC *fakeAzureVirtualMachinesClient) CreateOrUpdate(resourceGroupName string, VMName string, parameters compute.VirtualMachine, cancel <-chan struct{}) (<-chan compute.VirtualMachine, <-chan error) { +func (fVMC *fakeAzureVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (resp *http.Response, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() - resultChan := make(chan compute.VirtualMachine, 1) - errChan := make(chan error, 1) - var result compute.VirtualMachine - var err error - defer func() { - resultChan <- result - errChan <- err - close(resultChan) - close(errChan) - }() + if _, ok := fVMC.FakeStore[resourceGroupName]; !ok { fVMC.FakeStore[resourceGroupName] = make(map[string]compute.VirtualMachine) } fVMC.FakeStore[resourceGroupName][VMName] = parameters - result = fVMC.FakeStore[resourceGroupName][VMName] - result.Response.Response = &http.Response{ - StatusCode: http.StatusOK, - } - err = nil - return resultChan, errChan + + return nil, nil } -func (fVMC *fakeAzureVirtualMachinesClient) Get(resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) { +func (fVMC *fakeAzureVirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() if _, ok := fVMC.FakeStore[resourceGroupName]; ok { @@ -439,27 +424,19 @@ func (fVMC *fakeAzureVirtualMachinesClient) Get(resourceGroupName string, VMName } } -func (fVMC *fakeAzureVirtualMachinesClient) List(resourceGroupName string) (result compute.VirtualMachineListResult, err error) { +func (fVMC *fakeAzureVirtualMachinesClient) List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachine, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() - var value []compute.VirtualMachine + + result = []compute.VirtualMachine{} if _, ok := fVMC.FakeStore[resourceGroupName]; ok { for _, v := range fVMC.FakeStore[resourceGroupName] { - value = append(value, v) + result = append(result, v) } } - result.Response.Response = &http.Response{ - StatusCode: http.StatusOK, - } - result.NextLink = nil - result.Value = &value + return result, nil } -func (fVMC *fakeAzureVirtualMachinesClient) ListNextResults(resourceGroupName string, lastResults compute.VirtualMachineListResult) (result compute.VirtualMachineListResult, err error) { - fVMC.mutex.Lock() - defer fVMC.mutex.Unlock() - return compute.VirtualMachineListResult{}, nil -} type fakeAzureSubnetsClient struct { mutex *sync.Mutex @@ -717,29 +694,29 @@ func getRandomIPPtr() *string { type fakeVirtualMachineScaleSetVMsClient struct { mutex *sync.Mutex - FakeStore map[string]map[string]computepreview.VirtualMachineScaleSetVM + FakeStore map[string]map[string]compute.VirtualMachineScaleSetVM } func newFakeVirtualMachineScaleSetVMsClient() *fakeVirtualMachineScaleSetVMsClient { fVMC := &fakeVirtualMachineScaleSetVMsClient{} - fVMC.FakeStore = make(map[string]map[string]computepreview.VirtualMachineScaleSetVM) + fVMC.FakeStore = make(map[string]map[string]compute.VirtualMachineScaleSetVM) fVMC.mutex = &sync.Mutex{} return fVMC } -func (fVMC *fakeVirtualMachineScaleSetVMsClient) setFakeStore(store map[string]map[string]computepreview.VirtualMachineScaleSetVM) { +func (fVMC *fakeVirtualMachineScaleSetVMsClient) setFakeStore(store map[string]map[string]compute.VirtualMachineScaleSetVM) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() fVMC.FakeStore = store } -func (fVMC *fakeVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result []computepreview.VirtualMachineScaleSetVM, err error) { +func (fVMC *fakeVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result []compute.VirtualMachineScaleSetVM, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() - result = []computepreview.VirtualMachineScaleSetVM{} + result = []compute.VirtualMachineScaleSetVM{} if _, ok := fVMC.FakeStore[resourceGroupName]; ok { for _, v := range fVMC.FakeStore[resourceGroupName] { result = append(result, v) @@ -749,7 +726,7 @@ func (fVMC *fakeVirtualMachineScaleSetVMsClient) List(ctx context.Context, resou return result, nil } -func (fVMC *fakeVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result computepreview.VirtualMachineScaleSetVM, err error) { +func (fVMC *fakeVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVM, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() @@ -766,7 +743,7 @@ func (fVMC *fakeVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resour } } -func (fVMC *fakeVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result computepreview.VirtualMachineScaleSetVMInstanceView, err error) { +func (fVMC *fakeVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVMInstanceView, err error) { _, err = fVMC.Get(ctx, resourceGroupName, VMScaleSetName, instanceID) if err != nil { return result, err @@ -775,7 +752,7 @@ func (fVMC *fakeVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Con return result, nil } -func (fVMC *fakeVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters computepreview.VirtualMachineScaleSetVM) (resp *http.Response, err error) { +func (fVMC *fakeVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) (resp *http.Response, err error) { fVMC.mutex.Lock() defer fVMC.mutex.Unlock() @@ -791,37 +768,37 @@ func (fVMC *fakeVirtualMachineScaleSetVMsClient) Update(ctx context.Context, res type fakeVirtualMachineScaleSetsClient struct { mutex *sync.Mutex - FakeStore map[string]map[string]computepreview.VirtualMachineScaleSet + FakeStore map[string]map[string]compute.VirtualMachineScaleSet } func newFakeVirtualMachineScaleSetsClient() *fakeVirtualMachineScaleSetsClient { fVMSSC := &fakeVirtualMachineScaleSetsClient{} - fVMSSC.FakeStore = make(map[string]map[string]computepreview.VirtualMachineScaleSet) + fVMSSC.FakeStore = make(map[string]map[string]compute.VirtualMachineScaleSet) fVMSSC.mutex = &sync.Mutex{} return fVMSSC } -func (fVMSSC *fakeVirtualMachineScaleSetsClient) setFakeStore(store map[string]map[string]computepreview.VirtualMachineScaleSet) { +func (fVMSSC *fakeVirtualMachineScaleSetsClient) setFakeStore(store map[string]map[string]compute.VirtualMachineScaleSet) { fVMSSC.mutex.Lock() defer fVMSSC.mutex.Unlock() fVMSSC.FakeStore = store } -func (fVMSSC *fakeVirtualMachineScaleSetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters computepreview.VirtualMachineScaleSet) (resp *http.Response, err error) { +func (fVMSSC *fakeVirtualMachineScaleSetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters compute.VirtualMachineScaleSet) (resp *http.Response, err error) { fVMSSC.mutex.Lock() defer fVMSSC.mutex.Unlock() if _, ok := fVMSSC.FakeStore[resourceGroupName]; !ok { - fVMSSC.FakeStore[resourceGroupName] = make(map[string]computepreview.VirtualMachineScaleSet) + fVMSSC.FakeStore[resourceGroupName] = make(map[string]compute.VirtualMachineScaleSet) } fVMSSC.FakeStore[resourceGroupName][VMScaleSetName] = parameters return nil, nil } -func (fVMSSC *fakeVirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result computepreview.VirtualMachineScaleSet, err error) { +func (fVMSSC *fakeVirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result compute.VirtualMachineScaleSet, err error) { fVMSSC.mutex.Lock() defer fVMSSC.mutex.Unlock() @@ -837,11 +814,11 @@ func (fVMSSC *fakeVirtualMachineScaleSetsClient) Get(ctx context.Context, resour } } -func (fVMSSC *fakeVirtualMachineScaleSetsClient) List(ctx context.Context, resourceGroupName string) (result []computepreview.VirtualMachineScaleSet, err error) { +func (fVMSSC *fakeVirtualMachineScaleSetsClient) List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachineScaleSet, err error) { fVMSSC.mutex.Lock() defer fVMSSC.mutex.Unlock() - result = []computepreview.VirtualMachineScaleSet{} + result = []compute.VirtualMachineScaleSet{} if _, ok := fVMSSC.FakeStore[resourceGroupName]; ok { for _, v := range fVMSSC.FakeStore[resourceGroupName] { result = append(result, v) @@ -851,7 +828,7 @@ func (fVMSSC *fakeVirtualMachineScaleSetsClient) List(ctx context.Context, resou return result, nil } -func (fVMSSC *fakeVirtualMachineScaleSetsClient) UpdateInstances(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs computepreview.VirtualMachineScaleSetVMInstanceRequiredIDs) (resp *http.Response, err error) { +func (fVMSSC *fakeVirtualMachineScaleSetsClient) UpdateInstances(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs compute.VirtualMachineScaleSetVMInstanceRequiredIDs) (resp *http.Response, err error) { return nil, nil } @@ -1018,21 +995,10 @@ func newFakeStorageAccountClient() *fakeStorageAccountClient { return fSAC } -func (fSAC *fakeStorageAccountClient) Create(resourceGroupName string, accountName string, parameters storage.AccountCreateParameters, cancel <-chan struct{}) (<-chan storage.Account, <-chan error) { +func (fSAC *fakeStorageAccountClient) Create(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountCreateParameters) (resp *http.Response, err error) { fSAC.mutex.Lock() defer fSAC.mutex.Unlock() - resultChan := make(chan storage.Account, 1) - errChan := make(chan error, 1) - var result storage.Account - var err error - defer func() { - resultChan <- result - errChan <- err - close(resultChan) - close(errChan) - }() - if _, ok := fSAC.FakeStore[resourceGroupName]; !ok { fSAC.FakeStore[resourceGroupName] = make(map[string]storage.Account) } @@ -1045,15 +1011,11 @@ func (fSAC *fakeStorageAccountClient) Create(resourceGroupName string, accountNa Tags: parameters.Tags, AccountProperties: &storage.AccountProperties{}, } - result = fSAC.FakeStore[resourceGroupName][accountName] - result.Response.Response = &http.Response{ - StatusCode: http.StatusOK, - } - err = nil - return resultChan, errChan + + return nil, nil } -func (fSAC *fakeStorageAccountClient) Delete(resourceGroupName string, accountName string) (result autorest.Response, err error) { +func (fSAC *fakeStorageAccountClient) Delete(ctx context.Context, resourceGroupName string, accountName string) (result autorest.Response, err error) { fSAC.mutex.Lock() defer fSAC.mutex.Unlock() @@ -1077,15 +1039,15 @@ func (fSAC *fakeStorageAccountClient) Delete(resourceGroupName string, accountNa return result, err } -func (fSAC *fakeStorageAccountClient) ListKeys(resourceGroupName string, accountName string) (result storage.AccountListKeysResult, err error) { +func (fSAC *fakeStorageAccountClient) ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, err error) { return fSAC.Keys, fSAC.Err } -func (fSAC *fakeStorageAccountClient) ListByResourceGroup(resourceGroupName string) (result storage.AccountListResult, err error) { +func (fSAC *fakeStorageAccountClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, err error) { return fSAC.Accounts, fSAC.Err } -func (fSAC *fakeStorageAccountClient) GetProperties(resourceGroupName string, accountName string) (result storage.Account, err error) { +func (fSAC *fakeStorageAccountClient) GetProperties(ctx context.Context, resourceGroupName string, accountName string) (result storage.Account, err error) { fSAC.mutex.Lock() defer fSAC.mutex.Unlock() @@ -1103,83 +1065,45 @@ func (fSAC *fakeStorageAccountClient) GetProperties(resourceGroupName string, ac type fakeDisksClient struct { mutex *sync.Mutex - FakeStore map[string]map[string]disk.Model + FakeStore map[string]map[string]compute.Disk } func newFakeDisksClient() *fakeDisksClient { fDC := &fakeDisksClient{} - fDC.FakeStore = make(map[string]map[string]disk.Model) + fDC.FakeStore = make(map[string]map[string]compute.Disk) fDC.mutex = &sync.Mutex{} return fDC } -func (fDC *fakeDisksClient) CreateOrUpdate(resourceGroupName string, diskName string, diskParameter disk.Model, cancel <-chan struct{}) (<-chan disk.Model, <-chan error) { +func (fDC *fakeDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, diskParameter compute.Disk) (resp *http.Response, err error) { fDC.mutex.Lock() defer fDC.mutex.Unlock() - resultChan := make(chan disk.Model, 1) - errChan := make(chan error, 1) - var result disk.Model - var err error - defer func() { - resultChan <- result - errChan <- err - close(resultChan) - close(errChan) - }() - if _, ok := fDC.FakeStore[resourceGroupName]; !ok { - fDC.FakeStore[resourceGroupName] = make(map[string]disk.Model) + fDC.FakeStore[resourceGroupName] = make(map[string]compute.Disk) } fDC.FakeStore[resourceGroupName][diskName] = diskParameter - result = fDC.FakeStore[resourceGroupName][diskName] - result.Response.Response = &http.Response{ - StatusCode: http.StatusOK, - } - err = nil - return resultChan, errChan + + return nil, nil } -func (fDC *fakeDisksClient) Delete(resourceGroupName string, diskName string, cancel <-chan struct{}) (<-chan disk.OperationStatusResponse, <-chan error) { +func (fDC *fakeDisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) (resp *http.Response, err error) { fDC.mutex.Lock() defer fDC.mutex.Unlock() - respChan := make(chan disk.OperationStatusResponse, 1) - errChan := make(chan error, 1) - var resp disk.OperationStatusResponse - var err error - defer func() { - respChan <- resp - errChan <- err - close(respChan) - close(errChan) - }() if rgDisks, ok := fDC.FakeStore[resourceGroupName]; ok { if _, ok := rgDisks[diskName]; ok { delete(rgDisks, diskName) - resp.Response = autorest.Response{ - Response: &http.Response{ - StatusCode: http.StatusAccepted, - }, - } - - err = nil - return respChan, errChan + return nil, nil } } - resp.Response = autorest.Response{ - Response: &http.Response{ - StatusCode: http.StatusNotFound, - }, - } - err = autorest.DetailedError{ - StatusCode: http.StatusNotFound, - Message: "Not such Disk", - } - return respChan, errChan + + return &http.Response{ + StatusCode: http.StatusAccepted, + }, nil } -func (fDC *fakeDisksClient) Get(resourceGroupName string, diskName string) (result disk.Model, err error) { +func (fDC *fakeDisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result compute.Disk, err error) { fDC.mutex.Lock() defer fDC.mutex.Unlock() diff --git a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go index cad0c2ceae1..7856948a63f 100644 --- a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go +++ b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go @@ -438,7 +438,7 @@ func (az *Cloud) ensurePublicIPExists(service *v1.Service, pipName string, domai DomainNameLabel: &domainNameLabel, } } - pip.Tags = &map[string]*string{"service": &serviceName} + pip.Tags = map[string]*string{"service": &serviceName} if az.useStandardLoadBalancer() { pip.Sku = &network.PublicIPAddressSku{ Name: network.PublicIPAddressSkuNameStandard, @@ -1202,8 +1202,8 @@ func (az *Cloud) reconcilePublicIP(clusterName string, service *v1.Service, want for _, pip := range pips { if pip.Tags != nil && - (*pip.Tags)["service"] != nil && - *(*pip.Tags)["service"] == serviceName { + (pip.Tags)["service"] != nil && + *(pip.Tags)["service"] == serviceName { // We need to process for pips belong to this service pipName := *pip.Name if wantLb && !isInternal && pipName == desiredPipName { diff --git a/pkg/cloudprovider/providers/azure/azure_managedDiskController.go b/pkg/cloudprovider/providers/azure/azure_managedDiskController.go index 207392680f6..02df2fd3d28 100644 --- a/pkg/cloudprovider/providers/azure/azure_managedDiskController.go +++ b/pkg/cloudprovider/providers/azure/azure_managedDiskController.go @@ -20,8 +20,8 @@ import ( "path" "strings" - "github.com/Azure/azure-sdk-for-go/arm/disk" - storage "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" "github.com/golang/glog" kwait "k8s.io/apimachinery/pkg/util/wait" ) @@ -54,18 +54,19 @@ func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccoun } diskSizeGB := int32(sizeGB) - model := disk.Model{ + model := compute.Disk{ Location: &c.common.location, - Tags: &newTags, - Properties: &disk.Properties{ - AccountType: disk.StorageAccountTypes(storageAccountType), + Tags: newTags, + Sku: &compute.DiskSku{ + Name: compute.StorageAccountTypes(storageAccountType), + }, + DiskProperties: &compute.DiskProperties{ DiskSizeGB: &diskSizeGB, - CreationData: &disk.CreationData{CreateOption: disk.Empty}, + CreationData: &compute.CreationData{CreateOption: compute.Empty}, }} - cancel := make(chan struct{}) - respChan, errChan := c.common.cloud.DisksClient.CreateOrUpdate(c.common.resourceGroup, diskName, model, cancel) - <-respChan - err := <-errChan + ctx, cancel := getContextWithCancel() + defer cancel() + _, err := c.common.cloud.DisksClient.CreateOrUpdate(ctx, c.common.resourceGroup, diskName, model) if err != nil { return "", err } @@ -99,10 +100,10 @@ func (c *ManagedDiskController) CreateManagedDisk(diskName string, storageAccoun //DeleteManagedDisk : delete managed disk func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error { diskName := path.Base(diskURI) - cancel := make(chan struct{}) - respChan, errChan := c.common.cloud.DisksClient.Delete(c.common.resourceGroup, diskName, cancel) - <-respChan - err := <-errChan + ctx, cancel := getContextWithCancel() + defer cancel() + + _, err := c.common.cloud.DisksClient.Delete(ctx, c.common.resourceGroup, diskName) if err != nil { return err } @@ -116,13 +117,16 @@ func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error { // return: disk provisionState, diskID, error func (c *ManagedDiskController) getDisk(diskName string) (string, string, error) { - result, err := c.common.cloud.DisksClient.Get(c.common.resourceGroup, diskName) + ctx, cancel := getContextWithCancel() + defer cancel() + + result, err := c.common.cloud.DisksClient.Get(ctx, c.common.resourceGroup, diskName) if err != nil { return "", "", err } - if result.Properties != nil && (*result.Properties).ProvisioningState != nil { - return *(*result.Properties).ProvisioningState, *result.ID, nil + if result.DiskProperties != nil && (*result.DiskProperties).ProvisioningState != nil { + return *(*result.DiskProperties).ProvisioningState, *result.ID, nil } return "", "", err diff --git a/pkg/cloudprovider/providers/azure/azure_standard.go b/pkg/cloudprovider/providers/azure/azure_standard.go index 179ee7839dd..a7f3b3efa25 100644 --- a/pkg/cloudprovider/providers/azure/azure_standard.go +++ b/pkg/cloudprovider/providers/azure/azure_standard.go @@ -28,7 +28,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/kubernetes/pkg/cloudprovider" - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "github.com/Azure/go-autorest/autorest/to" "github.com/golang/glog" diff --git a/pkg/cloudprovider/providers/azure/azure_storage.go b/pkg/cloudprovider/providers/azure/azure_storage.go index 03d919daa55..7e70282e306 100644 --- a/pkg/cloudprovider/providers/azure/azure_storage.go +++ b/pkg/cloudprovider/providers/azure/azure_storage.go @@ -19,7 +19,7 @@ package azure import ( "fmt" - "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" "github.com/golang/glog" ) diff --git a/pkg/cloudprovider/providers/azure/azure_storage_test.go b/pkg/cloudprovider/providers/azure/azure_storage_test.go index 6a1298ffb16..f358b32b098 100644 --- a/pkg/cloudprovider/providers/azure/azure_storage_test.go +++ b/pkg/cloudprovider/providers/azure/azure_storage_test.go @@ -19,7 +19,7 @@ package azure import ( "testing" - "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" ) func TestCreateFileShare(t *testing.T) { diff --git a/pkg/cloudprovider/providers/azure/azure_storageaccount.go b/pkg/cloudprovider/providers/azure/azure_storageaccount.go index 8425463b563..00944a8a44c 100644 --- a/pkg/cloudprovider/providers/azure/azure_storageaccount.go +++ b/pkg/cloudprovider/providers/azure/azure_storageaccount.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" "github.com/Azure/go-autorest/autorest/to" "github.com/golang/glog" ) @@ -31,7 +31,9 @@ type accountWithLocation struct { // getStorageAccounts gets name, type, location of all storage accounts in a resource group which matches matchingAccountType, matchingLocation func (az *Cloud) getStorageAccounts(matchingAccountType, matchingLocation string) ([]accountWithLocation, error) { - result, err := az.StorageAccountClient.ListByResourceGroup(az.ResourceGroup) + ctx, cancel := getContextWithCancel() + defer cancel() + result, err := az.StorageAccountClient.ListByResourceGroup(ctx, az.ResourceGroup) if err != nil { return nil, err } @@ -60,7 +62,10 @@ func (az *Cloud) getStorageAccounts(matchingAccountType, matchingLocation string // getStorageAccesskey gets the storage account access key func (az *Cloud) getStorageAccesskey(account string) (string, error) { - result, err := az.StorageAccountClient.ListKeys(az.ResourceGroup, account) + ctx, cancel := getContextWithCancel() + defer cancel() + + result, err := az.StorageAccountClient.ListKeys(ctx, az.ResourceGroup, account) if err != nil { return "", err } @@ -108,12 +113,12 @@ func (az *Cloud) ensureStorageAccount(accountName, accountType, location, genAcc accountName, az.ResourceGroup, location, accountType) cp := storage.AccountCreateParameters{ Sku: &storage.Sku{Name: storage.SkuName(accountType)}, - Tags: &map[string]*string{"created-by": to.StringPtr("azure")}, + Tags: map[string]*string{"created-by": to.StringPtr("azure")}, Location: &location} - cancel := make(chan struct{}) - _, errchan := az.StorageAccountClient.Create(az.ResourceGroup, accountName, cp, cancel) - err := <-errchan + ctx, cancel := getContextWithCancel() + defer cancel() + _, err := az.StorageAccountClient.Create(ctx, az.ResourceGroup, accountName, cp) if err != nil { return "", "", fmt.Errorf(fmt.Sprintf("Failed to create storage account %s, error: %s", accountName, err)) } diff --git a/pkg/cloudprovider/providers/azure/azure_storageaccount_test.go b/pkg/cloudprovider/providers/azure/azure_storageaccount_test.go index 86befc1ae8e..0bb86ccd20a 100644 --- a/pkg/cloudprovider/providers/azure/azure_storageaccount_test.go +++ b/pkg/cloudprovider/providers/azure/azure_storageaccount_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - "github.com/Azure/azure-sdk-for-go/arm/storage" + "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage" ) func TestGetStorageAccessKeys(t *testing.T) { diff --git a/pkg/cloudprovider/providers/azure/azure_test.go b/pkg/cloudprovider/providers/azure/azure_test.go index cb435a5266b..91469ef832f 100644 --- a/pkg/cloudprovider/providers/azure/azure_test.go +++ b/pkg/cloudprovider/providers/azure/azure_test.go @@ -35,7 +35,7 @@ import ( "k8s.io/kubernetes/pkg/cloudprovider/providers/azure/auth" kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis" - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "github.com/Azure/go-autorest/autorest/to" "github.com/stretchr/testify/assert" @@ -1067,8 +1067,10 @@ func getClusterResources(az *Cloud, vmCount int, availabilitySetCount int) (clus }, } - _, errChan := az.VirtualMachinesClient.CreateOrUpdate(az.Config.ResourceGroup, vmName, newVM, nil) - if err := <-errChan; err != nil { + ctx, cancel := getContextWithCancel() + defer cancel() + _, err := az.VirtualMachinesClient.CreateOrUpdate(ctx, az.Config.ResourceGroup, vmName, newVM) + if err != nil { } // add to kubernetes newNode := &v1.Node{ @@ -1314,12 +1316,12 @@ func validatePublicIP(t *testing.T, publicIP *network.PublicIPAddress, service * t.Errorf("Expected publicIP resource exists, when it is not an internal service") } - if publicIP.Tags == nil || (*publicIP.Tags)["service"] == nil { + if publicIP.Tags == nil || publicIP.Tags["service"] == nil { t.Errorf("Expected publicIP resource has tags[service]") } serviceName := getServiceName(service) - if serviceName != *(*publicIP.Tags)["service"] { + if serviceName != *(publicIP.Tags["service"]) { t.Errorf("Expected publicIP resource has matching tags[service]") } // We cannot use service.Spec.LoadBalancerIP to compare with diff --git a/pkg/cloudprovider/providers/azure/azure_vmsets.go b/pkg/cloudprovider/providers/azure/azure_vmsets.go index 7f19d65917b..925cf2c2aae 100644 --- a/pkg/cloudprovider/providers/azure/azure_vmsets.go +++ b/pkg/cloudprovider/providers/azure/azure_vmsets.go @@ -17,7 +17,7 @@ limitations under the License. package azure import ( - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "k8s.io/api/core/v1" diff --git a/pkg/cloudprovider/providers/azure/azure_vmss.go b/pkg/cloudprovider/providers/azure/azure_vmss.go index 5096dd01125..4a46996d38f 100644 --- a/pkg/cloudprovider/providers/azure/azure_vmss.go +++ b/pkg/cloudprovider/providers/azure/azure_vmss.go @@ -24,7 +24,7 @@ import ( "strconv" "strings" - computepreview "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "github.com/Azure/go-autorest/autorest/to" "github.com/golang/glog" @@ -91,7 +91,7 @@ func newScaleSet(az *Cloud) (VMSet, error) { // getVmssVM gets virtualMachineScaleSetVM by nodeName from cache. // It returns cloudprovider.InstanceNotFound if node does not belong to any scale sets. -func (ss *scaleSet) getVmssVM(nodeName string) (ssName, instanceID string, vm computepreview.VirtualMachineScaleSetVM, err error) { +func (ss *scaleSet) getVmssVM(nodeName string) (ssName, instanceID string, vm compute.VirtualMachineScaleSetVM, err error) { instanceID, err = getScaleSetVMInstanceID(nodeName) if err != nil { return ssName, instanceID, vm, err @@ -117,12 +117,12 @@ func (ss *scaleSet) getVmssVM(nodeName string) (ssName, instanceID string, vm co return ssName, instanceID, vm, cloudprovider.InstanceNotFound } - return ssName, instanceID, *(cachedVM.(*computepreview.VirtualMachineScaleSetVM)), nil + return ssName, instanceID, *(cachedVM.(*compute.VirtualMachineScaleSetVM)), nil } // getCachedVirtualMachineByInstanceID gets scaleSetVMInfo from cache. // The node must belong to one of scale sets. -func (ss *scaleSet) getVmssVMByInstanceID(scaleSetName, instanceID string) (vm computepreview.VirtualMachineScaleSetVM, err error) { +func (ss *scaleSet) getVmssVMByInstanceID(scaleSetName, instanceID string) (vm compute.VirtualMachineScaleSetVM, err error) { vmName := ss.makeVmssVMName(scaleSetName, instanceID) cachedVM, err := ss.vmssVMCache.Get(vmName) if err != nil { @@ -134,7 +134,7 @@ func (ss *scaleSet) getVmssVMByInstanceID(scaleSetName, instanceID string) (vm c return vm, cloudprovider.InstanceNotFound } - return *(cachedVM.(*computepreview.VirtualMachineScaleSetVM)), nil + return *(cachedVM.(*compute.VirtualMachineScaleSetVM)), nil } // GetInstanceIDByNodeName gets the cloud provider ID by node name. @@ -265,7 +265,7 @@ func (ss *scaleSet) GetIPByNodeName(nodeName, vmSetName string) (string, string, } // This returns the full identifier of the primary NIC for the given VM. -func (ss *scaleSet) getPrimaryInterfaceID(machine computepreview.VirtualMachineScaleSetVM) (string, error) { +func (ss *scaleSet) getPrimaryInterfaceID(machine compute.VirtualMachineScaleSetVM) (string, error) { if len(*machine.NetworkProfile.NetworkInterfaces) == 1 { return *(*machine.NetworkProfile.NetworkInterfaces)[0].ID, nil } @@ -327,12 +327,12 @@ func (ss *scaleSet) listScaleSets() ([]string, error) { } // listScaleSetVMs lists VMs belonging to the specified scale set. -func (ss *scaleSet) listScaleSetVMs(scaleSetName string) ([]computepreview.VirtualMachineScaleSetVM, error) { +func (ss *scaleSet) listScaleSetVMs(scaleSetName string) ([]compute.VirtualMachineScaleSetVM, error) { var err error ctx, cancel := getContextWithCancel() defer cancel() - allVMs, err := ss.VirtualMachineScaleSetVMsClient.List(ctx, ss.ResourceGroup, scaleSetName, "", "", string(computepreview.InstanceView)) + allVMs, err := ss.VirtualMachineScaleSetVMsClient.List(ctx, ss.ResourceGroup, scaleSetName, "", "", string(compute.InstanceView)) if err != nil { glog.Errorf("VirtualMachineScaleSetVMsClient.List failed: %v", err) return nil, err @@ -469,8 +469,8 @@ func (ss *scaleSet) GetPrimaryInterface(nodeName, vmSetName string) (network.Int } // getScaleSetWithRetry gets scale set with exponential backoff retry -func (ss *scaleSet) getScaleSetWithRetry(name string) (computepreview.VirtualMachineScaleSet, bool, error) { - var result computepreview.VirtualMachineScaleSet +func (ss *scaleSet) getScaleSetWithRetry(name string) (compute.VirtualMachineScaleSet, bool, error) { + var result compute.VirtualMachineScaleSet var exists bool err := wait.ExponentialBackoff(ss.requestBackoff(), func() (bool, error) { @@ -483,7 +483,7 @@ func (ss *scaleSet) getScaleSetWithRetry(name string) (computepreview.VirtualMac if cached != nil { exists = true - result = *(cached.(*computepreview.VirtualMachineScaleSet)) + result = *(cached.(*compute.VirtualMachineScaleSet)) } return true, nil @@ -493,7 +493,7 @@ func (ss *scaleSet) getScaleSetWithRetry(name string) (computepreview.VirtualMac } // getPrimaryNetworkConfiguration gets primary network interface configuration for scale sets. -func (ss *scaleSet) getPrimaryNetworkConfiguration(networkConfigurationList *[]computepreview.VirtualMachineScaleSetNetworkConfiguration, scaleSetName string) (*computepreview.VirtualMachineScaleSetNetworkConfiguration, error) { +func (ss *scaleSet) getPrimaryNetworkConfiguration(networkConfigurationList *[]compute.VirtualMachineScaleSetNetworkConfiguration, scaleSetName string) (*compute.VirtualMachineScaleSetNetworkConfiguration, error) { networkConfigurations := *networkConfigurationList if len(networkConfigurations) == 1 { return &networkConfigurations[0], nil @@ -509,7 +509,7 @@ func (ss *scaleSet) getPrimaryNetworkConfiguration(networkConfigurationList *[]c return nil, fmt.Errorf("failed to find a primary network configuration for the scale set %q", scaleSetName) } -func (ss *scaleSet) getPrimaryIPConfigForScaleSet(config *computepreview.VirtualMachineScaleSetNetworkConfiguration, scaleSetName string) (*computepreview.VirtualMachineScaleSetIPConfiguration, error) { +func (ss *scaleSet) getPrimaryIPConfigForScaleSet(config *compute.VirtualMachineScaleSetNetworkConfiguration, scaleSetName string) (*compute.VirtualMachineScaleSetIPConfiguration, error) { ipConfigurations := *config.IPConfigurations if len(ipConfigurations) == 1 { return &ipConfigurations[0], nil @@ -526,7 +526,7 @@ func (ss *scaleSet) getPrimaryIPConfigForScaleSet(config *computepreview.Virtual } // createOrUpdateVMSSWithRetry invokes ss.VirtualMachineScaleSetsClient.CreateOrUpdate with exponential backoff retry. -func (ss *scaleSet) createOrUpdateVMSSWithRetry(virtualMachineScaleSet computepreview.VirtualMachineScaleSet) error { +func (ss *scaleSet) createOrUpdateVMSSWithRetry(virtualMachineScaleSet compute.VirtualMachineScaleSet) error { return wait.ExponentialBackoff(ss.requestBackoff(), func() (bool, error) { ctx, cancel := getContextWithCancel() defer cancel() @@ -537,7 +537,7 @@ func (ss *scaleSet) createOrUpdateVMSSWithRetry(virtualMachineScaleSet computepr } // updateVMSSInstancesWithRetry invokes ss.VirtualMachineScaleSetsClient.UpdateInstances with exponential backoff retry. -func (ss *scaleSet) updateVMSSInstancesWithRetry(scaleSetName string, vmInstanceIDs computepreview.VirtualMachineScaleSetVMInstanceRequiredIDs) error { +func (ss *scaleSet) updateVMSSInstancesWithRetry(scaleSetName string, vmInstanceIDs compute.VirtualMachineScaleSetVMInstanceRequiredIDs) error { return wait.ExponentialBackoff(ss.requestBackoff(), func() (bool, error) { ctx, cancel := getContextWithCancel() defer cancel() @@ -611,7 +611,7 @@ func (ss *scaleSet) ensureHostsInVMSetPool(serviceName string, backendPoolID str // Update primary IP configuration's LoadBalancerBackendAddressPools. foundPool := false - newBackendPools := []computepreview.SubResource{} + newBackendPools := []compute.SubResource{} if primaryIPConfiguration.LoadBalancerBackendAddressPools != nil { newBackendPools = *primaryIPConfiguration.LoadBalancerBackendAddressPools } @@ -641,7 +641,7 @@ func (ss *scaleSet) ensureHostsInVMSetPool(serviceName string, backendPoolID str } newBackendPools = append(newBackendPools, - computepreview.SubResource{ + compute.SubResource{ ID: to.StringPtr(backendPoolID), }) primaryIPConfiguration.LoadBalancerBackendAddressPools = &newBackendPools @@ -665,7 +665,7 @@ func (ss *scaleSet) ensureHostsInVMSetPool(serviceName string, backendPoolID str } // Update instances to latest VMSS model. - vmInstanceIDs := computepreview.VirtualMachineScaleSetVMInstanceRequiredIDs{ + vmInstanceIDs := compute.VirtualMachineScaleSetVMInstanceRequiredIDs{ InstanceIds: &instanceIDs, } ctx, cancel := getContextWithCancel() @@ -758,7 +758,7 @@ func (ss *scaleSet) ensureScaleSetBackendPoolDeleted(poolID, ssName string) erro return nil } existingBackendPools := *primaryIPConfiguration.LoadBalancerBackendAddressPools - newBackendPools := []computepreview.SubResource{} + newBackendPools := []compute.SubResource{} foundPool := false for i := len(existingBackendPools) - 1; i >= 0; i-- { curPool := existingBackendPools[i] @@ -794,7 +794,7 @@ func (ss *scaleSet) ensureScaleSetBackendPoolDeleted(poolID, ssName string) erro // Update instances to latest VMSS model. instanceIDs := []string{"*"} - vmInstanceIDs := computepreview.VirtualMachineScaleSetVMInstanceRequiredIDs{ + vmInstanceIDs := compute.VirtualMachineScaleSetVMInstanceRequiredIDs{ InstanceIds: &instanceIDs, } instanceCtx, instanceCancel := getContextWithCancel() diff --git a/pkg/cloudprovider/providers/azure/azure_vmss_test.go b/pkg/cloudprovider/providers/azure/azure_vmss_test.go index e2403f25850..192537d30cb 100644 --- a/pkg/cloudprovider/providers/azure/azure_vmss_test.go +++ b/pkg/cloudprovider/providers/azure/azure_vmss_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - computepreview "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" + compute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/stretchr/testify/assert" ) @@ -37,8 +37,8 @@ func newTestScaleSet(scaleSetName string, vmList []string) (*scaleSet, error) { func setTestVirtualMachineCloud(ss *Cloud, scaleSetName string, vmList []string) { virtualMachineScaleSetsClient := newFakeVirtualMachineScaleSetsClient() - scaleSets := make(map[string]map[string]computepreview.VirtualMachineScaleSet) - scaleSets["rg"] = map[string]computepreview.VirtualMachineScaleSet{ + scaleSets := make(map[string]map[string]compute.VirtualMachineScaleSet) + scaleSets["rg"] = map[string]compute.VirtualMachineScaleSet{ scaleSetName: { Name: &scaleSetName, }, @@ -46,24 +46,24 @@ func setTestVirtualMachineCloud(ss *Cloud, scaleSetName string, vmList []string) virtualMachineScaleSetsClient.setFakeStore(scaleSets) virtualMachineScaleSetVMsClient := newFakeVirtualMachineScaleSetVMsClient() - ssVMs := make(map[string]map[string]computepreview.VirtualMachineScaleSetVM) - ssVMs["rg"] = make(map[string]computepreview.VirtualMachineScaleSetVM) + ssVMs := make(map[string]map[string]compute.VirtualMachineScaleSetVM) + ssVMs["rg"] = make(map[string]compute.VirtualMachineScaleSetVM) for i := range vmList { ID := fmt.Sprintf("/subscriptions/script/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/%s/virtualMachines/%d", scaleSetName, i) nodeName := vmList[i] instanceID := fmt.Sprintf("%d", i) vmName := fmt.Sprintf("%s_%s", scaleSetName, instanceID) - networkInterfaces := []computepreview.NetworkInterfaceReference{ + networkInterfaces := []compute.NetworkInterfaceReference{ { ID: &nodeName, }, } - ssVMs["rg"][vmName] = computepreview.VirtualMachineScaleSetVM{ - VirtualMachineScaleSetVMProperties: &computepreview.VirtualMachineScaleSetVMProperties{ - OsProfile: &computepreview.OSProfile{ + ssVMs["rg"][vmName] = compute.VirtualMachineScaleSetVM{ + VirtualMachineScaleSetVMProperties: &compute.VirtualMachineScaleSetVMProperties{ + OsProfile: &compute.OSProfile{ ComputerName: &nodeName, }, - NetworkProfile: &computepreview.NetworkProfile{ + NetworkProfile: &compute.NetworkProfile{ NetworkInterfaces: &networkInterfaces, }, }, diff --git a/pkg/cloudprovider/providers/azure/azure_wrap.go b/pkg/cloudprovider/providers/azure/azure_wrap.go index bd511696b4a..d34e1de5472 100644 --- a/pkg/cloudprovider/providers/azure/azure_wrap.go +++ b/pkg/cloudprovider/providers/azure/azure_wrap.go @@ -22,7 +22,7 @@ import ( "strings" "time" - "github.com/Azure/azure-sdk-for-go/arm/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" "github.com/Azure/go-autorest/autorest" @@ -174,7 +174,9 @@ func (az *Cloud) newVMCache() (*timedCache, error) { // case we do get instance view every time to fulfill the azure_zones requirement without hitting // throttling. // Consider adding separate parameter for controlling 'InstanceView' once node update issue #56276 is fixed - vm, err := az.VirtualMachinesClient.Get(az.ResourceGroup, key, compute.InstanceView) + ctx, cancel := getContextWithCancel() + defer cancel() + vm, err := az.VirtualMachinesClient.Get(ctx, az.ResourceGroup, key, compute.InstanceView) exists, realErr := checkResourceExistsFromError(err) if realErr != nil { return nil, realErr