diff --git a/go.mod b/go.mod index 9a8d2ca..ae3e7b9 100644 --- a/go.mod +++ b/go.mod @@ -4,12 +4,12 @@ go 1.21 require ( github.com/apparentlymart/go-cidr v1.1.0 - github.com/aws/aws-sdk-go-v2 v1.30.0 + github.com/aws/aws-sdk-go-v2 v1.30.3 github.com/aws/aws-sdk-go-v2/config v1.27.9 github.com/aws/aws-sdk-go-v2/credentials v1.17.9 github.com/aws/aws-sdk-go-v2/service/cloudformation v1.48.0 github.com/aws/aws-sdk-go-v2/service/ec2 v1.152.0 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.24.3 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 github.com/aws/aws-sdk-go-v2/service/iam v1.27.1 github.com/aws/aws-sdk-go-v2/service/kms v1.30.0 github.com/aws/aws-sdk-go-v2/service/ram v1.26.1 @@ -28,15 +28,15 @@ require ( require github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect require ( - github.com/aws/smithy-go v1.20.2 + github.com/aws/smithy-go v1.20.3 github.com/kr/pretty v0.1.0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect ) require ( github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect diff --git a/go.sum b/go.sum index 7b9135d..e053e11 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= -github.com/aws/aws-sdk-go-v2 v1.30.0 h1:6qAwtzlfcTtcL8NHtbDQAqgM5s6NDipQTkPxyH/6kAA= -github.com/aws/aws-sdk-go-v2 v1.30.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= +github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg= @@ -10,10 +10,10 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.9 h1:N8s0/7yW+h8qR8WaRlPQeJ6czVMN github.com/aws/aws-sdk-go-v2/credentials v1.17.9/go.mod h1:446YhIdmSV0Jf/SLafGZalQo+xr2iw7/fzXGDPTU1yQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0 h1:af5YzcLf80tv4Em4jWVD75lpnOHSBkPUZxZfGkrI3HI= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.0/go.mod h1:nQ3how7DMnFMWiU1SpECohgC82fpn4cKZ875NDMmwtA= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12 h1:SJ04WXGTwnHlWIODtC5kJzKbeuHt+OUNOgKg7nfnUGw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.12/go.mod h1:FkpvXhA92gb3GE9LD6Og0pHHycTxW7xGpnEh5E7Opwo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12 h1:hb5KgeYfObi5MHkSSZMEudnIvX30iB+E21evI4r6BnQ= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.12/go.mod h1:CroKe/eWJdyfy9Vx4rljP5wTUjNJfb+fPz1uMYUhEGM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.48.0 h1:uMlYsoHdd2Gr9sDGq2ieUR5jVu7F5AqPYz6UBJmdRhY= @@ -22,8 +22,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1 h1:suWu59CRsDNhw2YXP github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1/go.mod h1:tZiRxrv5yBRgZ9Z4OOOxwscAZRFk5DgYhEcjX1QpvgI= github.com/aws/aws-sdk-go-v2/service/ec2 v1.152.0 h1:ltCQObuImVYmIrMX65ikB9W83MEun3Ry2Sk11ecZ8Xw= github.com/aws/aws-sdk-go-v2/service/ec2 v1.152.0/go.mod h1:TeZ9dVQzGaLG+SBIgdLIDbJ6WmfFvksLeG3EHGnNfZM= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.24.3 h1:pjgSJEvgJzv+e0frrqspeYdHz2JSW1KAGMXRe1FuQ1M= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.24.3/go.mod h1:dhRVzB/bmggoMEBhYXKZrTE+jqN34O4+webZSjGi12c= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0 h1:8rDRtPOu3ax8jEctw7G926JQlnFdhZZA4KJzQ+4ks3Q= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.34.0/go.mod h1:L5bVuO4PeXuDuMYZfL3IW69E6mz6PDCYpp6IKDlcLMA= github.com/aws/aws-sdk-go-v2/service/iam v1.27.1 h1:rPkEOnwPOVop34lpAlA4Dv6x67Ys3moXkPDvBfjgSSo= github.com/aws/aws-sdk-go-v2/service/iam v1.27.1/go.mod h1:qdQ8NUrhmXE80S54w+LrtHUY+1Fp7cQSRZbJUZKrAcU= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE= @@ -42,8 +42,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3 h1:uLq0BKatTmDzWa/Nu4WO0M1A github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.3/go.mod h1:b+qdhjnxj8GSR6t5YfphOffeoQSQ1KmpoVVuBn+PWxs= github.com/aws/aws-sdk-go-v2/service/sts v1.28.5 h1:J/PpTf/hllOjx8Xu9DMflff3FajfLxqM5+tepvVXmxg= github.com/aws/aws-sdk-go-v2/service/sts v1.28.5/go.mod h1:0ih0Z83YDH/QeQ6Ori2yGE2XvWYv/Xm+cZc01LC6oK0= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= diff --git a/pkg/aws/aws_client/client.go b/pkg/aws/aws_client/client.go index 4d4361c..651b897 100644 --- a/pkg/aws/aws_client/client.go +++ b/pkg/aws/aws_client/client.go @@ -17,7 +17,7 @@ import ( "github.com/openshift-online/ocm-common/pkg/log" - elb "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing" + elb "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2" "github.com/aws/aws-sdk-go-v2/service/route53" CON "github.com/openshift-online/ocm-common/pkg/aws/consts" diff --git a/pkg/aws/aws_client/elb.go b/pkg/aws/aws_client/elb.go index 0ca65ce..8fe1b06 100644 --- a/pkg/aws/aws_client/elb.go +++ b/pkg/aws/aws_client/elb.go @@ -3,25 +3,22 @@ package aws_client import ( "context" - elb "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing" + elb "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2" - elbtypes "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing/types" + elbtypes "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types" "github.com/openshift-online/ocm-common/pkg/log" ) -func (client *AWSClient) DescribeLoadBalancers(vpcID string) ([]elbtypes.LoadBalancerDescription, error) { +func (client *AWSClient) DescribeLoadBalancers(vpcID string) ([]elbtypes.LoadBalancer, error) { - listenedELB := []elbtypes.LoadBalancerDescription{} + listenedELB := []elbtypes.LoadBalancer{} input := &elb.DescribeLoadBalancersInput{} resp, err := client.ElbClient.DescribeLoadBalancers(context.TODO(), input) if err != nil { return nil, err } - // for _, lb := range resp.LoadBalancers { - for _, lb := range resp.LoadBalancerDescriptions { - - // if *lb.VpcId == vpcID { - if *lb.VPCId == vpcID { + for _, lb := range resp.LoadBalancers { + if *lb.VpcId == vpcID { log.LogInfo("Got load balancer %s", *lb.LoadBalancerName) listenedELB = append(listenedELB, lb) } @@ -30,12 +27,12 @@ func (client *AWSClient) DescribeLoadBalancers(vpcID string) ([]elbtypes.LoadBal return listenedELB, err } -func (client *AWSClient) DeleteELB(ELB elbtypes.LoadBalancerDescription) error { - log.LogInfo("Goint to delete ELB %s", *ELB.LoadBalancerName) +func (client *AWSClient) DeleteELB(ELB elbtypes.LoadBalancer) error { + log.LogInfo("Going to delete ELB %s", *ELB.LoadBalancerName) deleteELBInput := &elb.DeleteLoadBalancerInput{ // LoadBalancerArn: ELB.LoadBalancerArn, - LoadBalancerName: ELB.LoadBalancerName, + LoadBalancerArn: ELB.LoadBalancerArn, } _, err := client.ElbClient.DeleteLoadBalancer(context.TODO(), deleteELBInput) return err diff --git a/pkg/test/vpc_client/elb.go b/pkg/test/vpc_client/elb.go index 1d01732..aa4d70d 100644 --- a/pkg/test/vpc_client/elb.go +++ b/pkg/test/vpc_client/elb.go @@ -1,5 +1,7 @@ package vpc_client +import "time" + func (vpc *VPC) DeleteVPCELBs() error { elbs, err := vpc.AWSClient.DescribeLoadBalancers(vpc.VpcID) if err != nil { @@ -12,5 +14,8 @@ func (vpc *VPC) DeleteVPCELBs() error { return err } } + if len(elbs) != 0 { + time.Sleep(time.Minute) // sleep 1 minute to wait for the LBs totally deleted + } return nil } diff --git a/pkg/test/vpc_client/instance.go b/pkg/test/vpc_client/instance.go index 2b01b29..a568ceb 100644 --- a/pkg/test/vpc_client/instance.go +++ b/pkg/test/vpc_client/instance.go @@ -33,7 +33,9 @@ func (vpc *VPC) TerminateVPCInstances(nonClusterOnly bool) error { keyPairNames := []string{} for _, inst := range insts { needTermination = append(needTermination, *inst.InstanceId) - keyPairNames = append(keyPairNames, *inst.KeyName) + if inst.KeyName != nil { + keyPairNames = append(keyPairNames, *inst.KeyName) + } } err = vpc.AWSClient.TerminateInstances(needTermination, true, 20) if err != nil { diff --git a/pkg/test/vpc_client/security_group.go b/pkg/test/vpc_client/security_group.go index 3dec1d3..cb334cc 100644 --- a/pkg/test/vpc_client/security_group.go +++ b/pkg/test/vpc_client/security_group.go @@ -14,7 +14,8 @@ func (vpc *VPC) DeleteVPCSecurityGroups(customizedOnly bool) error { if customizedOnly { for _, sg := range securityGroups { for _, tag := range sg.Tags { - if *tag.Key == "Name" && (*tag.Value == con.ProxySecurityGroupName || *tag.Value == con.AdditionalSecurityGroupName) { + if *tag.Key == "Name" && (*tag.Value == con.ProxySecurityGroupName || + *tag.Value == con.AdditionalSecurityGroupName) { needCleanGroups = append(needCleanGroups, sg) } } diff --git a/pkg/test/vpc_client/vpc.go b/pkg/test/vpc_client/vpc.go index 656853b..d146c80 100644 --- a/pkg/test/vpc_client/vpc.go +++ b/pkg/test/vpc_client/vpc.go @@ -68,7 +68,7 @@ func (vpc *VPC) DeleteVPCChain(totalClean ...bool) error { return fmt.Errorf("got empty vpc ID to clean. Make sure you loaded it from AWS") } log.LogInfo("Going to delete the vpc and follow resources by ID: %s", vpcID) - log.LogInfo("Going to terminate proxy instances if existing") + log.LogInfo("Going to terminate proxy instances if exists") err := vpc.TerminateVPCInstances(true) if err != nil { log.LogError("Delete vpc instances meets error: %s", err.Error()) @@ -105,11 +105,22 @@ func (vpc *VPC) DeleteVPCChain(totalClean ...bool) error { } if len(totalClean) == 1 && totalClean[0] { log.LogInfo("Got total clean set, going to delete other possible resource leak") + // Delete leak instances + log.LogInfo("Going to terminate the leak instances if exist") + err = vpc.TerminateVPCInstances(false) + if err != nil { + log.LogError("Terminate vpc instances meets error: %s", err.Error()) + return err + } + + // Delete leak ELBs err = vpc.DeleteVPCELBs() if err != nil { log.LogError("Delete vpc load balancers meets error: %s", err.Error()) return err } + + // Delete leak security groups err = vpc.DeleteVPCSecurityGroups(false) if err != nil { log.LogError("Delete vpc security groups meets error: %s", err.Error())