浏览代码

Project name parameter as alternative to compose file on down

Signed-off-by: aiordache <[email protected]>
aiordache 5 年之前
父节点
当前提交
d612a4ab89
共有 5 个文件被更改,包括 23 次插入10 次删除
  1. 17 3
      ecs/cmd/main/main.go
  2. 3 4
      ecs/pkg/amazon/down.go
  3. 1 1
      ecs/pkg/compose/api.go
  4. 1 1
      ecs/pkg/compose/opts.go
  5. 1 1
      ecs/pkg/compose/project.go

+ 17 - 3
ecs/cmd/main/main.go

@@ -140,13 +140,27 @@ func DownCommand(clusteropts *clusterOptions, projectOpts *compose.ProjectOption
 	opts := downOptions{}
 	cmd := &cobra.Command{
 		Use: "down",
-		RunE: compose.WithProject(projectOpts, func(project *compose.Project, args []string) error {
+		RunE: func(cmd *cobra.Command, args []string) error {
 			client, err := amazon.NewClient(clusteropts.profile, clusteropts.cluster, clusteropts.region)
 			if err != nil {
 				return err
 			}
-			return client.ComposeDown(project, opts.KeepLoadBalancer, opts.DeleteCluster)
-		}),
+			if len(args) == 0 {
+				project, err := compose.ProjectFromOptions(projectOpts)
+				if err != nil {
+					return err
+				}
+				return client.ComposeDown(&project.Name, opts.KeepLoadBalancer, opts.DeleteCluster)
+			}
+			// project names passed as parameters
+			for _, name := range args {
+				err := client.ComposeDown(&name, opts.KeepLoadBalancer, opts.DeleteCluster)
+				if err != nil {
+					return err
+				}
+			}
+			return nil
+		},
 	}
 	cmd.Flags().BoolVar(&opts.KeepLoadBalancer, "keep-load-balancer", false, "Keep Load Balancer for further use")
 	cmd.Flags().BoolVar(&opts.DeleteCluster, "delete-cluster", false, "Delete cluster")

+ 3 - 4
ecs/pkg/amazon/down.go

@@ -5,18 +5,17 @@ import (
 
 	"github.com/aws/aws-sdk-go/service/cloudformation"
 	cf "github.com/aws/aws-sdk-go/service/cloudformation"
-	"github.com/docker/ecs-plugin/pkg/compose"
 )
 
-func (c *client) ComposeDown(project *compose.Project, keepLoadBalancer, deleteCluster bool) error {
+func (c *client) ComposeDown(projectName *string, keepLoadBalancer, deleteCluster bool) error {
 	_, err := c.CF.DeleteStack(&cloudformation.DeleteStackInput{
-		StackName: &project.Name,
+		StackName: projectName,
 	})
 	if err != nil {
 		return err
 	}
 	fmt.Printf("Delete stack ")
-	if err = c.CF.WaitUntilStackDeleteComplete(&cf.DescribeStacksInput{StackName: &project.Name}); err != nil {
+	if err = c.CF.WaitUntilStackDeleteComplete(&cf.DescribeStacksInput{StackName: projectName}); err != nil {
 		return err
 	}
 	fmt.Printf("... done.\n")

+ 1 - 1
ecs/pkg/compose/api.go

@@ -5,5 +5,5 @@ import "github.com/awslabs/goformation/v4/cloudformation"
 type API interface {
 	Convert(project *Project, loadBalancerArn *string) (*cloudformation.Template, error)
 	ComposeUp(project *Project, loadBalancerArn *string) error
-	ComposeDown(project *Project, keepLoadBalancer, deleteCluster bool) error
+	ComposeDown(projectName *string, keepLoadBalancer, deleteCluster bool) error
 }

+ 1 - 1
ecs/pkg/compose/opts.go

@@ -20,7 +20,7 @@ type ProjectFunc func(project *Project, args []string) error
 // WithProject wrap a ProjectFunc into a cobra command
 func WithProject(options *ProjectOptions, f ProjectFunc) func(cmd *cobra.Command, args []string) error {
 	return func(cmd *cobra.Command, args []string) error {
-		project, err := projectFromOptions(options)
+		project, err := ProjectFromOptions(options)
 		if err != nil {
 			return err
 		}

+ 1 - 1
ecs/pkg/compose/project.go

@@ -34,7 +34,7 @@ func NewProject(config types.ConfigDetails, name string) (*Project, error) {
 }
 
 // projectFromOptions load a compose project based on command line options
-func projectFromOptions(options *ProjectOptions) (*Project, error) {
+func ProjectFromOptions(options *ProjectOptions) (*Project, error) {
 	configPath, err := getConfigPathFromOptions(options)
 	if err != nil {
 		return nil, err