From 1bb95134f0c0a846be4201d533fd9c8995cf7783 Mon Sep 17 00:00:00 2001 From: aiordache Date: Mon, 15 Jun 2020 10:57:51 +0200 Subject: [PATCH] match docker/api signature for up and down methods Signed-off-by: aiordache Signed-off-by: Nicolas De Loof --- ecs/cmd/commands/compose.go | 28 +++++----------------------- ecs/pkg/amazon/backend/down.go | 17 ++++++----------- ecs/pkg/amazon/backend/down_test.go | 29 ++++++----------------------- ecs/pkg/amazon/backend/list.go | 2 +- ecs/pkg/amazon/backend/logs.go | 2 +- ecs/pkg/amazon/backend/up.go | 7 ++++++- ecs/pkg/compose/api.go | 9 +++++---- 7 files changed, 30 insertions(+), 64 deletions(-) diff --git a/ecs/cmd/commands/compose.go b/ecs/cmd/commands/compose.go index 55eb7a148..fc5802e0b 100644 --- a/ecs/cmd/commands/compose.go +++ b/ecs/cmd/commands/compose.go @@ -75,16 +75,12 @@ func UpCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *cobr opts := upOptions{} cmd := &cobra.Command{ Use: "up", - RunE: compose.WithProject(projectOpts, func(project *compose.Project, args []string) error { - clusteropts, err := docker.GetAwsContext(dockerCli) - if err != nil { - return err - } + RunE: docker.WithAwsContext(dockerCli, func(clusteropts docker.AwsContext, args []string) error { backend, err := amazon.NewBackend(clusteropts.Profile, clusteropts.Cluster, clusteropts.Region) if err != nil { return err } - return backend.ComposeUp(context.Background(), project) + return backend.Up(context.Background(), *projectOpts) }), } cmd.Flags().StringVar(&opts.loadBalancerArn, "load-balancer", "", "") @@ -104,7 +100,7 @@ func PsCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *cobr if err != nil { return err } - tasks, err := backend.ComposePs(context.Background(), project) + tasks, err := backend.Ps(context.Background(), project) if err != nil { return err } @@ -133,21 +129,7 @@ func DownCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *co if err != nil { return err } - if len(args) == 0 { - project, err := compose.ProjectFromOptions(projectOpts) - if err != nil { - return err - } - return backend.ComposeDown(context.Background(), project.Name, opts.DeleteCluster) - } - // project names passed as parameters - for _, name := range args { - err := backend.ComposeDown(context.Background(), name, opts.DeleteCluster) - if err != nil { - return err - } - } - return nil + return backend.Down(context.Background(), *projectOpts) }), } cmd.Flags().BoolVar(&opts.DeleteCluster, "delete-cluster", false, "Delete cluster") @@ -173,7 +155,7 @@ func LogsCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *co } else { name = args[0] } - return backend.ComposeLogs(context.Background(), name) + return backend.Logs(context.Background(), name) }), } return cmd diff --git a/ecs/pkg/amazon/backend/down.go b/ecs/pkg/amazon/backend/down.go index 8b978e796..d07c4a069 100644 --- a/ecs/pkg/amazon/backend/down.go +++ b/ecs/pkg/amazon/backend/down.go @@ -2,30 +2,25 @@ package backend import ( "context" - "fmt" "github.com/docker/ecs-plugin/pkg/amazon/types" + "github.com/docker/ecs-plugin/pkg/compose" ) -func (b *Backend) ComposeDown(ctx context.Context, projectName string, deleteCluster bool) error { - err := b.api.DeleteStack(ctx, projectName) +func (b *Backend) Down(ctx context.Context, options compose.ProjectOptions) error { + project, err := compose.ProjectFromOptions(&options) if err != nil { return err } - err = b.WaitStackCompletion(ctx, projectName, types.StackDelete) + err = b.api.DeleteStack(ctx, project.Name) if err != nil { return err } - if !deleteCluster { - return nil - } - - fmt.Printf("Delete cluster %s", b.Cluster) - if err = b.api.DeleteCluster(ctx, b.Cluster); err != nil { + err = b.WaitStackCompletion(ctx, project.Name, types.StackDelete) + if err != nil { return err } - fmt.Printf("... done. \n") return nil } diff --git a/ecs/pkg/amazon/backend/down_test.go b/ecs/pkg/amazon/backend/down_test.go index d9abf70ca..7d156e246 100644 --- a/ecs/pkg/amazon/backend/down_test.go +++ b/ecs/pkg/amazon/backend/down_test.go @@ -6,10 +6,11 @@ import ( "github.com/docker/ecs-plugin/pkg/amazon/sdk" btypes "github.com/docker/ecs-plugin/pkg/amazon/types" + "github.com/docker/ecs-plugin/pkg/compose" "github.com/golang/mock/gomock" ) -func TestDownDontDeleteCluster(t *testing.T) { +func TestDown(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() m := sdk.NewMockAPI(ctrl) @@ -25,26 +26,8 @@ func TestDownDontDeleteCluster(t *testing.T) { recorder.WaitStackComplete(ctx, "stack-123", btypes.StackDelete).Return(nil) recorder.DescribeStackEvents(ctx, "stack-123").Return(nil, nil) - c.ComposeDown(ctx, "test_project", false) -} - -func TestDownDeleteCluster(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - m := sdk.NewMockAPI(ctrl) - c := &Backend{ - Cluster: "test_cluster", - Region: "region", - api: m, - } - - ctx := context.TODO() - recorder := m.EXPECT() - recorder.DeleteStack(ctx, "test_project").Return(nil) - recorder.GetStackID(ctx, "test_project").Return("stack-123", nil) - recorder.WaitStackComplete(ctx, "stack-123", btypes.StackDelete).Return(nil) - recorder.DescribeStackEvents(ctx, "stack-123").Return(nil, nil) - recorder.DeleteCluster(ctx, "test_cluster").Return(nil) - - c.ComposeDown(ctx, "test_project", true) + c.Down(ctx, compose.ProjectOptions{ + ConfigPaths: []string{}, + Name: "test_project", + }) } diff --git a/ecs/pkg/amazon/backend/list.go b/ecs/pkg/amazon/backend/list.go index 055362aa8..b90905945 100644 --- a/ecs/pkg/amazon/backend/list.go +++ b/ecs/pkg/amazon/backend/list.go @@ -10,7 +10,7 @@ import ( "github.com/docker/ecs-plugin/pkg/compose" ) -func (b *Backend) ComposePs(ctx context.Context, project *compose.Project) ([]types.TaskStatus, error) { +func (b *Backend) Ps(ctx context.Context, project *compose.Project) ([]types.TaskStatus, error) { cluster := b.Cluster if cluster == "" { cluster = project.Name diff --git a/ecs/pkg/amazon/backend/logs.go b/ecs/pkg/amazon/backend/logs.go index 179635290..a17158857 100644 --- a/ecs/pkg/amazon/backend/logs.go +++ b/ecs/pkg/amazon/backend/logs.go @@ -11,7 +11,7 @@ import ( "github.com/docker/ecs-plugin/pkg/console" ) -func (b *Backend) ComposeLogs(ctx context.Context, projectName string) error { +func (b *Backend) Logs(ctx context.Context, projectName string) error { err := b.api.GetLogs(ctx, projectName, &logConsumer{ colors: map[string]console.ColorFunc{}, width: 0, diff --git a/ecs/pkg/amazon/backend/up.go b/ecs/pkg/amazon/backend/up.go index 8a7a895fe..8c78748a4 100644 --- a/ecs/pkg/amazon/backend/up.go +++ b/ecs/pkg/amazon/backend/up.go @@ -8,7 +8,12 @@ import ( "github.com/docker/ecs-plugin/pkg/compose" ) -func (b *Backend) ComposeUp(ctx context.Context, project *compose.Project) error { +func (b *Backend) Up(ctx context.Context, options compose.ProjectOptions) error { + project, err := compose.ProjectFromOptions(&options) + if err != nil { + return err + } + if b.Cluster != "" { ok, err := b.api.ClusterExists(ctx, b.Cluster) if err != nil { diff --git a/ecs/pkg/compose/api.go b/ecs/pkg/compose/api.go index 016d49478..6d84ccec4 100644 --- a/ecs/pkg/compose/api.go +++ b/ecs/pkg/compose/api.go @@ -8,14 +8,15 @@ import ( ) type API interface { + Up(ctx context.Context, options ProjectOptions) error + Down(ctx context.Context, options ProjectOptions) error + Convert(project *Project) (*cloudformation.Template, error) - ComposeUp(ctx context.Context, project *Project) error - ComposeDown(ctx context.Context, projectName string, deleteCluster bool) error - ComposeLogs(ctx context.Context, projectName string) error + Logs(ctx context.Context, projectName string) error + Ps(background context.Context, project *Project) ([]types.TaskStatus, error) CreateSecret(ctx context.Context, secret types.Secret) (string, error) InspectSecret(ctx context.Context, id string) (types.Secret, error) ListSecrets(ctx context.Context) ([]types.Secret, error) DeleteSecret(ctx context.Context, id string, recover bool) error - ComposePs(background context.Context, project *Project) ([]types.TaskStatus, error) }