GCE load balancer: skip instance group deletion

while using multiple IGs with rbs alpha feature gate enabled
This commit is contained in:
Cezary Zawdka 2022-01-05 13:59:52 +01:00 committed by Cezary Zawadka
parent 187ad4695e
commit f2e29bf4f0
2 changed files with 28 additions and 2 deletions

View File

@ -654,8 +654,10 @@ func (g *Cloud) ensureInternalInstanceGroupsDeleted(name string) error {
klog.V(2).Infof("ensureInternalInstanceGroupsDeleted(%v): attempting delete instance group in all %d zones", name, len(zones))
for _, z := range zones {
if err := g.DeleteInstanceGroup(name, z.Name); err != nil && !isNotFoundOrInUse(err) {
return err
if !g.AlphaFeatureGate.Enabled(AlphaFeatureNetLBRbs) {
if err := g.DeleteInstanceGroup(name, z.Name); err != nil && !isNotFoundOrInUse(err) {
return err
}
}
}
return nil

View File

@ -553,6 +553,30 @@ func TestEnsureInternalLoadBalancerDeleted(t *testing.T) {
assertInternalLbResourcesDeleted(t, gce, svc, vals, true)
}
func TestSkipInstanceGroupDeletion(t *testing.T) {
t.Parallel()
vals := DefaultTestClusterValues()
gce, err := fakeGCECloud(vals)
require.NoError(t, err)
svc := fakeLoadbalancerService(string(LBTypeInternal))
svc, err = gce.client.CoreV1().Services(svc.Namespace).Create(context.TODO(), svc, metav1.CreateOptions{})
require.NoError(t, err)
_, err = createInternalLoadBalancer(gce, svc, nil, []string{"test-node-1"}, vals.ClusterName, vals.ClusterID, vals.ZoneName)
assert.NoError(t, err)
gce.AlphaFeatureGate = NewAlphaFeatureGate([]string{AlphaFeatureNetLBRbs})
err = gce.ensureInternalLoadBalancerDeleted(vals.ClusterName, vals.ClusterID, svc)
assert.NoError(t, err)
igName := makeInstanceGroupName(vals.ClusterID)
ig, err := gce.GetInstanceGroup(igName, vals.ZoneName)
assert.NoError(t, err)
assert.NotNil(t, ig, "Instance group should not be deleted when flag 'NetLB_RBS' is present")
}
func TestEnsureInternalLoadBalancerDeletedTwiceDoesNotError(t *testing.T) {
t.Parallel()