MCPcopy
hub / github.com/kubernetes/kops / TerminateInstances

Method TerminateInstances

pkg/instancegroups/rollingupdate_test.go:1113–1147  ·  view source on GitHub ↗
(ctx context.Context, input *ec2.TerminateInstancesInput, optFns ...func(*ec2.Options))

Source from the content-addressed store, hash-verified

1111}
1112
1113func (c *concurrentTest) TerminateInstances(ctx context.Context, input *ec2.TerminateInstancesInput, optFns ...func(*ec2.Options)) (*ec2.TerminateInstancesOutput, error) {
1114 if input.DryRun != nil && *input.DryRun {
1115 return &ec2.TerminateInstancesOutput{}, nil
1116 }
1117
1118 c.mutex.Lock()
1119 defer c.mutex.Unlock()
1120
1121 for _, id := range input.InstanceIds {
1122 assert.Equal(c.t, c.surge, len(c.detached), "Number of detached instances")
1123 if c.detached[id] {
1124 assert.LessOrEqual(c.t, c.terminationRequestsLeft, c.surge, "Deleting detached instances last")
1125 }
1126
1127 terminationRequestsLeft := c.terminationRequestsLeft
1128 c.terminationRequestsLeft--
1129 switch terminationRequestsLeft {
1130 case 7, 2, 1:
1131 assert.Equal(c.t, terminationRequestsLeft, c.previousValidation, "previous validation")
1132 case 6, 4:
1133 assert.Equal(c.t, terminationRequestsLeft, c.previousValidation, "previous validation")
1134 c.mutex.Unlock()
1135 select {
1136 case <-c.terminationChan:
1137 case <-time.After(1 * time.Second):
1138 c.t.Error("timed out reading from terminationChan")
1139 }
1140 c.mutex.Lock()
1141 go c.delayThenWakeValidation()
1142 case 5, 3:
1143 assert.Equal(c.t, terminationRequestsLeft+1, c.previousValidation, "previous validation")
1144 }
1145 }
1146 return c.EC2API.TerminateInstances(ctx, input)
1147}
1148
1149const postTerminationValidationDelay = 100 * time.Millisecond // NodeInterval plus some
1150

Callers

nothing calls this directly

Calls 6

LockMethod · 0.65
UnlockMethod · 0.65
TerminateInstancesMethod · 0.65
EqualMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected