Skip to content

Commit

Permalink
Update destroy commands to use new cfn wait
Browse files Browse the repository at this point in the history
  • Loading branch information
ipmb committed Jan 24, 2021
1 parent 4d9cc39 commit 753cac8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 16 deletions.
1 change: 1 addition & 0 deletions cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -1115,6 +1115,7 @@ func waitForCloudformationStack(cfnSvc *cloudformation.CloudFormation, stackName
stack := stackDesc.Stacks[0]

if strings.HasSuffix(*stack.StackStatus, "_COMPLETE") || strings.HasSuffix(*stack.StackStatus, "_FAILED") {
Spinner.Stop()
return stack, nil
}
stackresources, err := cfnSvc.DescribeStackResources(&cloudformation.DescribeStackResourcesInput{
Expand Down
34 changes: 18 additions & 16 deletions cmd/destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,16 @@ var destroyAccountCmd = &cobra.Command{
StackName: &account.StackID,
})
checkErr(err)
err = cfnSvc.WaitUntilStackDeleteComplete(&cloudformation.DescribeStacksInput{
StackName: &account.StackID,
})
stack, err := waitForCloudformationStack(cfnSvc, account.StackID)
_, err1 := ssmSvc.DeleteParameter(&ssm.DeleteParameterInput{
Name: aws.String("/apppack/account/dockerhub-access-token"),
})
Spinner.Stop()
checkErr(err)
checkErr(err1)
if *stack.StackStatus != "DELETE_COMPLETE" {
checkErr(fmt.Errorf("Redis deletion failed. current state: %s", *stack.StackStatus))
}
printSuccess("AppPack account deleted")
},
}
Expand Down Expand Up @@ -135,15 +136,16 @@ var destroyRedisCmd = &cobra.Command{
StackName: stack.StackId,
})
checkErr(err)
err = cfnSvc.WaitUntilStackDeleteComplete(&cloudformation.DescribeStacksInput{
StackName: stack.StackId,
})
stack, err = waitForCloudformationStack(cfnSvc, stackName)
_, err1 := ssmSvc.DeleteParameter(&ssm.DeleteParameterInput{
Name: aws.String(fmt.Sprintf(redisAuthTokenParameterTmpl, args[0])),
})
Spinner.Stop()
checkErr(err)
checkErr(err1)
if *stack.StackStatus != "DELETE_COMPLETE" {
checkErr(fmt.Errorf("Redis deletion failed. current state: %s", *stack.StackStatus))
}
printSuccess("AppPack Redis instance deleted")
},
}
Expand Down Expand Up @@ -178,10 +180,11 @@ var destroyDatabaseCmd = &cobra.Command{
StackName: stack.StackId,
})
checkErr(err)
err = cfnSvc.WaitUntilStackDeleteComplete(&cloudformation.DescribeStacksInput{
StackName: stack.StackId,
})
stack, err = waitForCloudformationStack(cfnSvc, stackName)
checkErr(err)
if *stack.StackStatus != "DELETE_COMPLETE" {
checkErr(fmt.Errorf("database deletion failed. current state: %s", *stack.StackStatus))
}
Spinner.Stop()
printSuccess("AppPack Database deleted")
},
Expand Down Expand Up @@ -217,24 +220,23 @@ var destroyClusterCmd = &cobra.Command{
StackName: &stackID,
})
checkErr(err)
err = cfnSvc.WaitUntilStackDeleteComplete(&cloudformation.DescribeStacksInput{
StackName: &stackID,
})
stack, err := waitForCloudformationStack(cfnSvc, stackID)
// Weird circular dependency causes this https://github.com/aws/containers-roadmap/issues/631
// Cluster depends on ASG for creation, but ASG must be deleted before the Cluster
// retrying works around this for now
if err != nil {
if *stack.StackStatus != "DELETE_COMPLETE" {
Spinner.Stop()
printWarning("cluster deletion did not complete successfully, retrying...")
startSpinner()
_, err = cfnSvc.DeleteStack(&cloudformation.DeleteStackInput{
StackName: &stackID,
})
checkErr(err)
err = cfnSvc.WaitUntilStackDeleteComplete(&cloudformation.DescribeStacksInput{
StackName: &stackID,
})
stack, err := waitForCloudformationStack(cfnSvc, stackID)
checkErr(err)
if *stack.StackStatus != "DELETE_COMPLETE" {
checkErr(fmt.Errorf("cluster deletion failed. current state: %s", *stack.StackStatus))
}
}
Spinner.Stop()
printSuccess(fmt.Sprintf("AppPack cluster %s destroyed", clusterName))
Expand Down

0 comments on commit 753cac8

Please sign in to comment.