Skip to content

Commit

Permalink
Add destroy region command
Browse files Browse the repository at this point in the history
  • Loading branch information
ipmb committed Jan 26, 2021
1 parent bb7c895 commit a79f3b8
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 2 deletions.
9 changes: 9 additions & 0 deletions .github/workflows/functional_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,15 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: us-east-1
-
name: Destroy region
run: yes yes | ./apppack destroy region
if: always()
timeout-minutes: 3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: us-east-1
-
name: Destroy account
run: yes yes | ./apppack destroy account
Expand Down
44 changes: 42 additions & 2 deletions cmd/destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,55 @@ var destroyAccountCmd = &cobra.Command{
})
checkErr(err)
stack, err := waitForCloudformationStack(cfnSvc, account.StackID)
Spinner.Stop()
checkErr(err)
if *stack.StackStatus != "DELETE_COMPLETE" {
checkErr(fmt.Errorf("Account deletion failed. current state: %s", *stack.StackStatus))
}
printSuccess("AppPack account deleted")
},
}

// destroyRegionCmd represents the destroy command
var destroyRegionCmd = &cobra.Command{
Use: "region",
Short: "destroy AWS resources used by an AppPack region",
Long: "*Requires AWS credentials.*",
DisableFlagsInUseLine: true,
Run: func(cmd *cobra.Command, args []string) {
startSpinner()
sess := session.Must(session.NewSession())
ssmSvc := ssm.New(sess)
cfnSvc := cloudformation.New(sess)
stackName := fmt.Sprintf("apppack-region-%s", *sess.Config.Region)
stackOutput, err := cfnSvc.DescribeStacks(&cloudformation.DescribeStacksInput{
StackName: &stackName,
})
checkErr(err)
stack := stackOutput.Stacks[0]
Spinner.Stop()
var confirm string
fmt.Printf("Are you sure you want to delete your AppPack Region Stack\n%s? yes/[%s]\n", aurora.Faint(*stack.StackId), aurora.Bold("no"))
fmt.Scanln(&confirm)
if confirm != "yes" {
checkErr(fmt.Errorf("aborting due to user input"))
}
startSpinner()
_, err = cfnSvc.DeleteStack(&cloudformation.DeleteStackInput{
StackName: stack.StackId,
})
checkErr(err)
stack, err = waitForCloudformationStack(cfnSvc, stackName)
_, 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))
checkErr(fmt.Errorf("Region deletion failed. current state: %s", *stack.StackStatus))
}
printSuccess("AppPack account deleted")
printSuccess("AppPack region deleted")
},
}

Expand Down Expand Up @@ -287,6 +326,7 @@ func init() {
rootCmd.AddCommand(destroyCmd)

destroyCmd.AddCommand(destroyAccountCmd)
destroyCmd.AddCommand(destroyRegionCmd)
destroyCmd.AddCommand(destroyClusterCmd)
destroyCmd.AddCommand(destroyAppCmd)
destroyCmd.AddCommand(destroyRedisCmd)
Expand Down

0 comments on commit a79f3b8

Please sign in to comment.