From c01eca58025bbab151cca1ef6c90b6a58a78265c Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Sun, 28 Apr 2019 11:56:59 +0000 Subject: [PATCH] fix disk list corruption issue --- .../providers/azure/azure_controller_standard.go | 8 ++++++-- .../providers/azure/azure_controller_vmss.go | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/cloudprovider/providers/azure/azure_controller_standard.go b/pkg/cloudprovider/providers/azure/azure_controller_standard.go index b380996f4e..8ccc9616c9 100644 --- a/pkg/cloudprovider/providers/azure/azure_controller_standard.go +++ b/pkg/cloudprovider/providers/azure/azure_controller_standard.go @@ -40,7 +40,9 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri return err } - disks := *vm.StorageProfile.DataDisks + disks := make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks)) + copy(disks, *vm.StorageProfile.DataDisks) + if isManagedDisk { disks = append(disks, compute.DataDisk{ @@ -112,7 +114,9 @@ func (as *availabilitySet) DetachDiskByName(diskName, diskURI string, nodeName t return err } - disks := *vm.StorageProfile.DataDisks + disks := make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks)) + copy(disks, *vm.StorageProfile.DataDisks) + bFoundDisk := false for i, disk := range disks { if disk.Lun != nil && (disk.Name != nil && diskName != "" && *disk.Name == diskName) || diff --git a/pkg/cloudprovider/providers/azure/azure_controller_vmss.go b/pkg/cloudprovider/providers/azure/azure_controller_vmss.go index 442dd8fedc..25757db3cd 100644 --- a/pkg/cloudprovider/providers/azure/azure_controller_vmss.go +++ b/pkg/cloudprovider/providers/azure/azure_controller_vmss.go @@ -42,7 +42,8 @@ func (ss *scaleSet) AttachDisk(isManagedDisk bool, diskName, diskURI string, nod disks := []compute.DataDisk{} if vm.StorageProfile != nil && vm.StorageProfile.DataDisks != nil { - disks = *vm.StorageProfile.DataDisks + disks = make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks)) + copy(disks, *vm.StorageProfile.DataDisks) } if isManagedDisk { disks = append(disks, @@ -117,7 +118,8 @@ func (ss *scaleSet) DetachDiskByName(diskName, diskURI string, nodeName types.No disks := []compute.DataDisk{} if vm.StorageProfile != nil && vm.StorageProfile.DataDisks != nil { - disks = *vm.StorageProfile.DataDisks + disks = make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks)) + copy(disks, *vm.StorageProfile.DataDisks) } bFoundDisk := false for i, disk := range disks {