Skip to content

Commit

Permalink
feat(aws): Add AWS RAM resources (#3961)
Browse files Browse the repository at this point in the history
Add AWS RAM resources (#1984)
  • Loading branch information
candiduslynx committed Nov 10, 2022
1 parent f0cdeb4 commit 0c16add
Show file tree
Hide file tree
Showing 52 changed files with 1,849 additions and 5 deletions.
276 changes: 276 additions & 0 deletions plugins/source/aws/client/mocks/ram.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions plugins/source/aws/client/services.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions plugins/source/aws/client/services/ram.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions plugins/source/aws/codegen/main.go
Expand Up @@ -69,6 +69,7 @@ func generateResources() ([]*recipes.Resource, error) {
resources = append(resources, recipes.NeptuneResources()...)
resources = append(resources, recipes.OrganizationsResources()...)
resources = append(resources, recipes.QLDBResources()...)
resources = append(resources, recipes.RAMResources()...)
resources = append(resources, recipes.RDSResources()...)
resources = append(resources, recipes.RedshiftResources()...)
resources = append(resources, recipes.ResourceGroupsResources()...)
Expand Down
25 changes: 25 additions & 0 deletions plugins/source/aws/codegen/recipes/base.go
Expand Up @@ -28,17 +28,24 @@ type Resource struct {
SkipFields []string
Description string
ExtraColumns []codegen.ColumnDefinition
PKColumns []string
Table *codegen.TableDefinition
Multiplex string
PreResourceResolver string
PostResourceResolver string
Relations []string
UnwrapEmbeddedStructs bool

// NameTransformer custom name transformer for resource
NameTransformer func(field reflect.StructField) (string, error)

// Used for generating the resolver and mock tests.
// --------------------------------
ShouldGenerateResolverAndMockTest bool
ResolverAndMockTestTemplate string

// To be used in list/paginator resolver
MaxResults int
}

//go:embed templates/resolver_and_mock_test/*/*.go.tpl
Expand Down Expand Up @@ -125,12 +132,16 @@ func (r *Resource) Generate() error {
opts := []codegen.TableOption{
codegen.WithSkipFields(r.SkipFields),
codegen.WithExtraColumns(r.ExtraColumns),
codegen.WithPKColumns(r.PKColumns...),
codegen.WithNameTransformer(awsNameTransformer),
codegen.WithResolverTransformer(awsResolverTransformer),
}
if r.UnwrapEmbeddedStructs {
opts = append(opts, codegen.WithUnwrapAllEmbeddedStructs())
}
if r.NameTransformer != nil {
opts = append(opts, codegen.WithNameTransformer(r.NameTransformer))
}
name := fmt.Sprintf("aws_%s_%s", r.Service, r.SubService)
if r.Name != "" {
name = r.Name
Expand Down Expand Up @@ -283,3 +294,17 @@ func (r Resource) CloudQueryServiceName() string {
csr := caser.New()
return csr.ToPascal(r.Service)
}

// CreateReplaceTransformer allows overriding column names
func CreateReplaceTransformer(replace map[string]string) func(field reflect.StructField) (string, error) {
return func(field reflect.StructField) (string, error) {
name, err := codegen.DefaultNameTransformer(field)
if err != nil {
return "", err
}
for k, v := range replace {
name = strings.ReplaceAll(name, k, v)
}
return name, nil
}
}

0 comments on commit 0c16add

Please sign in to comment.