MCPcopy Create free account
hub / github.com/coldbrewcloud/coldbrew-cli / Run

Method Run

commands/clusterdelete/command.go:36–245  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

34}
35
36func (c *Command) Run() error {
37 c.awsClient = c.globalFlags.GetAWSClient()
38
39 clusterName := strings.TrimSpace(conv.S(c.clusterNameArg))
40 if !core.ClusterNameRE.MatchString(clusterName) {
41 return console.ExitWithError(core.NewErrorExtraInfo(
42 fmt.Errorf("Invalid cluster name [%s]", clusterName), "https://github.com/coldbrewcloud/coldbrew-cli/wiki/Configuration-File#cluster"))
43 }
44
45 console.Info("Determining AWS resources that need to be deleted...")
46 deleteECSCluster := false
47 deleteECSServiceRole := false
48 deleteInstanceProfile := false
49 deleteInstanceSecurityGroups := false
50 deleteLaunchConfiguration := false
51 deleteAutoScalingGroup := false
52
53 // ECS cluster
54 ecsClusterName := core.DefaultECSClusterName(clusterName)
55 ecsCluster, err := c.awsClient.ECS().RetrieveCluster(ecsClusterName)
56 if err != nil {
57 return console.ExitWithErrorString("Failed to retrieve ECS Cluster [%s]: %s", ecsClusterName, err.Error())
58 }
59 if ecsCluster != nil && conv.S(ecsCluster.Status) != "INACTIVE" {
60 deleteECSCluster = true
61 console.DetailWithResource("ECS Cluster", ecsClusterName)
62 }
63
64 // ECS service role
65 ecsServiceRoleName := core.DefaultECSServiceRoleName(clusterName)
66 ecsServiceRole, err := c.awsClient.IAM().RetrieveRole(ecsServiceRoleName)
67 if err != nil {
68 return console.ExitWithErrorString("Failed to retrieve IAM Role [%s]: %s", ecsServiceRoleName, err.Error())
69 }
70 if ecsServiceRole != nil {
71 deleteECSServiceRole = true
72 console.DetailWithResource("IAM Role for ECS Services", ecsServiceRoleName)
73 }
74
75 // launch configuration
76 lcName := core.DefaultLaunchConfigurationName(clusterName)
77 launchConfiguration, err := c.awsClient.AutoScaling().RetrieveLaunchConfiguration(lcName)
78 if err != nil {
79 return console.ExitWithErrorString("Failed to delete Launch Configuration [%s]: %s", lcName, err.Error())
80 }
81 if launchConfiguration != nil {
82 deleteLaunchConfiguration = true
83 console.DetailWithResource("EC2 Launch Configuration for ECS Container Instances", lcName)
84 }
85
86 // auto scaling group
87 asgName := core.DefaultAutoScalingGroupName(clusterName)
88 autoScalingGroup, err := c.awsClient.AutoScaling().RetrieveAutoScalingGroup(asgName)
89 if err != nil {
90 return console.ExitWithErrorString("Failed to retrieve Auto Scaling Group [%s]: %s", asgName, err.Error())
91 }
92 if autoScalingGroup != nil && utils.IsBlank(conv.S(autoScalingGroup.Status)) {
93 tags, err := c.awsClient.AutoScaling().RetrieveTagsForAutoScalingGroup(asgName)

Callers

nothing calls this directly

Implementers 8

Commandcommands/clusterstatus/command.go
Commandcommands/deploy/command.go
Commandcommands/clusterdelete/command.go
Commandcommands/delete/command.go
Commandcommands/clustercreate/command.go
Commandcommands/create/command.go
Commandcommands/clusterscale/command.go
Commandcommands/status/command.go

Calls 15

deleteECSServiceRoleMethod · 0.95
GetAWSClientMethod · 0.80
RetrieveClusterMethod · 0.80
ECSMethod · 0.80
ErrorMethod · 0.80
RetrieveRoleMethod · 0.80
IAMMethod · 0.80
AutoScalingMethod · 0.80

Tested by

no test coverage detected