diff --git a/pkg/instancegroups/instancegroups.go b/pkg/instancegroups/instancegroups.go index 457216a397..3b02488d53 100644 --- a/pkg/instancegroups/instancegroups.go +++ b/pkg/instancegroups/instancegroups.go @@ -189,11 +189,7 @@ func (r *RollingUpdateInstanceGroup) RollingUpdate(rollingUpdateData *RollingUpd klog.Infof("waiting for %v after terminating instance", sleepAfterTerminate) time.Sleep(sleepAfterTerminate) - if isBastion { - klog.Infof("Deleted a bastion instance, %s, and continuing with rolling-update.", instanceId) - - continue - } else if rollingUpdateData.CloudOnly { + if rollingUpdateData.CloudOnly { klog.Warningf("Not validating cluster as cloudonly flag is set.") } else if featureflag.DrainAndValidateRollingUpdate.Enabled() { diff --git a/pkg/instancegroups/rollingupdate_test.go b/pkg/instancegroups/rollingupdate_test.go index b08de86d3e..1518cd515a 100644 --- a/pkg/instancegroups/rollingupdate_test.go +++ b/pkg/instancegroups/rollingupdate_test.go @@ -25,7 +25,6 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/autoscaling" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" v1meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" @@ -500,6 +499,41 @@ func TestRollingUpdateClusterErrorsValidationAfterOneNode(t *testing.T) { assertGroupInstanceCount(t, cloud, "node-1", 1) } +type failThreeTimesClusterValidator struct { + invocationCount int +} + +func (v *failThreeTimesClusterValidator) Validate() (*validation.ValidationCluster, error) { + v.invocationCount++ + if v.invocationCount <= 3 { + return &validation.ValidationCluster{ + Failures: []*validation.ValidationError{ + { + Kind: "testing", + Name: "testingfailure", + Message: "testing failure", + }, + }, + }, nil + } + return &validation.ValidationCluster{}, nil +} + +func TestRollingUpdateValidatesAfterBastion(t *testing.T) { + c, cloud, cluster := getTestSetup() + + c.ValidationTimeout = 10 * time.Millisecond + c.ClusterValidator = &failThreeTimesClusterValidator{} + + err := c.RollingUpdate(getGroupsAllNeedUpdate(), cluster, &kopsapi.InstanceGroupList{}) + assert.NoError(t, err, "rolling update") + + assertGroupInstanceCount(t, cloud, "node-1", 0) + assertGroupInstanceCount(t, cloud, "node-2", 0) + assertGroupInstanceCount(t, cloud, "master-1", 0) + assertGroupInstanceCount(t, cloud, "bastion-1", 0) +} + func assertGroupInstanceCount(t *testing.T, cloud awsup.AWSCloud, groupName string, expected int) { asgGroups, _ := cloud.Autoscaling().DescribeAutoScalingGroups(&autoscaling.DescribeAutoScalingGroupsInput{ AutoScalingGroupNames: []*string{aws.String(groupName)},