Validate after updating bastion

This commit is contained in:
John Gardiner Myers 2019-12-09 16:23:56 -08:00
parent 2e36124f77
commit 1239c05e71
2 changed files with 36 additions and 6 deletions

View File

@ -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() {

View File

@ -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)},