Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Commit

Permalink
Merge pull request #7 from muvaf/externalnamefix
Browse files Browse the repository at this point in the history
external name: use identifierfromprovider as provider-wide default
  • Loading branch information
muvaf authored Nov 19, 2021
2 parents 267a966 + 91cf982 commit 7ec7f23
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 2 deletions.
19 changes: 19 additions & 0 deletions config/compute/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo

p.AddResourceConfigurator("google_compute_managed_ssl_certificate", func(r *config.Resource) {
r.Kind = "ManagedSSLCertificate"
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -30,6 +31,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
})

p.AddResourceConfigurator("google_compute_subnetwork", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -49,6 +51,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
})

p.AddResourceConfigurator("google_compute_address", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -70,6 +73,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
})

p.AddResourceConfigurator("google_compute_firewall", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -85,6 +89,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
})

p.AddResourceConfigurator("google_compute_router", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -104,6 +109,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
})

p.AddResourceConfigurator("google_compute_router_nat", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand Down Expand Up @@ -135,6 +141,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
// elements configured as nil, defaulting to map[string]string:
r.TerraformResource.Schema["metadata"].Elem = schema.TypeString

r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -155,6 +162,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
Schema["initialize_params"].Elem.(*schema.Resource).
Schema["labels"].Elem = schema.TypeString

r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand Down Expand Up @@ -189,6 +197,7 @@ func Configure(p *config.Provider) { //nolint: gocyclo
Schema["labels"].Elem = schema.TypeString
r.TerraformResource.Schema["metadata"].Elem = schema.TypeString

r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
Expand All @@ -211,4 +220,14 @@ func Configure(p *config.Provider) { //nolint: gocyclo

r.UseAsync = true
})

p.AddResourceConfigurator("google_compute_network", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
// projects/{{project}}/global/networks/{{name}}
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
return fmt.Sprintf("projects/%s/global/networks/%s", project, externalName), err
}
})
}
9 changes: 8 additions & 1 deletion config/overrides.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ package config
import (
"strings"

tjconfig "github.com/crossplane-contrib/terrajet/pkg/config"
"github.com/iancoleman/strcase"

tjconfig "github.com/crossplane-contrib/terrajet/pkg/config"

"github.com/crossplane-contrib/provider-jet-gcp/config/accessapproval"
"github.com/crossplane-contrib/provider-jet-gcp/config/cloudplatform"
)
Expand Down Expand Up @@ -52,3 +53,9 @@ func groupOverrides() tjconfig.ResourceOption { //nolint: gocyclo
}
}
}

func externalNameConfig() tjconfig.ResourceOption {
return func(r *tjconfig.Resource) {
r.ExternalName = tjconfig.IdentifierFromProvider
}
}
5 changes: 4 additions & 1 deletion config/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ var includeList = []string{
func GetProvider() *tjconfig.Provider {
resourceMap := tf.Provider().ResourcesMap
pc := tjconfig.NewProvider(resourceMap, resourcePrefix, modulePath,
tjconfig.WithDefaultResourceFn(DefaultResource(groupOverrides())),
tjconfig.WithDefaultResourceFn(DefaultResource(
groupOverrides(),
externalNameConfig(),
)),
tjconfig.WithRootGroup("gcp.jet.crossplane.io"),
tjconfig.WithShortName("gcpjet"),
// Comment out the following line to generate all resources.
Expand Down
10 changes: 10 additions & 0 deletions config/storage/config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package storage

import (
"context"
"path/filepath"

"github.com/crossplane-contrib/terrajet/pkg/config"

"github.com/crossplane-contrib/provider-jet-gcp/config/common"
)

// Configure configures individual resources by adding custom
Expand All @@ -16,5 +21,10 @@ func Configure(p *config.Provider) {

p.AddResourceConfigurator("google_storage_bucket", func(r *config.Resource) {
r.ExternalName = config.NameAsIdentifier
r.ExternalName.GetExternalNameFn = common.GetNameFromFullyQualifiedID
r.ExternalName.GetIDFn = func(_ context.Context, externalName string, parameters map[string]interface{}, providerConfig map[string]interface{}) (string, error) {
project, err := common.GetField(providerConfig, common.KeyProject)
return filepath.Join(project, externalName), err
}
})
}

0 comments on commit 7ec7f23

Please sign in to comment.