Skip to content

Commit

Permalink
Merge pull request #8 from kayac/remove-rolled-back-task-definition
Browse files Browse the repository at this point in the history
add --deregister-task-definition to rollback command
  • Loading branch information
fujiwara authored Mar 14, 2018
2 parents cb8726e + f640a29 commit 3518411
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 8 deletions.
1 change: 1 addition & 0 deletions cmd/ecspresso/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func _main() int {
rollback := kingpin.Command("rollback", "rollback service")
rollbackOption := ecspresso.RollbackOption{
DryRun: rollback.Flag("dry-run", "dry-run").Bool(),
DeregisterTaskDefinition: rollback.Flag("dereginster-task-definition", "deregister rolled back task definition").Bool(),
}

sub := kingpin.Parse()
Expand Down
30 changes: 23 additions & 7 deletions ecspresso.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func (d *App) Deploy(opt DeployOption) error {
return nil
}

if err := d.UpdateService(ctx, tdArn, count, opt.ForceNewDeployment); err != nil {
if err := d.UpdateService(ctx, tdArn, *count, *opt.ForceNewDeployment); err != nil {
return errors.Wrap(err, "deploy failed")
}
if err := d.WaitServiceStable(ctx, time.Now()); err != nil {
Expand All @@ -230,7 +230,8 @@ func (d *App) Rollback(opt RollbackOption) error {
if err != nil {
return errors.Wrap(err, "rollback failed")
}
targetArn, err := d.FindRollbackTarget(ctx, *service.TaskDefinition)
currentArn := *service.TaskDefinition
targetArn, err := d.FindRollbackTarget(ctx, currentArn)
if err != nil {
return errors.Wrap(err, "rollback failed")
}
Expand All @@ -240,14 +241,29 @@ func (d *App) Rollback(opt RollbackOption) error {
return nil
}

if err := d.UpdateService(ctx, targetArn, service.DesiredCount, nil); err != nil {
if err := d.UpdateService(ctx, targetArn, *service.DesiredCount, false); err != nil {
return errors.Wrap(err, "rollback failed")
}
if err := d.WaitServiceStable(ctx, time.Now()); err != nil {
return errors.Wrap(err, "rollback failed")
}

d.Log("Service is stable now. Completed!")

if *opt.DeregisterTaskDefinition {
d.Log("Deregistering rolled back task definition", arnToName(currentArn))
_, err := d.ecs.DeregisterTaskDefinitionWithContext(
ctx,
&ecs.DeregisterTaskDefinitionInput{
TaskDefinition: &currentArn,
},
)
if err != nil {
return errors.Wrap(err, "deregister task definition failed")
}
d.Log(arnToName(currentArn), "was deregistered successfully")
}

return nil
}

Expand Down Expand Up @@ -318,9 +334,9 @@ func (d *App) WaitServiceStable(ctx context.Context, startedAt time.Time) error
return d.ecs.WaitUntilServicesStableWithContext(ctx, d.DescribeServicesInput())
}

func (d *App) UpdateService(ctx context.Context, taskDefinitionArn string, count *int64, force *bool) error {
func (d *App) UpdateService(ctx context.Context, taskDefinitionArn string, count int64, force bool) error {
msg := "Updating service"
if *force {
if force {
msg = msg + " with force new deployment"
}
msg = msg + "..."
Expand All @@ -332,8 +348,8 @@ func (d *App) UpdateService(ctx context.Context, taskDefinitionArn string, count
Service: aws.String(d.Service),
Cluster: aws.String(d.Cluster),
TaskDefinition: aws.String(taskDefinitionArn),
DesiredCount: count,
ForceNewDeployment: force,
DesiredCount: &count,
ForceNewDeployment: &force,
},
)
return err
Expand Down
3 changes: 2 additions & 1 deletion options.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ type StatusOption struct {
}

type RollbackOption struct {
DryRun *bool
DryRun *bool
DeregisterTaskDefinition *bool
}

0 comments on commit 3518411

Please sign in to comment.