Skip to content

Commit

Permalink
fix(aws provider): cancel unfulfilled spot instance at rollback
Browse files Browse the repository at this point in the history
  • Loading branch information
JacieChao authored and Jason-ZW committed Mar 17, 2021
1 parent ad53f77 commit 6e1e7ce
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions pkg/providers/aws/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ type Amazon struct {
*cluster.ProviderBase `json:",inline"`
typesaws.Options `json:",inline"`
client *ec2.EC2

spotInstanceRequestIDs []string
}

func init() {
Expand All @@ -75,6 +77,7 @@ func newProvider() *Amazon {
RequestSpotInstance: requestSpotInstance,
CloudControllerManager: false,
},
spotInstanceRequestIDs: []string{},
}
}

Expand Down Expand Up @@ -249,6 +252,13 @@ func (p *Amazon) Rollback() error {
return err
}
p.Logger.Infof("[%s] successfully executed rollback logic", p.GetProviderName())

// cancel unfulfilled spot instance request
if len(p.spotInstanceRequestIDs) > 0 {
if err = p.cancelSpotInstance(); err != nil {
return err
}
}
return nil
}

Expand Down Expand Up @@ -378,6 +388,7 @@ func (p *Amazon) runInstances(num int, master bool, ssh *types.SSH) error {
}
for _, spotRequest := range spotInstanceRequest.SpotInstanceRequests {
requestID := spotRequest.SpotInstanceRequestId
p.spotInstanceRequestIDs = append(p.spotInstanceRequestIDs, aws.StringValue(requestID))
p.Logger.Infof("[%s] waiting for spot instance full filled", p.GetProviderName())
err = p.client.WaitUntilSpotInstanceRequestFulfilled(&ec2.DescribeSpotInstanceRequestsInput{
SpotInstanceRequestIds: []*string{requestID},
Expand Down Expand Up @@ -1224,3 +1235,13 @@ func (p *Amazon) terminateInstance(ids []string) error {
}
return nil
}

func (p *Amazon) cancelSpotInstance() error {
if p.client == nil {
p.newClient()
}
_, err := p.client.CancelSpotInstanceRequests(&ec2.CancelSpotInstanceRequestsInput{
SpotInstanceRequestIds: aws.StringSlice(p.spotInstanceRequestIDs),
})
return err
}

0 comments on commit 6e1e7ce

Please sign in to comment.