Skip to content

Commit 84318d9

Browse files
authored
Merge pull request kubernetes#84958 from kkmsft/disk_fixes
Azure : filter disks with ToBeDetached flag
2 parents 5dd641e + a10f80f commit 84318d9

File tree

5 files changed

+55
-8
lines changed

5 files changed

+55
-8
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ go_test(
122122
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
123123
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
124124
"//vendor/github.com/stretchr/testify/assert:go_default_library",
125+
"//vendor/k8s.io/utils/pointer:go_default_library",
125126
"//vendor/sigs.k8s.io/yaml:go_default_library",
126127
],
127128
)

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_common.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,17 @@ func (c *controllerCommon) DisksAreAttached(diskNames []string, nodeName types.N
300300

301301
return attached, nil
302302
}
303+
304+
func filterDetachingDisks(unfilteredDisks []compute.DataDisk) []compute.DataDisk {
305+
filteredDisks := []compute.DataDisk{}
306+
for _, disk := range unfilteredDisks {
307+
if disk.ToBeDetached != nil && *disk.ToBeDetached {
308+
if disk.Name != nil {
309+
klog.V(2).Infof("Filtering disk: %s with ToBeDetached flag set.", *disk.Name)
310+
}
311+
} else {
312+
filteredDisks = append(filteredDisks, disk)
313+
}
314+
}
315+
return filteredDisks
316+
}

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_common_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/stretchr/testify/assert"
2727

2828
"k8s.io/apimachinery/pkg/types"
29+
"k8s.io/utils/pointer"
2930
)
3031

3132
func TestCommonAttachDisk(t *testing.T) {
@@ -248,3 +249,38 @@ func TestDisksAreAttached(t *testing.T) {
248249
assert.Equal(t, test.expectedErr, err != nil, "TestCase[%d]: %s", i, test.desc)
249250
}
250251
}
252+
253+
func TestFilteredDetatchingDisks(t *testing.T) {
254+
255+
disks := []compute.DataDisk{
256+
{
257+
Name: pointer.StringPtr("DiskName1"),
258+
ToBeDetached: pointer.BoolPtr(false),
259+
ManagedDisk: &compute.ManagedDiskParameters{
260+
ID: pointer.StringPtr("ManagedID"),
261+
},
262+
},
263+
{
264+
Name: pointer.StringPtr("DiskName2"),
265+
ToBeDetached: pointer.BoolPtr(true),
266+
},
267+
{
268+
Name: pointer.StringPtr("DiskName3"),
269+
ToBeDetached: nil,
270+
},
271+
{
272+
Name: pointer.StringPtr("DiskName4"),
273+
ToBeDetached: nil,
274+
},
275+
}
276+
277+
filteredDisks := filterDetachingDisks(disks)
278+
assert.Equal(t, 3, len(filteredDisks))
279+
assert.Equal(t, "DiskName1", *filteredDisks[0].Name)
280+
assert.Equal(t, "ManagedID", *filteredDisks[0].ManagedDisk.ID)
281+
assert.Equal(t, "DiskName3", *filteredDisks[1].Name)
282+
283+
disks = []compute.DataDisk{}
284+
filteredDisks = filterDetachingDisks(disks)
285+
assert.Equal(t, 0, len(filteredDisks))
286+
}

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_standard.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri
4242
return err
4343
}
4444

45-
disks := make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks))
46-
copy(disks, *vm.StorageProfile.DataDisks)
45+
disks := filterDetachingDisks(*vm.StorageProfile.DataDisks)
4746

4847
if isManagedDisk {
4948
managedDisk := &compute.ManagedDiskParameters{ID: &diskURI}
@@ -117,8 +116,7 @@ func (as *availabilitySet) DetachDisk(diskName, diskURI string, nodeName types.N
117116
return nil, err
118117
}
119118

120-
disks := make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks))
121-
copy(disks, *vm.StorageProfile.DataDisks)
119+
disks := filterDetachingDisks(*vm.StorageProfile.DataDisks)
122120

123121
bFoundDisk := false
124122
for i, disk := range disks {

staging/src/k8s.io/legacy-cloud-providers/azure/azure_controller_vmss.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ func (ss *scaleSet) AttachDisk(isManagedDisk bool, diskName, diskURI string, nod
4444

4545
disks := []compute.DataDisk{}
4646
if vm.StorageProfile != nil && vm.StorageProfile.DataDisks != nil {
47-
disks = make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks))
48-
copy(disks, *vm.StorageProfile.DataDisks)
47+
disks = filterDetachingDisks(*vm.StorageProfile.DataDisks)
4948
}
5049
if isManagedDisk {
5150
managedDisk := &compute.ManagedDiskParameters{ID: &diskURI}
@@ -121,8 +120,7 @@ func (ss *scaleSet) DetachDisk(diskName, diskURI string, nodeName types.NodeName
121120

122121
disks := []compute.DataDisk{}
123122
if vm.StorageProfile != nil && vm.StorageProfile.DataDisks != nil {
124-
disks = make([]compute.DataDisk, len(*vm.StorageProfile.DataDisks))
125-
copy(disks, *vm.StorageProfile.DataDisks)
123+
disks = filterDetachingDisks(*vm.StorageProfile.DataDisks)
126124
}
127125
bFoundDisk := false
128126
for i, disk := range disks {

0 commit comments

Comments
 (0)