Skip to content

Commit

Permalink
refactor: describe stacks for client (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
go-to-k authored Mar 9, 2023
1 parent a099d3d commit 52417e1
Show file tree
Hide file tree
Showing 5 changed files with 436 additions and 388 deletions.
16 changes: 8 additions & 8 deletions internal/operation/cloudformation_stack.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,36 +102,36 @@ func (o *CloudFormationStackOperator) DeleteCloudFormationStack(ctx context.Cont
}

func (o *CloudFormationStackOperator) deleteStackNormally(ctx context.Context, stackName *string, isRootStack bool) (bool, error) {
stackOutputBeforeDelete, stackExistsBeforeDelete, err := o.client.DescribeStacks(ctx, stackName)
stacksBeforeDelete, err := o.client.DescribeStacks(ctx, stackName)
if err != nil {
return false, err
}
if !stackExistsBeforeDelete && isRootStack {
if len(stacksBeforeDelete) == 0 && isRootStack {
errMsg := fmt.Sprintf("%s stack not found.", *stackName)
return false, fmt.Errorf("NotExistsError: %v", errMsg)
}
if !stackExistsBeforeDelete {
if len(stacksBeforeDelete) == 0 {
return true, nil
}

if *stackOutputBeforeDelete.Stacks[0].EnableTerminationProtection {
if stacksBeforeDelete[0].EnableTerminationProtection != nil && *stacksBeforeDelete[0].EnableTerminationProtection {
return false, fmt.Errorf("TerminationProtectionIsEnabled: %v", *stackName)
}

if err := o.client.DeleteStack(ctx, stackName, []string{}); err != nil {
return false, err
}

stackOutputAfterDelete, stackExistsAfterDelete, err := o.client.DescribeStacks(ctx, stackName)
stacksAfterDelete, err := o.client.DescribeStacks(ctx, stackName)
if err != nil {
return false, err
}
if !stackExistsAfterDelete {
if len(stacksAfterDelete) == 0 {
io.Logger.Info().Msg("No resources were DELETE_FAILED.")
return true, nil
}
if stackOutputAfterDelete.Stacks[0].StackStatus != "DELETE_FAILED" {
return false, fmt.Errorf("StackStatusError: StackStatus is expected to be DELETE_FAILED, but %v: %v", stackOutputAfterDelete.Stacks[0].StackStatus, *stackName)
if stacksAfterDelete[0].StackStatus != "DELETE_FAILED" {
return false, fmt.Errorf("StackStatusError: StackStatus is expected to be DELETE_FAILED, but %v: %v", stacksAfterDelete[0].StackStatus, *stackName)
}

return false, nil
Expand Down
Loading

0 comments on commit 52417e1

Please sign in to comment.