Skip to content

Commit

Permalink
Merge pull request #10 from kayac/delete
Browse files Browse the repository at this point in the history
Add delete sub command.
  • Loading branch information
fujiwara authored Mar 30, 2018
2 parents 3d7f4d5 + c6c887c commit 55d777f
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 4 deletions.
53 changes: 49 additions & 4 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ Commands:
rollback [<flags>]
rollback service
delete [<flags>]
delete service
```

For more options for sub-commands, See `ecspresso sub-command --help`.
Expand Down
8 changes: 8 additions & 0 deletions cmd/ecspresso/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ func _main() int {
DeregisterTaskDefinition: rollback.Flag("dereginster-task-definition", "deregister rolled back task definition").Bool(),
}

delete := kingpin.Command("delete", "delete service")
deleteOption := ecspresso.DeleteOption{
DryRun: delete.Flag("dry-run", "dry-run").Bool(),
Force: delete.Flag("force", "force delete. not confirm").Bool(),
}

sub := kingpin.Parse()

c := ecspresso.NewDefaultConfig()
Expand All @@ -64,6 +70,8 @@ func _main() int {
err = app.Rollback(rollbackOption)
case "create":
err = app.Create(createOption)
case "delete":
err = app.Delete(deleteOption)
default:
kingpin.Usage()
return 1
Expand Down
36 changes: 36 additions & 0 deletions ecspresso.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"strings"
"time"

"github.com/Songmu/prompter"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ecs"
Expand Down Expand Up @@ -172,6 +173,41 @@ func (d *App) Create(opt CreateOption) error {
return nil
}

func (d *App) Delete(opt DeleteOption) error {
ctx, cancel := d.Start()
defer cancel()

d.Log("Deleting service")
sv, err := d.DescribeServiceStatus(ctx, 3)
if err != nil {
return err
}

if *opt.DryRun {
d.Log("DRY RUN OK")
return nil
}

if !*opt.Force {
service := prompter.Prompt(`Enter the service name to DELETE`, "")
if service != *sv.ServiceName {
d.Log("Aborted")
return errors.New("confirmation failed")
}
}

dsi := &ecs.DeleteServiceInput{
Cluster: sv.ClusterArn,
Service: sv.ServiceName,
}
if _, err := d.ecs.DeleteServiceWithContext(ctx, dsi); err != nil {
return errors.Wrap(err, "delete failed")
}
d.Log("Service is deleted")

return nil
}

func (d *App) Deploy(opt DeployOption) error {
ctx, cancel := d.Start()
defer cancel()
Expand Down
5 changes: 5 additions & 0 deletions options.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,8 @@ type RollbackOption struct {
DryRun *bool
DeregisterTaskDefinition *bool
}

type DeleteOption struct {
DryRun *bool
Force *bool
}

0 comments on commit 55d777f

Please sign in to comment.