Skip to content

Commit

Permalink
add new CFN resource types
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Carter committed Nov 23, 2020
1 parent 86791f1 commit 52f8a85
Show file tree
Hide file tree
Showing 12 changed files with 337 additions and 2 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/servicediscovery v0.29.0
github.com/aws/aws-sdk-go-v2/service/ses v0.29.0
github.com/aws/aws-sdk-go-v2/service/sfn v0.29.0
github.com/aws/aws-sdk-go-v2/service/signer v0.29.0
github.com/aws/aws-sdk-go-v2/service/sns v0.29.0
github.com/aws/aws-sdk-go-v2/service/sqs v0.29.0
github.com/aws/aws-sdk-go-v2/service/ssm v0.29.0
Expand Down
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ github.com/aws/aws-sdk-go-v2/service/ses v0.29.0 h1:ytUMd3eJNs7j8zBmKmRpsVFkE75K
github.com/aws/aws-sdk-go-v2/service/ses v0.29.0/go.mod h1:F7uPgAARIG7nK5+lLzBOQfZ11lI2V38AsUQG84B6kCI=
github.com/aws/aws-sdk-go-v2/service/sfn v0.29.0 h1:PIzooSmUAm6QLN8/9yAKKXSU7kT4ZjjXRKXuJ3bb0QU=
github.com/aws/aws-sdk-go-v2/service/sfn v0.29.0/go.mod h1:JjiXTPhJgaaD+iKT7qv2KczbNuasqulYfStT03jX9Gg=
github.com/aws/aws-sdk-go-v2/service/signer v0.29.0 h1:EokOEM1ET0voYMfVs5g+dT+f/pWrP+JJvA/ruooyXPU=
github.com/aws/aws-sdk-go-v2/service/signer v0.29.0/go.mod h1:QzLpdTzhBazJz529b51MRVaWg7MS108yyYMSrhk/2Rk=
github.com/aws/aws-sdk-go-v2/service/sns v0.29.0 h1:NyCT8xzu8qwFIbcgA3jBzHlwn6sxGMPJRpvW6G0k8do=
github.com/aws/aws-sdk-go-v2/service/sns v0.29.0/go.mod h1:HTOOkUYXzZMwOkqc8KRYOKLmg8laYB9Tv7/KgXMNsLo=
github.com/aws/aws-sdk-go-v2/service/sqs v0.29.0 h1:tNUvLwVXDkJB6esfAcYhW68P/q12Vt8B0GgjbmpWubQ=
Expand Down Expand Up @@ -192,6 +194,7 @@ github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
58 changes: 58 additions & 0 deletions lister/cloudfront_keygroup.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package lister

import (
"sync"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/cloudfront"
"github.com/trek10inc/awsets/context"
"github.com/trek10inc/awsets/resource"
)

var listCloudfrontKeyGroupOnce sync.Once

type AWSCloudfrontKeyGroup struct {
}

func init() {
i := AWSCloudfrontKeyGroup{}
listers = append(listers, i)
}

func (l AWSCloudfrontKeyGroup) Types() []resource.ResourceType {
return []resource.ResourceType{resource.CloudFrontKeyGroup}
}

func (l AWSCloudfrontKeyGroup) List(ctx context.AWSetsCtx) (*resource.Group, error) {
svc := cloudfront.NewFromConfig(ctx.AWSCfg)

rg := resource.NewGroup()
var outerErr error

listCloudfrontKeyGroupOnce.Do(func() {
err := Paginator(func(nt *string) (*string, error) {
res, err := svc.ListKeyGroups(ctx.Context, &cloudfront.ListKeyGroupsInput{
MaxItems: aws.String("100"),
Marker: nt,
})
if err != nil {
return nil, err
}
if res.KeyGroupList == nil {
return nil, nil
}
for _, item := range res.KeyGroupList.Items {
kg := item.KeyGroup
r := resource.NewGlobal(ctx, resource.CloudFrontKeyGroup, kg.Id, kg.Id, kg)

rg.AddResource(r)
}
return res.KeyGroupList.NextMarker, nil
})
if err != nil {
outerErr = err
}
})

return rg, outerErr
}
57 changes: 57 additions & 0 deletions lister/cloudfront_publickey.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package lister

import (
"sync"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/cloudfront"
"github.com/trek10inc/awsets/context"
"github.com/trek10inc/awsets/resource"
)

var listCloudfrontPublicKeyOnce sync.Once

type AWSCloudfrontPublicKey struct {
}

func init() {
i := AWSCloudfrontPublicKey{}
listers = append(listers, i)
}

func (l AWSCloudfrontPublicKey) Types() []resource.ResourceType {
return []resource.ResourceType{resource.CloudFrontPublicKey}
}

func (l AWSCloudfrontPublicKey) List(ctx context.AWSetsCtx) (*resource.Group, error) {
svc := cloudfront.NewFromConfig(ctx.AWSCfg)

rg := resource.NewGroup()
var outerErr error

listCloudfrontPublicKeyOnce.Do(func() {
err := Paginator(func(nt *string) (*string, error) {
res, err := svc.ListPublicKeys(ctx.Context, &cloudfront.ListPublicKeysInput{
MaxItems: aws.String("100"),
Marker: nt,
})
if err != nil {
return nil, err
}
if res.PublicKeyList == nil {
return nil, nil
}
for _, item := range res.PublicKeyList.Items {
r := resource.NewGlobal(ctx, resource.CloudFrontPublicKey, item.Id, item.Name, item)

rg.AddResource(r)
}
return res.PublicKeyList.NextMarker, nil
})
if err != nil {
outerErr = err
}
})

return rg, outerErr
}
1 change: 1 addition & 0 deletions lister/iot_topicrule.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func (l AWSIoTTopicRule) Types() []resource.ResourceType {
func (l AWSIoTTopicRule) List(ctx context.AWSetsCtx) (*resource.Group, error) {

svc := iot.NewFromConfig(ctx.AWSCfg)

rg := resource.NewGroup()
err := Paginator(func(nt *string) (*string, error) {
res, err := svc.ListTopicRules(ctx.Context, &iot.ListTopicRulesInput{
Expand Down
47 changes: 47 additions & 0 deletions lister/iot_topicruledestination.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package lister

import (
"fmt"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/iot"
"github.com/trek10inc/awsets/arn"
"github.com/trek10inc/awsets/context"
"github.com/trek10inc/awsets/resource"
)

type AWSIoTTopicRuleDestination struct {
}

func init() {
i := AWSIoTTopicRuleDestination{}
listers = append(listers, i)
}

func (l AWSIoTTopicRuleDestination) Types() []resource.ResourceType {
return []resource.ResourceType{resource.IotTopicRuleDestination}
}

func (l AWSIoTTopicRuleDestination) List(ctx context.AWSetsCtx) (*resource.Group, error) {

svc := iot.NewFromConfig(ctx.AWSCfg)

rg := resource.NewGroup()
err := Paginator(func(nt *string) (*string, error) {
res, err := svc.ListTopicRuleDestinations(ctx.Context, &iot.ListTopicRuleDestinationsInput{
MaxResults: aws.Int32(100),
NextToken: nt,
})
if err != nil {
return nil, fmt.Errorf("failed to list iot topic rule destinations: %w", err)
}
for _, destination := range res.DestinationSummaries {
dArn := arn.ParseP(destination.Arn)
r := resource.New(ctx, resource.IotTopicRuleDestination, dArn.ResourceId, dArn.ResourceId, destination)

rg.AddResource(r)
}
return res.NextToken, nil
})
return rg, err
}
44 changes: 44 additions & 0 deletions lister/signer_signingprofile.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package lister

import (
"github.com/aws/aws-sdk-go-v2/aws"

"github.com/aws/aws-sdk-go-v2/service/signer"
"github.com/trek10inc/awsets/arn"
"github.com/trek10inc/awsets/context"
"github.com/trek10inc/awsets/resource"
)

type AWSSignerSigningProfile struct {
}

func init() {
i := AWSSignerSigningProfile{}
listers = append(listers, i)
}

func (l AWSSignerSigningProfile) Types() []resource.ResourceType {
return []resource.ResourceType{resource.SignerSigningProfile}
}

func (l AWSSignerSigningProfile) List(ctx context.AWSetsCtx) (*resource.Group, error) {
svc := signer.NewFromConfig(ctx.AWSCfg)
rg := resource.NewGroup()
err := Paginator(func(nt *string) (*string, error) {
res, err := svc.ListSigningProfiles(ctx.Context, &signer.ListSigningProfilesInput{
MaxResults: aws.Int32(100),
NextToken: nt,
})
if err != nil {
return nil, err
}
for _, v := range res.Profiles {
profileArn := arn.ParseP(v.Arn)
r := resource.New(ctx, resource.SignerSigningProfile, profileArn.ResourceId, v.ProfileName, v)

rg.AddResource(r)
}
return res.NextToken, nil
})
return rg, err
}
Loading

0 comments on commit 52f8a85

Please sign in to comment.