Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
197 changes: 197 additions & 0 deletions mmv1/third_party/tgc/resource_converters.go

Large diffs are not rendered by default.

16 changes: 15 additions & 1 deletion mmv1/third_party/tgc/resource_converters.go.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
"google_compute_global_address": {compute.ResourceConverterComputeGlobalAddress()},
"google_compute_global_forwarding_rule": {compute.ResourceConverterComputeGlobalForwardingRule()},
"google_compute_health_check": {compute.ResourceConverterComputeHealthCheck()},
"google_compute_image": {compute.ResourceConverterComputeImage()},
"google_compute_instance": {compute.ResourceConverterComputeInstance()},
"google_compute_instance_group": {compute.ResourceConverterComputeInstanceGroup()},
"google_compute_network": {compute.ResourceConverterComputeNetwork()},
Expand Down Expand Up @@ -133,6 +134,10 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
"google_storage_bucket_iam_binding": {storage.ResourceConverterStorageBucketIamBinding()},
"google_storage_bucket_iam_member": {storage.ResourceConverterStorageBucketIamMember()},
"google_compute_node_group": {compute.ResourceConverterComputeNodeGroup()},
"google_logging_billing_account_sink": {logging.ResourceConverterLoggingBillingAccountSink()},
"google_logging_folder_sink": {logging.ResourceConverterLoggingFolderSink()},
"google_logging_organization_sink": {logging.ResourceConverterLoggingOrganizationSink()},
"google_logging_project_sink": {logging.ResourceConverterLoggingProjectSink()},
"google_logging_folder_bucket_config": {logging.ResourceConverterLogFolderBucket()},
"google_app_engine_standard_app_version": {appengine.ResourceAppEngineStandardAppVersion()},
"google_logging_organization_bucket_config": {logging.ResourceConverterLogOrganizationBucket()},
Expand All @@ -141,6 +146,7 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
"google_cloud_tasks_queue": {cloudtasks.ResourceConverterCloudTasksQueue()},
"google_pubsub_topic": {pubsub.ResourceConverterPubsubTopic()},
"google_kms_crypto_key": {kms.ResourceConverterKMSCryptoKey()},
"google_kms_crypto_key_version": {kms.ResourceConverterCloudkmsCryptoKeyVersion()},
"google_kms_key_ring": {kms.ResourceConverterKMSKeyRing()},
"google_filestore_instance": {filestore.ResourceConverterFilestoreInstance()},
"google_access_context_manager_service_perimeter": {accesscontextmanager.ResourceConverterAccessContextManagerServicePerimeter()},
Expand All @@ -152,7 +158,13 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
"google_cloudfunctions_function": {cloudfunctions.ResourceConverterCloudFunctionsCloudFunction()},
"google_monitoring_notification_channel": {monitoring.ResourceConverterMonitoringNotificationChannel()},
"google_monitoring_alert_policy": {monitoring.ResourceConverterMonitoringAlertPolicy()},
"google_vertex_ai_dataset": {vertexai.ResourceConverterVertexAIDataset()},
"google_notebooks_instance": {notebooks.ResourceConverterNotebooksInstance()},
"google_vertex_ai_dataset": {vertexai.ResourceConverterVertexAIDataset()},
"google_vmwareengine_cluster": {vmwareengine.ResourceConverterVmwareengineCluster()},
"google_vmwareengine_external_address": {vmwareengine.ResourceConverterVmwareengineExternalAddress()},
"google_vmwareengine_network_policy": {vmwareengine.ResourceConverterVmwareengineNetworkPolicy()},
"google_vmwareengine_private_cloud": {vmwareengine.ResourceConverterVmwareenginePrivateCloud()},
"google_vmwareengine_network_peering": {vmwareengine.ResourceConverterVmwareengineNetworkPeering()},
{{- range $object := $.IamResources }}
{{- if $object.IamClassName }}
"{{ $object.TerraformName }}_iam_policy": { {{- $object.IamClassName }}IamPolicy()},
Expand Down Expand Up @@ -189,6 +201,8 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
"google_project_iam_member": {resourcemanager.ResourceConverterProjectIamMember()},
"google_project_iam_custom_role": {resourcemanager.ResourceConverterProjectIAMCustomRole()},
"google_organization_iam_custom_role": {resourcemanager.ResourceConverterOrganizationIAMCustomRole()},
"google_iam_workload_identity_pool": {iam.ResourceConverterIamWorkloadIdentityPool()},
"google_iam_workload_identity_pool_provider": {iam.ResourceConverterIamWorkloadIdentityPoolProvider()},
"google_vpc_access_connector": {vpcaccess.ResourceConverterVPCAccessConnector()},
"google_logging_metric": {logging.ResourceConverterLoggingMetric()},
"google_service_account": {resourcemanager.ResourceConverterServiceAccount()},
Expand Down
69 changes: 69 additions & 0 deletions mmv1/third_party/tgc/services/compute/compute_image.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package compute

import (
"github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
)

const ComputeImageAssetType string = "compute.googleapis.com/Image"

func ResourceConverterComputeImage() cai.ResourceConverter {
return cai.ResourceConverter{
AssetType: ComputeImageAssetType,
Convert: GetComputeImageCaiObject,
}
}

func GetComputeImageCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) {
name, err := cai.ReplaceVars(d, config, "//compute.googleapis.com/projects/{{project}}/global/images/{{name}}")
if err != nil {
return nil, err
}

resource, err := GetComputeImageApiObject(d, config)
if err != nil {
return nil, err
}

return []cai.Asset{{
Name: name,
Type: ComputeImageAssetType,
Resource: &cai.AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest",
DiscoveryName: "Image",
Data: resource,
},
}}, nil
}

func GetComputeImageApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
if v, ok := d.GetOk("name"); ok {
obj["name"] = v.(string)
}
if v, ok := d.GetOk("description"); ok {
obj["description"] = v.(string)
}
if v, ok := d.GetOk("family"); ok {
obj["family"] = v.(string)
}
if v, ok := d.GetOk("disk_size_gb"); ok {
obj["diskSizeGb"] = v.(int64)
}
if v, ok := d.GetOk("archive_size_bytes"); ok {
obj["archiveSizeBytes"] = v.(int64)
}
if v, ok := d.GetOk("raw_disk"); ok {
if l := v.([]interface{}); len(l) > 0 && l[0] != nil {
rawDisk := l[0].(map[string]interface{})
rd := make(map[string]interface{})
if source, ok := rawDisk["source"]; ok {
rd["source"] = source.(string)
}
obj["rawDisk"] = rd
}
}
return obj, nil
}
53 changes: 53 additions & 0 deletions mmv1/third_party/tgc/services/iam/iam_workload_identity_pool.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package iam

import (
"github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
)

const IamWorkloadIdentityPoolAssetType string = "iam.googleapis.com/WorkloadIdentityPool"

func ResourceConverterIamWorkloadIdentityPool() cai.ResourceConverter {
return cai.ResourceConverter{
AssetType: IamWorkloadIdentityPoolAssetType,
Convert: GetIamWorkloadIdentityPoolCaiObject,
}
}

func GetIamWorkloadIdentityPoolCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) {
name, err := cai.ReplaceVars(d, config, "//iam.googleapis.com/projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}")
if err != nil {
return nil, err
}

resource, err := GetIamWorkloadIdentityPoolApiObject(d, config)
if err != nil {
return nil, err
}

return []cai.Asset{{
Name: name,
Type: IamWorkloadIdentityPoolAssetType,
Resource: &cai.AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://iam.googleapis.com/$discovery/rest?version=v1",
DiscoveryName: "WorkloadIdentityPool",
Data: resource,
},
}}, nil
}

func GetIamWorkloadIdentityPoolApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
if v, ok := d.GetOk("display_name"); ok {
obj["displayName"] = v.(string)
}
if v, ok := d.GetOk("description"); ok {
obj["description"] = v.(string)
}
if v, ok := d.GetOk("disabled"); ok {
obj["disabled"] = v.(bool)
}
return obj, nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package iam

import (
"github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
)

const IamWorkloadIdentityPoolProviderAssetType string = "iam.googleapis.com/WorkloadIdentityPoolProvider"

func ResourceConverterIamWorkloadIdentityPoolProvider() cai.ResourceConverter {
return cai.ResourceConverter{
AssetType: IamWorkloadIdentityPoolProviderAssetType,
Convert: GetIamWorkloadIdentityPoolProviderCaiObject,
}
}

func GetIamWorkloadIdentityPoolProviderCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) {
name, err := cai.ReplaceVars(d, config, "//iam.googleapis.com/projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}/providers/{{workload_identity_pool_provider_id}}")
if err != nil {
return nil, err
}

resource, err := GetIamWorkloadIdentityPoolProviderApiObject(d, config)
if err != nil {
return nil, err
}

return []cai.Asset{{
Name: name,
Type: IamWorkloadIdentityPoolProviderAssetType,
Resource: &cai.AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://iam.googleapis.com/$discovery/rest?version=v1",
DiscoveryName: "WorkloadIdentityPoolProvider",
Data: resource,
},
}}, nil
}

func GetIamWorkloadIdentityPoolProviderApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
if v, ok := d.GetOk("display_name"); ok {
obj["displayName"] = v.(string)
}
if v, ok := d.GetOk("description"); ok {
obj["description"] = v.(string)
}
if v, ok := d.GetOk("disabled"); ok {
obj["disabled"] = v.(bool)
}
if v, ok := d.GetOk("attribute_mapping"); ok {
obj["attributeMapping"] = v.(map[string]interface{})
}
if v, ok := d.GetOk("attribute_condition"); ok {
obj["attributeCondition"] = v.(string)
}
if v, ok := d.GetOk("aws"); ok {
if l := v.([]interface{}); len(l) > 0 && l[0] != nil {
aws := l[0].(map[string]interface{})
a := make(map[string]interface{})
if accountId, ok := aws["account_id"]; ok {
a["accountId"] = accountId.(string)
}
obj["aws"] = a
}
}
if v, ok := d.GetOk("oidc"); ok {
if l := v.([]interface{}); len(l) > 0 && l[0] != nil {
oidc := l[0].(map[string]interface{})
o := make(map[string]interface{})
if issuerUri, ok := oidc["issuer_uri"]; ok {
o["issuerUri"] = issuerUri.(string)
}
if allowedAudiences, ok := oidc["allowed_audiences"]; ok {
o["allowedAudiences"] = allowedAudiences.([]interface{})
}
obj["oidc"] = o
}
}
return obj, nil
}
62 changes: 62 additions & 0 deletions mmv1/third_party/tgc/services/kms/kms_crypto_key_version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package kms

import (
"fmt"

"github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
)

const CloudkmsCryptoKeyVersionAssetType string = "cloudkms.googleapis.com/CryptoKeyVersion"

func ResourceConverterCloudkmsCryptoKeyVersion() cai.ResourceConverter {
return cai.ResourceConverter{
AssetType: CloudkmsCryptoKeyVersionAssetType,
Convert: GetCloudkmsCryptoKeyVersionCaiObject,
}
}

func GetCloudkmsCryptoKeyVersionCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) {
name, err := cai.ReplaceVars(d, config, "//cloudkms.googleapis.com/{{crypto_key}}/cryptoKeyVersions/{{name}}")
if err != nil {
return nil, err
}

resource, err := GetCloudkmsCryptoKeyVersionApiObject(d, config)
if err != nil {
return nil, err
}

return []cai.Asset{{
Name: name,
Type: CloudkmsCryptoKeyVersionAssetType,
Resource: &cai.AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://cloudkms.googleapis.com/$discovery/rest?version=v1",
DiscoveryName: "CryptoKeyVersion",
Data: resource,
},
}}, nil
}

func GetCloudkmsCryptoKeyVersionApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
if v, ok := d.GetOk("state"); ok {
obj["state"] = v.(string)
}
if v, ok := d.GetOk("external_protection_level_options"); ok {
if l := v.([]interface{}); len(l) > 0 && l[0] != nil {
opts := l[0].(map[string]interface{})
epleo := make(map[string]interface{})
if uri, ok := opts["external_key_uri"]; ok && uri != "" {
epleo["externalKeyUri"] = uri.(string)
}
if path, ok := opts["ekm_connection_key_path"]; ok && path != "" {
epleo["ekmConnectionKeyPath"] = path.(string)
}
obj["externalProtectionLevelOptions"] = epleo
}
}
return obj, nil
}
Loading
Loading