Skip to content

Commit

Permalink
add deregister --delete option.
Browse files Browse the repository at this point in the history
Enable to delete task definitions.
Update SDK.
  • Loading branch information
fujiwara committed May 12, 2023
1 parent d4fef5f commit a4a1136
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 12 deletions.
15 changes: 15 additions & 0 deletions cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,7 @@ var cliTests = []struct {
Revision: ptr(""),
Keeps: ptr(0),
Force: ptr(false),
Delete: ptr(false),
},
},
{
Expand All @@ -388,6 +389,7 @@ var cliTests = []struct {
Revision: ptr("123"),
Keeps: ptr(23),
Force: ptr(true),
Delete: ptr(false),
},
},
{
Expand All @@ -399,6 +401,19 @@ var cliTests = []struct {
Revision: ptr("latest"),
Keeps: ptr(23),
Force: ptr(true),
Delete: ptr(false),
},
},
{
args: []string{"deregister",
"--dry-run", "--revision", "latest", "--keeps", "23", "--force", "--delete"},
sub: "deregister",
subOption: &ecspresso.DeregisterOption{
DryRun: ptr(true),
Revision: ptr("latest"),
Keeps: ptr(23),
Force: ptr(true),
Delete: ptr(true),
},
},
{
Expand Down
19 changes: 19 additions & 0 deletions deregister.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type DeregisterOption struct {
Keeps *int `help:"number of task definitions to keep except in-use" default:"0"`
Revision *string `help:"revision number or 'latest'" default:""`
Force *bool `help:"force deregister without confirmation" default:"false"`
Delete *bool `help:"delete task definition on deregistered" default:"false"`
}

func (opt DeregisterOption) DryRunString() string {
Expand Down Expand Up @@ -89,6 +90,15 @@ func (d *App) deregiserRevision(ctx context.Context, opt DeregisterOption, inUse
return fmt.Errorf("failed to deregister task definition: %w", err)
}
d.Log("%s was deregistered successfully", name)
if aws.ToBool(opt.Delete) {
d.Log("Deleting %s", name)
if _, err := d.ecs.DeleteTaskDefinitions(ctx, &ecs.DeleteTaskDefinitionsInput{
TaskDefinitions: []string{name},
}); err != nil {
return fmt.Errorf("failed to delete task definition: %w", err)
}
d.Log("%s was deleted successfully", name)
}
} else {
d.Log("Aborted")
return fmt.Errorf("confirmation failed")
Expand Down Expand Up @@ -159,6 +169,15 @@ func (d *App) deregisterKeeps(ctx context.Context, opt DeregisterOption, inUse m
time.Sleep(time.Second)
deregistered++
}
if aws.ToBool(opt.Delete) {
d.Log("Deleting %d task definitions", len(deregs))
if _, err := d.ecs.DeleteTaskDefinitions(ctx, &ecs.DeleteTaskDefinitionsInput{
TaskDefinitions: deregs,
}); err != nil {
return fmt.Errorf("failed to delete task definition: %w", err)
}
d.Log("%d task definitions were deleted successfully", len(deregs))
}
} else {
d.Log("Aborted")
return fmt.Errorf("confirmation failed")
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ go 1.18
require (
github.com/Songmu/prompter v0.5.1
github.com/alecthomas/kong v0.7.0
github.com/aws/aws-sdk-go-v2 v1.17.5
github.com/aws/aws-sdk-go-v2 v1.18.0
github.com/aws/aws-sdk-go-v2/config v1.18.15
github.com/aws/aws-sdk-go-v2/credentials v1.13.15
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.15.17
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.19
github.com/aws/aws-sdk-go-v2/service/codedeploy v1.14.17
github.com/aws/aws-sdk-go-v2/service/ecr v1.17.17
github.com/aws/aws-sdk-go-v2/service/ecs v1.22.0
github.com/aws/aws-sdk-go-v2/service/ecs v1.27.0
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.18
github.com/aws/aws-sdk-go-v2/service/iam v1.18.18
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11
Expand Down Expand Up @@ -66,8 +66,8 @@ require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.23 // indirect
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.30 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.22.9 // indirect
Expand Down
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd
github.com/aws/aws-sdk-go-v2 v1.16.15/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k=
github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k=
github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw=
github.com/aws/aws-sdk-go-v2 v1.17.3/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2 v1.17.5 h1:TzCUW1Nq4H8Xscph5M/skINUitxM5UBAyvm2s7XBzL4=
github.com/aws/aws-sdk-go-v2 v1.17.5/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY=
github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU=
github.com/aws/aws-sdk-go-v2/config v1.17.6/go.mod h1:CrxsoI/AcKUoWyL9Zo0YaDxRlBfSnDZKBYKDdkNYDQ0=
Expand All @@ -134,15 +134,15 @@ github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhm
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.22/go.mod h1:/vNv5Al0bpiF8YdX2Ov6Xy05VTiXsql94yUqJMYaj0w=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.25/go.mod h1:Zb29PYkf42vVYQY6pvSyJCJcFHlPIiY+YKdPtwnvMkY=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27/go.mod h1:a1/UpzeyBBerajpnP5nGZa9mGzsBn5cOKxm6NWQsvoI=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29 h1:9/aKwwus0TQxppPXFmf010DFrE+ssSbzroLVYINA+xE=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.29/go.mod h1:Dip3sIGv485+xerzVv24emnjX5Sg88utCL8fwGmCeWg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.16/go.mod h1:62dsXI0BqTIGomDl8Hpm33dv0OntGaVblri3ZRParVQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.19/go.mod h1:6Q0546uHDp421okhmmGfbxzq2hBqbXFNpi4k+Q1JnQA=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21/go.mod h1:+Gxn8jYn5k9ebfHEqlhrMirFjSW0v0C9fI+KN5vk2kE=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23 h1:b/Vn141DBuLVgXbhRWIrl9g+ww7G+ScV5SzniWR13jQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.23/go.mod h1:mr6c4cHC+S/MMkrjtSlG4QA36kOznDep+0fga5L/fGQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.23/go.mod h1:XtEkQMmxls+Tb5dZLmpa1QAk0OzSIFDAXanC9Jkf81E=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.30 h1:IVx9L7YFhpPq0tTnGo8u8TpluFu7nAn9X3sUDMb11c0=
Expand All @@ -159,8 +159,8 @@ github.com/aws/aws-sdk-go-v2/service/codedeploy v1.14.17 h1:1UNOFx344QTl/JeqDdx3
github.com/aws/aws-sdk-go-v2/service/codedeploy v1.14.17/go.mod h1:tyW2nFb8zz3S+knv893rdripKwKiYzMqz91xJpeKU6I=
github.com/aws/aws-sdk-go-v2/service/ecr v1.17.17 h1:YYz2Y9LpPVaD37BuWCx4UOw6IhLfHhBDCaTadF5cuB0=
github.com/aws/aws-sdk-go-v2/service/ecr v1.17.17/go.mod h1:ZvTqPpFjMbF5zJa4RSkNC1ybPbz28sfCbjVmPESsS7Y=
github.com/aws/aws-sdk-go-v2/service/ecs v1.22.0 h1:Z5jcr24fuBhpA4uHRyU0jJ1pfzyFqzUrWvQ4Iwl5EGw=
github.com/aws/aws-sdk-go-v2/service/ecs v1.22.0/go.mod h1:YXZ3cd8LDvvQytFpWjqbgdmHRAyJi4qbIT5dYdyhfeM=
github.com/aws/aws-sdk-go-v2/service/ecs v1.27.0 h1:vPpYBJOv1e7WxJPt1IRezDX6BBj/yncV2N0LDnDNOMo=
github.com/aws/aws-sdk-go-v2/service/ecs v1.27.0/go.mod h1:SB6YszwN1iKvyt/Qk+ICeKsfBxjd0CTEwwkmej9qoa0=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.18 h1:9RjkJnlsEk7R2qkDgPZEUAU84XO9N6WTh1wGGmk9Z6s=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.18/go.mod h1:x5CfUawEmoBVOWplwsP/L46xLdbJ//S27NZaOsxwgSY=
github.com/aws/aws-sdk-go-v2/service/iam v1.18.18 h1:20YzppAf0OeVvyczfAFVUepwd6NQNaZLQ60wIuhVzJ4=
Expand Down

0 comments on commit a4a1136

Please sign in to comment.