mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #81208 from andyzhangx/vm-update
fix: switch to VM Update call in attach/detach disk operation
This commit is contained in:
commit
a4c5a57800
@ -49,6 +49,7 @@ func createRateLimitErr(isWrite bool, opName string) error {
|
|||||||
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
|
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
|
||||||
type VirtualMachinesClient interface {
|
type VirtualMachinesClient interface {
|
||||||
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) (resp *http.Response, err error)
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) (resp *http.Response, err error)
|
||||||
|
Update(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachineUpdate, source string) (resp *http.Response, err error)
|
||||||
Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error)
|
Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error)
|
||||||
List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachine, err error)
|
List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachine, err error)
|
||||||
}
|
}
|
||||||
@ -207,6 +208,29 @@ func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceG
|
|||||||
return future.Response(), err
|
return future.Response(), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (az *azVirtualMachinesClient) Update(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachineUpdate, source string) (resp *http.Response, err error) {
|
||||||
|
// /* Write rate limiting */
|
||||||
|
if !az.rateLimiterWriter.TryAccept() {
|
||||||
|
err = createRateLimitErr(true, "VMUpdate")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
klog.V(10).Infof("azVirtualMachinesClient.Update(%q, %q): start", resourceGroupName, VMName)
|
||||||
|
defer func() {
|
||||||
|
klog.V(10).Infof("azVirtualMachinesClient.Update(%q, %q): end", resourceGroupName, VMName)
|
||||||
|
}()
|
||||||
|
|
||||||
|
mc := newMetricContext("vm", "update", resourceGroupName, az.client.SubscriptionID, source)
|
||||||
|
future, err := az.client.Update(ctx, resourceGroupName, VMName, parameters)
|
||||||
|
if err != nil {
|
||||||
|
return future.Response(), err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = future.WaitForCompletionRef(ctx, az.client.Client)
|
||||||
|
mc.Observe(err)
|
||||||
|
return future.Response(), err
|
||||||
|
}
|
||||||
|
|
||||||
func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) {
|
func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error) {
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
if !az.rateLimiterReader.TryAccept() {
|
||||||
err = createRateLimitErr(false, "VMGet")
|
err = createRateLimitErr(false, "VMGet")
|
||||||
|
@ -67,8 +67,7 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
newVM := compute.VirtualMachine{
|
newVM := compute.VirtualMachineUpdate{
|
||||||
Location: vm.Location,
|
|
||||||
VirtualMachineProperties: &compute.VirtualMachineProperties{
|
VirtualMachineProperties: &compute.VirtualMachineProperties{
|
||||||
HardwareProfile: vm.HardwareProfile,
|
HardwareProfile: vm.HardwareProfile,
|
||||||
StorageProfile: &compute.StorageProfile{
|
StorageProfile: &compute.StorageProfile{
|
||||||
@ -83,7 +82,7 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri
|
|||||||
// Invalidate the cache right after updating
|
// Invalidate the cache right after updating
|
||||||
defer as.cloud.vmCache.Delete(vmName)
|
defer as.cloud.vmCache.Delete(vmName)
|
||||||
|
|
||||||
_, err = as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM, "attach_disk")
|
_, err = as.VirtualMachinesClient.Update(ctx, nodeResourceGroup, vmName, newVM, "attach_disk")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("azureDisk - attach disk(%s, %s) failed, err: %v", diskName, diskURI, err)
|
klog.Errorf("azureDisk - attach disk(%s, %s) failed, err: %v", diskName, diskURI, err)
|
||||||
detail := err.Error()
|
detail := err.Error()
|
||||||
@ -135,8 +134,7 @@ func (as *availabilitySet) DetachDisk(diskName, diskURI string, nodeName types.N
|
|||||||
klog.Errorf("detach azure disk: disk %s not found, diskURI: %s", diskName, diskURI)
|
klog.Errorf("detach azure disk: disk %s not found, diskURI: %s", diskName, diskURI)
|
||||||
}
|
}
|
||||||
|
|
||||||
newVM := compute.VirtualMachine{
|
newVM := compute.VirtualMachineUpdate{
|
||||||
Location: vm.Location,
|
|
||||||
VirtualMachineProperties: &compute.VirtualMachineProperties{
|
VirtualMachineProperties: &compute.VirtualMachineProperties{
|
||||||
HardwareProfile: vm.HardwareProfile,
|
HardwareProfile: vm.HardwareProfile,
|
||||||
StorageProfile: &compute.StorageProfile{
|
StorageProfile: &compute.StorageProfile{
|
||||||
@ -151,7 +149,7 @@ func (as *availabilitySet) DetachDisk(diskName, diskURI string, nodeName types.N
|
|||||||
// Invalidate the cache right after updating
|
// Invalidate the cache right after updating
|
||||||
defer as.cloud.vmCache.Delete(vmName)
|
defer as.cloud.vmCache.Delete(vmName)
|
||||||
|
|
||||||
return as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM, "detach_disk")
|
return as.VirtualMachinesClient.Update(ctx, nodeResourceGroup, vmName, newVM, "detach_disk")
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDataDisks gets a list of data disks attached to the node.
|
// GetDataDisks gets a list of data disks attached to the node.
|
||||||
|
@ -315,6 +315,17 @@ func (fVMC *fakeAzureVirtualMachinesClient) CreateOrUpdate(ctx context.Context,
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (fVMC *fakeAzureVirtualMachinesClient) Update(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachineUpdate, source string) (resp *http.Response, err error) {
|
||||||
|
fVMC.mutex.Lock()
|
||||||
|
defer fVMC.mutex.Unlock()
|
||||||
|
|
||||||
|
if _, ok := fVMC.FakeStore[resourceGroupName]; !ok {
|
||||||
|
fVMC.FakeStore[resourceGroupName] = make(map[string]compute.VirtualMachine)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (fVMC *fakeAzureVirtualMachinesClient) Get(ctx context.Context, 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()
|
fVMC.mutex.Lock()
|
||||||
defer fVMC.mutex.Unlock()
|
defer fVMC.mutex.Unlock()
|
||||||
|
Loading…
Reference in New Issue
Block a user