match docker/api signature for up and down methods

Signed-off-by: aiordache <anca.iordache@docker.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
aiordache 2020-06-15 10:57:51 +02:00 committed by Nicolas De Loof
parent 9e8ddb63cc
commit 1bb95134f0
No known key found for this signature in database
GPG Key ID: 9858809D6F8F6E7E
7 changed files with 30 additions and 64 deletions

View File

@ -75,16 +75,12 @@ func UpCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *cobr
opts := upOptions{} opts := upOptions{}
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "up", Use: "up",
RunE: compose.WithProject(projectOpts, func(project *compose.Project, args []string) error { RunE: docker.WithAwsContext(dockerCli, func(clusteropts docker.AwsContext, args []string) error {
clusteropts, err := docker.GetAwsContext(dockerCli)
if err != nil {
return err
}
backend, err := amazon.NewBackend(clusteropts.Profile, clusteropts.Cluster, clusteropts.Region) backend, err := amazon.NewBackend(clusteropts.Profile, clusteropts.Cluster, clusteropts.Region)
if err != nil { if err != nil {
return err return err
} }
return backend.ComposeUp(context.Background(), project) return backend.Up(context.Background(), *projectOpts)
}), }),
} }
cmd.Flags().StringVar(&opts.loadBalancerArn, "load-balancer", "", "") cmd.Flags().StringVar(&opts.loadBalancerArn, "load-balancer", "", "")
@ -104,7 +100,7 @@ func PsCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *cobr
if err != nil { if err != nil {
return err return err
} }
tasks, err := backend.ComposePs(context.Background(), project) tasks, err := backend.Ps(context.Background(), project)
if err != nil { if err != nil {
return err return err
} }
@ -133,21 +129,7 @@ func DownCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *co
if err != nil { if err != nil {
return err return err
} }
if len(args) == 0 { return backend.Down(context.Background(), *projectOpts)
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
}), }),
} }
cmd.Flags().BoolVar(&opts.DeleteCluster, "delete-cluster", false, "Delete cluster") cmd.Flags().BoolVar(&opts.DeleteCluster, "delete-cluster", false, "Delete cluster")
@ -173,7 +155,7 @@ func LogsCommand(dockerCli command.Cli, projectOpts *compose.ProjectOptions) *co
} else { } else {
name = args[0] name = args[0]
} }
return backend.ComposeLogs(context.Background(), name) return backend.Logs(context.Background(), name)
}), }),
} }
return cmd return cmd

View File

@ -2,30 +2,25 @@ package backend
import ( import (
"context" "context"
"fmt"
"github.com/docker/ecs-plugin/pkg/amazon/types" "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 { func (b *Backend) Down(ctx context.Context, options compose.ProjectOptions) error {
err := b.api.DeleteStack(ctx, projectName) project, err := compose.ProjectFromOptions(&options)
if err != nil { if err != nil {
return err return err
} }
err = b.WaitStackCompletion(ctx, projectName, types.StackDelete) err = b.api.DeleteStack(ctx, project.Name)
if err != nil { if err != nil {
return err return err
} }
if !deleteCluster { err = b.WaitStackCompletion(ctx, project.Name, types.StackDelete)
return nil if err != nil {
}
fmt.Printf("Delete cluster %s", b.Cluster)
if err = b.api.DeleteCluster(ctx, b.Cluster); err != nil {
return err return err
} }
fmt.Printf("... done. \n")
return nil return nil
} }

View File

@ -6,10 +6,11 @@ import (
"github.com/docker/ecs-plugin/pkg/amazon/sdk" "github.com/docker/ecs-plugin/pkg/amazon/sdk"
btypes "github.com/docker/ecs-plugin/pkg/amazon/types" btypes "github.com/docker/ecs-plugin/pkg/amazon/types"
"github.com/docker/ecs-plugin/pkg/compose"
"github.com/golang/mock/gomock" "github.com/golang/mock/gomock"
) )
func TestDownDontDeleteCluster(t *testing.T) { func TestDown(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
m := sdk.NewMockAPI(ctrl) m := sdk.NewMockAPI(ctrl)
@ -25,26 +26,8 @@ func TestDownDontDeleteCluster(t *testing.T) {
recorder.WaitStackComplete(ctx, "stack-123", btypes.StackDelete).Return(nil) recorder.WaitStackComplete(ctx, "stack-123", btypes.StackDelete).Return(nil)
recorder.DescribeStackEvents(ctx, "stack-123").Return(nil, nil) recorder.DescribeStackEvents(ctx, "stack-123").Return(nil, nil)
c.ComposeDown(ctx, "test_project", false) c.Down(ctx, compose.ProjectOptions{
} ConfigPaths: []string{},
Name: "test_project",
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)
} }

View File

@ -10,7 +10,7 @@ import (
"github.com/docker/ecs-plugin/pkg/compose" "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 cluster := b.Cluster
if cluster == "" { if cluster == "" {
cluster = project.Name cluster = project.Name

View File

@ -11,7 +11,7 @@ import (
"github.com/docker/ecs-plugin/pkg/console" "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{ err := b.api.GetLogs(ctx, projectName, &logConsumer{
colors: map[string]console.ColorFunc{}, colors: map[string]console.ColorFunc{},
width: 0, width: 0,

View File

@ -8,7 +8,12 @@ import (
"github.com/docker/ecs-plugin/pkg/compose" "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 != "" { if b.Cluster != "" {
ok, err := b.api.ClusterExists(ctx, b.Cluster) ok, err := b.api.ClusterExists(ctx, b.Cluster)
if err != nil { if err != nil {

View File

@ -8,14 +8,15 @@ import (
) )
type API interface { type API interface {
Up(ctx context.Context, options ProjectOptions) error
Down(ctx context.Context, options ProjectOptions) error
Convert(project *Project) (*cloudformation.Template, error) Convert(project *Project) (*cloudformation.Template, error)
ComposeUp(ctx context.Context, project *Project) error Logs(ctx context.Context, projectName string) error
ComposeDown(ctx context.Context, projectName string, deleteCluster bool) error Ps(background context.Context, project *Project) ([]types.TaskStatus, error)
ComposeLogs(ctx context.Context, projectName string) error
CreateSecret(ctx context.Context, secret types.Secret) (string, error) CreateSecret(ctx context.Context, secret types.Secret) (string, error)
InspectSecret(ctx context.Context, id string) (types.Secret, error) InspectSecret(ctx context.Context, id string) (types.Secret, error)
ListSecrets(ctx context.Context) ([]types.Secret, error) ListSecrets(ctx context.Context) ([]types.Secret, error)
DeleteSecret(ctx context.Context, id string, recover bool) error DeleteSecret(ctx context.Context, id string, recover bool) error
ComposePs(background context.Context, project *Project) ([]types.TaskStatus, error)
} }