func deleteCluster(context *cli.Context, rdwr config.ReadWriter, ecsClient ecsclient.ECSClient, cfnClient cloudformation.CloudformationClient) error { // Validate cli flags if !isForceSet(context) { return fmt.Errorf("Missing required flag '--%s'", forceFlag) // TODO prompt override for force } ecsParams, err := newCliParams(context, rdwr) if err != nil { return err } // Validate that cluster exists in ECS ecsClient.Initialize(ecsParams) if err := validateCluster(ecsParams.Cluster, ecsClient); err != nil { return err } // Validate that a cfn stack exists for the cluster cfnClient.Initialize(ecsParams) stackName := ecsParams.GetCfnStackName() if err := cfnClient.ValidateStackExists(stackName); err != nil { return fmt.Errorf("CloudFormation stack not found for cluster '%s'", ecsParams.Cluster) } // Delete cfn stack if err := cfnClient.DeleteStack(stackName); err != nil { return err } logrus.Info("Waiting for your cluster resources to be deleted...") if err := cfnClient.WaitUntilDeleteComplete(stackName); err != nil { return err } // Delete cluster in ECS if _, err := ecsClient.DeleteCluster(ecsParams.Cluster); err != nil { return err } return nil }