From c9c33dd785583d227d054922627c51336059f302 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Sun, 16 Jul 2023 16:33:55 +0200 Subject: [PATCH 1/9] adding code for removing custom origin request policies --- resources/cloudfront-origin-request-policy.go | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 resources/cloudfront-origin-request-policy.go diff --git a/resources/cloudfront-origin-request-policy.go b/resources/cloudfront-origin-request-policy.go new file mode 100644 index 00000000..2ca621b0 --- /dev/null +++ b/resources/cloudfront-origin-request-policy.go @@ -0,0 +1,68 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloudfront" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type CloudFrontOriginRequestPolicy struct { + svc *cloudfront.CloudFront + ID *string +} + +func init() { + register("OriginRequestPolicy", ListCloudFrontOriginRequestPolicies) +} + +func ListCloudFrontOriginRequestPolicies(sess *session.Session) ([]Resource, error) { + svc := cloudfront.New(sess) + resources := []Resource{} + params := &cloudfront.ListOriginRequestPoliciesInput{} + + for { + resp, err := svc.ListOriginRequestPolicies(params) + if err != nil { + return nil, err + } + + for _, item := range resp.OriginRequestPolicyList.Items { + if *item.Type == "custom" { + resources = append(resources, &CloudFrontOriginRequestPolicy{ + svc: svc, + ID: item.OriginRequestPolicy.Id, + }) + } + } + + if resp.OriginRequestPolicyList.NextMarker == nil { + break + } + + params.Marker = resp.OriginRequestPolicyList.NextMarker + } + + return resources, nil +} + +func (f *CloudFrontOriginRequestPolicy) Remove() error { + resp, err := f.svc.GetOriginRequestPolicy(&cloudfront.GetOriginRequestPolicyInput{ + Id: f.ID, + }) + if err != nil { + return err + } + + _, err = f.svc.DeleteOriginRequestPolicy(&cloudfront.DeleteOriginRequestPolicyInput{ + Id: f.ID, + IfMatch: resp.ETag, + }) + + return err +} + +func (f *CloudFrontOriginRequestPolicy) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("ID", f.ID) + return properties +} From 75f18ff9c53a9ae5d1660b80427cd8ca51781283 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Mon, 17 Jul 2023 16:06:25 +0200 Subject: [PATCH 2/9] rename resource --- go.mod | 6 +++--- go.sum | 14 +++++++------- resources/cloudfront-origin-request-policy.go | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index e0b410cf..dffa3baf 100644 --- a/go.mod +++ b/go.mod @@ -27,8 +27,8 @@ require ( github.com/mattn/go-isatty v0.0.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/tools v0.11.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index e679694a..399b9a7b 100644 --- a/go.sum +++ b/go.sum @@ -62,15 +62,15 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -88,8 +88,8 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -102,8 +102,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/resources/cloudfront-origin-request-policy.go b/resources/cloudfront-origin-request-policy.go index 2ca621b0..13e24718 100644 --- a/resources/cloudfront-origin-request-policy.go +++ b/resources/cloudfront-origin-request-policy.go @@ -12,7 +12,7 @@ type CloudFrontOriginRequestPolicy struct { } func init() { - register("OriginRequestPolicy", ListCloudFrontOriginRequestPolicies) + register("CloudFrontOriginRequestPolicy", ListCloudFrontOriginRequestPolicies) } func ListCloudFrontOriginRequestPolicies(sess *session.Session) ([]Resource, error) { From ff6a0eef73813f95f7d196b0bb5cd6351399ed91 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Tue, 18 Jul 2023 08:30:48 +0200 Subject: [PATCH 3/9] test for replication --- resources/secretsmanager-secrets.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/resources/secretsmanager-secrets.go b/resources/secretsmanager-secrets.go index a0f61525..9a7b6d2a 100644 --- a/resources/secretsmanager-secrets.go +++ b/resources/secretsmanager-secrets.go @@ -50,13 +50,25 @@ func ListSecretsManagerSecrets(sess *session.Session) ([]Resource, error) { } func (f *SecretsManagerSecret) Remove() error { + // wanna do something about replicated secrets here + RemoveReplicaRegions := []*string{} + wildcard := "*" - _, err := f.svc.DeleteSecret(&secretsmanager.DeleteSecretInput{ + _, RemoveRegionErr := f.svc.RemoveRegionsFromReplication(&secretsmanager.RemoveRegionsFromReplicationInput{ + SecretId: f.ARN, + RemoveReplicaRegions: append(RemoveReplicaRegions, &wildcard), + }) + + if RemoveRegionErr != nil { + return RemoveRegionErr + } + + _, DeleteSecretErr := f.svc.DeleteSecret(&secretsmanager.DeleteSecretInput{ SecretId: f.ARN, ForceDeleteWithoutRecovery: aws.Bool(true), }) - return err + return DeleteSecretErr } func (f *SecretsManagerSecret) Properties() types.Properties { From c4d9498473959ae35c978ee700da71e5e28082f7 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Tue, 18 Jul 2023 09:01:47 +0200 Subject: [PATCH 4/9] revert secretsmanager change --- resources/secretsmanager-secrets.go | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/resources/secretsmanager-secrets.go b/resources/secretsmanager-secrets.go index 9a7b6d2a..8460d7d1 100644 --- a/resources/secretsmanager-secrets.go +++ b/resources/secretsmanager-secrets.go @@ -50,25 +50,12 @@ func ListSecretsManagerSecrets(sess *session.Session) ([]Resource, error) { } func (f *SecretsManagerSecret) Remove() error { - // wanna do something about replicated secrets here - RemoveReplicaRegions := []*string{} - wildcard := "*" - - _, RemoveRegionErr := f.svc.RemoveRegionsFromReplication(&secretsmanager.RemoveRegionsFromReplicationInput{ - SecretId: f.ARN, - RemoveReplicaRegions: append(RemoveReplicaRegions, &wildcard), - }) - - if RemoveRegionErr != nil { - return RemoveRegionErr - } - - _, DeleteSecretErr := f.svc.DeleteSecret(&secretsmanager.DeleteSecretInput{ + _, err := f.svc.DeleteSecret(&secretsmanager.DeleteSecretInput{ SecretId: f.ARN, ForceDeleteWithoutRecovery: aws.Bool(true), }) - return DeleteSecretErr + return err } func (f *SecretsManagerSecret) Properties() types.Properties { From 1d9fb357f2a41027b99abcc39be03a8a99a4f0c2 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Tue, 18 Jul 2023 09:08:29 +0200 Subject: [PATCH 5/9] undo this --- resources/secretsmanager-secrets.go | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/secretsmanager-secrets.go b/resources/secretsmanager-secrets.go index 8460d7d1..a0f61525 100644 --- a/resources/secretsmanager-secrets.go +++ b/resources/secretsmanager-secrets.go @@ -50,6 +50,7 @@ func ListSecretsManagerSecrets(sess *session.Session) ([]Resource, error) { } func (f *SecretsManagerSecret) Remove() error { + _, err := f.svc.DeleteSecret(&secretsmanager.DeleteSecretInput{ SecretId: f.ARN, ForceDeleteWithoutRecovery: aws.Bool(true), From 553cce18b0cc2a289683192e9b76545c2c032079 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Tue, 18 Jul 2023 09:10:03 +0200 Subject: [PATCH 6/9] revert mod and sum changes --- go.mod | 6 +++--- go.sum | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index dffa3baf..e0b410cf 100644 --- a/go.mod +++ b/go.mod @@ -27,8 +27,8 @@ require ( github.com/mattn/go-isatty v0.0.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/tools v0.11.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index 399b9a7b..e679694a 100644 --- a/go.sum +++ b/go.sum @@ -62,15 +62,15 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -88,8 +88,8 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -102,8 +102,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 5ca24cc7a30174270403e92994b39acf38589fc3 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Wed, 19 Jul 2023 12:00:16 +0200 Subject: [PATCH 7/9] add resources for redshift scheduled actions --- resources/redshift-scheduled-action.go | 71 ++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 resources/redshift-scheduled-action.go diff --git a/resources/redshift-scheduled-action.go b/resources/redshift-scheduled-action.go new file mode 100644 index 00000000..a46fd79d --- /dev/null +++ b/resources/redshift-scheduled-action.go @@ -0,0 +1,71 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/redshift" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type RedshiftScheduledAction struct { + svc *redshift.Redshift + scheduledActionName *string +} + +func init() { + register("RedshiftScheduledAction", ListRedshiftScheduledActions) +} + +func ListRedshiftScheduledActions(sess *session.Session) ([]Resource, error) { + svc := redshift.New(sess) + resources := []Resource{} + + params := &redshift.DescribeScheduledActionsInput{} + + for { + resp, err := svc.DescribeScheduledActions(params) + if err != nil { + return nil, err + } + + for _, item := range resp.ScheduledActions { + resources = append(resources, &RedshiftScheduledAction{ + svc: svc, + scheduledActionName: item.ScheduledActionName, + }) + } + + if resp.Marker == nil { + break + } + + params.Marker = resp.Marker + } + + return resources, nil +} + +// func (f *RedshiftScheduledAction) Properties() types.Properties { +// properties := types.NewProperties(). +// Set("CreatedTime", f.snapshot.SnapshotCreateTime) + +// for _, tag := range f.snapshot.Tags { +// properties.SetTag(tag.Key, tag.Value) +// } + +// return properties +// } + +func (f *RedshiftScheduledAction) Remove() error { + + _, err := f.svc.DeleteScheduledAction(&redshift.DeleteScheduledActionInput{ + ScheduledActionName: f.scheduledActionName, + }) + + return err +} + +func (f *RedshiftScheduledAction) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("scheduledActionName", f.scheduledActionName) + return properties +} From 2a5509001f3070065d60533c9cd993d6d36e51c3 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Mon, 24 Jul 2023 13:47:57 +0200 Subject: [PATCH 8/9] remove cloudfront resource --- resources/cloudfront-origin-request-policy.go | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 resources/cloudfront-origin-request-policy.go diff --git a/resources/cloudfront-origin-request-policy.go b/resources/cloudfront-origin-request-policy.go deleted file mode 100644 index 13e24718..00000000 --- a/resources/cloudfront-origin-request-policy.go +++ /dev/null @@ -1,68 +0,0 @@ -package resources - -import ( - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/cloudfront" - "github.com/rebuy-de/aws-nuke/v2/pkg/types" -) - -type CloudFrontOriginRequestPolicy struct { - svc *cloudfront.CloudFront - ID *string -} - -func init() { - register("CloudFrontOriginRequestPolicy", ListCloudFrontOriginRequestPolicies) -} - -func ListCloudFrontOriginRequestPolicies(sess *session.Session) ([]Resource, error) { - svc := cloudfront.New(sess) - resources := []Resource{} - params := &cloudfront.ListOriginRequestPoliciesInput{} - - for { - resp, err := svc.ListOriginRequestPolicies(params) - if err != nil { - return nil, err - } - - for _, item := range resp.OriginRequestPolicyList.Items { - if *item.Type == "custom" { - resources = append(resources, &CloudFrontOriginRequestPolicy{ - svc: svc, - ID: item.OriginRequestPolicy.Id, - }) - } - } - - if resp.OriginRequestPolicyList.NextMarker == nil { - break - } - - params.Marker = resp.OriginRequestPolicyList.NextMarker - } - - return resources, nil -} - -func (f *CloudFrontOriginRequestPolicy) Remove() error { - resp, err := f.svc.GetOriginRequestPolicy(&cloudfront.GetOriginRequestPolicyInput{ - Id: f.ID, - }) - if err != nil { - return err - } - - _, err = f.svc.DeleteOriginRequestPolicy(&cloudfront.DeleteOriginRequestPolicyInput{ - Id: f.ID, - IfMatch: resp.ETag, - }) - - return err -} - -func (f *CloudFrontOriginRequestPolicy) Properties() types.Properties { - properties := types.NewProperties() - properties.Set("ID", f.ID) - return properties -} From 6c050441801506dfb2b456805fc7c17b3bbace66 Mon Sep 17 00:00:00 2001 From: Mike Schouw Date: Mon, 24 Jul 2023 13:48:43 +0200 Subject: [PATCH 9/9] clean up --- resources/redshift-scheduled-action.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/resources/redshift-scheduled-action.go b/resources/redshift-scheduled-action.go index a46fd79d..e98b1569 100644 --- a/resources/redshift-scheduled-action.go +++ b/resources/redshift-scheduled-action.go @@ -44,17 +44,6 @@ func ListRedshiftScheduledActions(sess *session.Session) ([]Resource, error) { return resources, nil } -// func (f *RedshiftScheduledAction) Properties() types.Properties { -// properties := types.NewProperties(). -// Set("CreatedTime", f.snapshot.SnapshotCreateTime) - -// for _, tag := range f.snapshot.Tags { -// properties.SetTag(tag.Key, tag.Value) -// } - -// return properties -// } - func (f *RedshiftScheduledAction) Remove() error { _, err := f.svc.DeleteScheduledAction(&redshift.DeleteScheduledActionInput{