Skip to content

Commit 3023678

Browse files
committed
properly handle fake nodes for deletion
1 parent 1ad3acc commit 3023678

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

cluster-autoscaler/cloudprovider/packet/packet_manager_rest.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -625,26 +625,38 @@ func (mgr *packetManagerRest) deleteDevice(ctx context.Context, nodegroup, id st
625625
func (mgr *packetManagerRest) deleteNodes(nodegroup string, nodes []NodeRef, updatedNodeCount int) error {
626626
klog.Infof("Deleting nodes %v", nodes)
627627

628+
ctx := context.TODO()
629+
628630
errList := make([]error, 0, len(nodes))
629631

632+
devices, err := mgr.listPacketDevices(ctx)
633+
if err != nil {
634+
return fmt.Errorf("failed to list devices: %w", err)
635+
}
636+
klog.Infof("%d devices total", len(devices.Devices))
637+
630638
for _, n := range nodes {
631-
klog.Infof("Node %s - %s - %s", n.Name, n.MachineID, n.IPs)
639+
fakeNode := false
632640

633-
dl, err := mgr.listPacketDevices(context.TODO())
634-
if err != nil {
635-
return fmt.Errorf("failed to list devices: %w", err)
641+
if n.Name == n.ProviderID {
642+
klog.Infof("Fake Node: %s", n.Name)
643+
fakeNode = true
644+
} else {
645+
klog.Infof("Node %s - %s - %s", n.Name, n.MachineID, n.IPs)
636646
}
637647

638-
klog.Infof("%d devices total", len(dl.Devices))
639648
// Get the count of devices tagged as nodegroup
640-
for _, d := range dl.Devices {
649+
for _, d := range devices.Devices {
641650
klog.Infof("Checking device %v", d)
642651
if Contains(d.Tags, "k8s-cluster-"+mgr.getNodePoolDefinition(nodegroup).clusterName) && Contains(d.Tags, "k8s-nodepool-"+nodegroup) {
643652
klog.Infof("nodegroup match %s %s", d.Hostname, n.Name)
644-
if d.Hostname == n.Name {
653+
switch {
654+
case d.Hostname == n.Name:
645655
klog.V(1).Infof("Matching Packet Device %s - %s", d.Hostname, d.ID)
646-
647-
errList = append(errList, mgr.deleteDevice(context.TODO(), nodegroup, d.ID))
656+
errList = append(errList, mgr.deleteDevice(ctx, nodegroup, d.ID))
657+
case fakeNode && strings.TrimPrefix(n.Name, "packet://") == d.ID:
658+
klog.V(1).Infof("Fake Node %s", d.ID)
659+
errList = append(errList, mgr.deleteDevice(ctx, nodegroup, d.ID))
648660
}
649661
}
650662
}

cluster-autoscaler/cloudprovider/packet/packet_node_group_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@ import (
2929
"github.com/stretchr/testify/mock"
3030
)
3131

32-
const getPacketDeviceResponsePool2 = `
33-
{"id":"0f5609af-1c27-451b-8edd-a1283f2c9440","short_id":"0f5609af","hostname":"k8s-cluster2-pool2-jssxcyzz","description":null,"state":"active","tags":["k8s-cluster-cluster2","k8s-nodepool-pool2"]}
34-
`
35-
const getPacketDeviceResponsePool3 = `
36-
{"id":"8fa90049-e715-4794-ba31-81c1c78cee84","short_id":"8fa90049","hostname":"k8s-cluster2-pool3-xpnrwgdf","description":null,"state":"active","tags":["k8s-cluster-cluster2","k8s-nodepool-pool3"]}
37-
`
32+
const createPacketDeviceResponsePool2 = ``
33+
const deletePacketDeviceResponsePool2 = ``
34+
35+
const createPacketDeviceResponsePool3 = ``
36+
const deletePacketDeviceResponsePool3 = ``
3837

3938
func TestIncreaseDecreaseSize(t *testing.T) {
4039
var m *packetManagerRest
@@ -47,14 +46,15 @@ func TestIncreaseDecreaseSize(t *testing.T) {
4746
} else {
4847
// Set up a mock Packet API
4948
m = newTestPacketManagerRest(t, server.URL)
50-
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponse).Times(4)
49+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponse).Times(3)
50+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(createPacketDeviceResponsePool3).Times(1)
51+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool3).Times(2)
52+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(createPacketDeviceResponsePool2).Times(1)
53+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool2).Times(3)
54+
server.On("handle", "/devices/0f5609af-1c27-451b-8edd-a1283f2c9440").Return(deletePacketDeviceResponsePool2).Times(1)
5155
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool3).Times(3)
52-
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool2).Times(1)
53-
server.On("handle", "/devices/0f5609af-1c27-451b-8edd-a1283f2c9440").Return(getPacketDeviceResponsePool2).Times(1)
54-
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool2).Times(4)
55-
server.On("handle", "/devices/8fa90049-e715-4794-ba31-81c1c78cee84").Return(getPacketDeviceResponsePool3).Times(1)
56-
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponseAfterIncreasePool2).Times(2)
57-
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponse).Times(2)
56+
server.On("handle", "/devices/8fa90049-e715-4794-ba31-81c1c78cee84").Return(deletePacketDeviceResponsePool3).Times(1)
57+
server.On("handle", "/projects/"+m.packetManagerNodePools["default"].projectID+"/devices").Return(listPacketDevicesResponse).Times(3)
5858
}
5959
clusterUpdateLock := sync.Mutex{}
6060
ngPool2 := &packetNodeGroup{

0 commit comments

Comments
 (0)