Skip to content

Commit

Permalink
fix: resource group issue in disk attach
Browse files Browse the repository at this point in the history
  • Loading branch information
andyzhangx committed Nov 23, 2022
1 parent c905fb1 commit 2fcc699
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 18 deletions.
6 changes: 1 addition & 5 deletions pkg/provider/azure_controller_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,11 +267,7 @@ func (c *controllerCommon) AttachDisk(ctx context.Context, async bool, diskName,
klog.Warningf("azureDisk - switch to batch operation due to rate limited, QPS: %f", c.diskOpRateLimiter.QPS())
}
}
resourceGroup, _, err := getInfoFromDiskURI(diskURI)
if err != nil {
return -1, err
}
return lun, vmset.WaitForUpdateResult(ctx, future, nodeName, resourceGroup, "attach_disk")
return lun, vmset.WaitForUpdateResult(ctx, future, nodeName, "attach_disk")
}

func (c *controllerCommon) insertAttachDiskRequest(diskURI, nodeName string, options *AttachDiskOptions) error {
Expand Down
10 changes: 8 additions & 2 deletions pkg/provider/azure_controller_standard.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,14 @@ func (as *availabilitySet) DeleteCacheForNode(nodeName string) error {
}

// WaitForUpdateResult waits for the response of the update request
func (as *availabilitySet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, resourceGroupName, source string) error {
if rerr := as.VirtualMachinesClient.WaitForUpdateResult(ctx, future, resourceGroupName, source); rerr != nil {
func (as *availabilitySet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, source string) error {
vmName := mapNodeNameToVMName(nodeName)
nodeResourceGroup, err := as.GetNodeResourceGroup(vmName)
if err != nil {
return err
}

if rerr := as.VirtualMachinesClient.WaitForUpdateResult(ctx, future, nodeResourceGroup, source); rerr != nil {
return rerr.Error()
}
return nil
Expand Down
13 changes: 9 additions & 4 deletions pkg/provider/azure_controller_vmss.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,22 +132,27 @@ func (ss *ScaleSet) AttachDisk(ctx context.Context, nodeName types.NodeName, dis
}

// WaitForUpdateResult waits for the response of the update request
func (ss *ScaleSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, resourceGroupName, source string) error {
func (ss *ScaleSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, source string) error {
vmName := mapNodeNameToVMName(nodeName)
nodeResourceGroup, err := ss.GetNodeResourceGroup(vmName)
if err != nil {
return err
}

var result *compute.VirtualMachineScaleSetVM
var rerr *retry.Error
defer func() {
if rerr == nil && result != nil && result.VirtualMachineScaleSetVMProperties != nil {
// If we have an updated result, we update the vmss vm cache
vmName := mapNodeNameToVMName(nodeName)
vm, err := ss.getVmssVM(vmName, azcache.CacheReadTypeDefault)
if err != nil {
return
}
_ = ss.updateCache(vmName, resourceGroupName, vm.VMSSName, vm.InstanceID, result)
_ = ss.updateCache(vmName, nodeResourceGroup, vm.VMSSName, vm.InstanceID, result)
}
}()

result, rerr = ss.VirtualMachineScaleSetVMsClient.WaitForUpdateResult(ctx, future, resourceGroupName, source)
result, rerr = ss.VirtualMachineScaleSetVMsClient.WaitForUpdateResult(ctx, future, nodeResourceGroup, source)
if rerr != nil {
return rerr.Error()
}
Expand Down
9 changes: 7 additions & 2 deletions pkg/provider/azure_controller_vmssflex.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,13 @@ func (fs *FlexScaleSet) DetachDisk(ctx context.Context, nodeName types.NodeName,
}

// WaitForUpdateResult waits for the response of the update request
func (fs *FlexScaleSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, resourceGroupName, source string) error {
if rerr := fs.VirtualMachinesClient.WaitForUpdateResult(ctx, future, resourceGroupName, source); rerr != nil {
func (fs *FlexScaleSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, source string) error {
vmName := mapNodeNameToVMName(nodeName)
nodeResourceGroup, err := fs.GetNodeResourceGroup(vmName)
if err != nil {
return err
}
if rerr := fs.VirtualMachinesClient.WaitForUpdateResult(ctx, future, nodeResourceGroup, source); rerr != nil {
return rerr.Error()
}
return nil
Expand Down
8 changes: 4 additions & 4 deletions pkg/provider/azure_mock_vmsets.go
Original file line number Diff line number Diff line change
Expand Up @@ -414,15 +414,15 @@ func (mr *MockVMSetMockRecorder) UpdateVM(ctx, nodeName interface{}) *gomock.Cal
}

// WaitForUpdateResult mocks base method.
func (m *MockVMSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, resourceGroupName, source string) error {
func (m *MockVMSet) WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, source string) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "WaitForUpdateResult", ctx, future, resourceGroupName, source)
ret := m.ctrl.Call(m, "WaitForUpdateResult", ctx, future, source)
ret0, _ := ret[0].(error)
return ret0
}

// WaitForUpdateResult indicates an expected call of WaitForUpdateResult.
func (mr *MockVMSetMockRecorder) WaitForUpdateResult(ctx, future, nodeName, resourceGroupName, source interface{}) *gomock.Call {
func (mr *MockVMSetMockRecorder) WaitForUpdateResult(ctx, future, nodeName, source interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForUpdateResult", reflect.TypeOf((*MockVMSet)(nil).WaitForUpdateResult), ctx, future, resourceGroupName, source)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForUpdateResult", reflect.TypeOf((*MockVMSet)(nil).WaitForUpdateResult), ctx, future, source)
}
2 changes: 1 addition & 1 deletion pkg/provider/azure_vmsets.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ type VMSet interface {
// DetachDisk detaches a disk from vm
DetachDisk(ctx context.Context, nodeName types.NodeName, diskMap map[string]string) error
// WaitForUpdateResult waits for the response of the update request
WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, resourceGroupName, source string) error
WaitForUpdateResult(ctx context.Context, future *azure.Future, nodeName types.NodeName, source string) error

// GetDataDisks gets a list of data disks attached to the node.
GetDataDisks(nodeName types.NodeName, crt azcache.AzureCacheReadType) ([]compute.DataDisk, *string, error)
Expand Down

0 comments on commit 2fcc699

Please sign in to comment.