diff --git a/mmv1/third_party/tgc/resource_converters.go b/mmv1/third_party/tgc/resource_converters.go new file mode 100644 index 000000000000..0e342b1d16c9 --- /dev/null +++ b/mmv1/third_party/tgc/resource_converters.go @@ -0,0 +1,197 @@ +// ---------------------------------------------------------------------------- +// +// *** AUTO GENERATED CODE *** Type: MMv1 *** +// +// ---------------------------------------------------------------------------- +// +// This file is automatically generated by Magic Modules and manual +// changes will be clobbered when the file is regenerated. +// +// Please read more about how to change this file in +// .github/CONTRIBUTING.md. +// +// ---------------------------------------------------------------------------- +package google + +import ( + "sort" + + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/appengine" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/container" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/compute" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/dataproc" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/iam" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/kms" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/logging" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/notebooks" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/resourcemanager" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/spanner" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/secretmanagerregional" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/securesourcemanager" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/securitycenterv2" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/storage" + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/services/vmwareengine" + "github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource" +) + + +// ResourceConverter returns a map of terraform resource types (i.e. `google_project`) +// to a slice of ResourceConverters. +// +// Modelling of relationships: +// terraform resources to CAI assets as []cai.ResourceConverter: +// 1:1 = [ResourceConverter{Convert: convertAbc}] (len=1) +// 1:N = [ResourceConverter{Convert: convertAbc}, ...] (len=N) +// N:1 = [ResourceConverter{Convert: convertAbc, merge: mergeAbc}] (len=1) +func ResourceConverters() map[string][]cai.ResourceConverter { + return map[string][]cai.ResourceConverter{ + "google_artifact_registry_repository": {artifactregistry.ResourceConverterArtifactRegistryRepository()}, + "google_app_engine_application": {appengine.ResourceConverterAppEngineApplication()}, + "google_alloydb_cluster": {alloydb.ResourceConverterAlloydbCluster()}, + "google_alloydb_instance": {alloydb.ResourceConverterAlloydbInstance()}, + "google_apikeys_key": {apikeys.ResourceConverterApikeysKey()}, + "google_compute_address": {compute.ResourceConverterComputeAddress()}, + "google_compute_autoscaler": {compute.ResourceConverterComputeAutoscaler()}, + "google_compute_firewall": {compute.ResourceConverterComputeFirewall()}, + "google_compute_disk": {compute.ResourceConverterComputeDisk()}, + "google_compute_forwarding_rule": {compute.ResourceConverterComputeForwardingRule()}, + "google_gke_hub_membership": {gkehub.ResourceConverterGKEHubMembership()}, + "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()}, + "google_compute_node_template": {compute.ResourceConverterComputeNodeTemplate()}, + "google_compute_route": {compute.ResourceConverterComputeRoute()}, + "google_compute_router": {compute.ResourceConverterComputeRouter()}, + "google_compute_vpn_tunnel": {compute.ResourceConverterComputeVpnTunnel()}, + "google_compute_resource_policy": {compute.ResourceConverterComputeResourcePolicy()}, + "google_compute_security_policy": {compute.ResourceConverterComputeSecurityPolicy()}, + "google_compute_snapshot": {compute.ResourceConverterComputeSnapshot()}, + "google_compute_subnetwork": {compute.ResourceConverterComputeSubnetwork()}, + "google_compute_ssl_policy": {compute.ResourceConverterComputeSslPolicy()}, + "google_compute_ssl_certificate": {compute.ResourceConverterComputeSslCertificate()}, + "google_compute_url_map": {compute.ResourceConverterComputeUrlMap()}, + "google_compute_target_http_proxy": {compute.ResourceConverterComputeTargetHttpProxy()}, + "google_compute_target_https_proxy": {compute.ResourceConverterComputeTargetHttpsProxy()}, + "google_compute_target_ssl_proxy": {compute.ResourceConverterComputeTargetSslProxy()}, + "google_compute_target_pool": {compute.ResourceConverterComputeTargetPool()}, + "google_composer_environment": {composer.ResourceConverterComposerEnvironment()}, + "google_compute_region_commitment": {compute.ResourceConverterCommitment()}, + "google_dataflow_job": {dataflow.ResourceDataflowJob()}, + "google_dataproc_autoscaling_policy": {dataproc.ResourceConverterDataprocAutoscalingPolicy()}, + "google_dataproc_cluster": {dataproc.ResourceConverterDataprocCluster()}, + "google_dns_managed_zone": {dns.ResourceConverterDNSManagedZone()}, + "google_dns_policy": {dns.ResourceConverterDNSPolicy()}, + "google_kms_key_ring_import_job": {kms.ResourceConverterKMSKeyRingImportJob()}, + "google_gke_hub_feature": {gkehub2.ResourceConverterGKEHub2Feature()}, + "google_storage_bucket": {storage.ResourceConverterStorageBucket()}, + "google_sql_database_instance": {sql.ResourceConverterSQLDatabaseInstance()}, + "google_sql_database": {sql.ResourceConverterSQLDatabase()}, + "google_container_cluster": {container.ResourceConverterContainerCluster()}, + "google_container_node_pool": {container.ResourceConverterContainerNodePool()}, + "google_bigquery_dataset": {bigquery.ResourceConverterBigQueryDataset()}, + "google_bigquery_dataset_iam_policy": {bigquery.ResourceConverterBigqueryDatasetIamPolicy()}, + "google_bigquery_dataset_iam_binding": {bigquery.ResourceConverterBigqueryDatasetIamBinding()}, + "google_bigquery_dataset_iam_member": {bigquery.ResourceConverterBigqueryDatasetIamMember()}, + "google_bigquery_table": {bigquery.ResourceConverterBigQueryTable()}, + "google_datastream_connection_profile": {datastream.ResourceConverterDatastreamConnectionProfile()}, + "google_datastream_private_connection": {datastream.ResourceConverterDatastreamPrivateConnection()}, + "google_datastream_stream": {datastream.ResourceConverterDatastreamStream()}, + "google_firebase_project": {firebase.ResourceConverterFirebaseProject()}, + "google_org_policy_custom_constraint": {orgpolicy.ResourceConverterOrgPolicyCustomConstraint()}, + "google_org_policy_policy": {resourcemanager.ResourceConverterOrgPolicyPolicy()}, + "google_redis_instance": {redis.ResourceConverterRedisInstance()}, + "google_spanner_database": {spanner.ResourceConverterSpannerDatabase()}, + "google_spanner_database_iam_policy": {spanner.ResourceConverterSpannerDatabaseIamPolicy()}, + "google_spanner_database_iam_binding": {spanner.ResourceConverterSpannerDatabaseIamBinding()}, + "google_spanner_database_iam_member": {spanner.ResourceConverterSpannerDatabaseIamMember()}, + "google_spanner_instance": {spanner.ResourceConverterSpannerInstance()}, + "google_spanner_instance_iam_policy": {spanner.ResourceConverterSpannerInstanceIamPolicy()}, + "google_spanner_instance_iam_binding": {spanner.ResourceConverterSpannerInstanceIamBinding()}, + "google_spanner_instance_iam_member": {spanner.ResourceConverterSpannerInstanceIamMember()}, + "google_project_service": {resourcemanager.ResourceConverterServiceUsage()}, + "google_secret_manager_secret_version": {secretmanager.ResourceConverterSecretManagerSecretVersion()}, + "google_pubsub_lite_reservation": {pubsublite.ResourceConverterPubsubLiteReservation()}, + "google_pubsub_lite_subscription": {pubsublite.ResourceConverterPubsubLiteSubscription()}, + "google_pubsub_lite_topic": {pubsublite.ResourceConverterPubsubLiteTopic()}, + "google_pubsub_schema": {pubsub.ResourceConverterPubsubSchema()}, + "google_pubsub_subscription": {pubsub.ResourceConverterPubsubSubscription()}, + "google_pubsub_subscription_iam_policy": {pubsub.ResourceConverterPubsubSubscriptionIamPolicy()}, + "google_pubsub_subscription_iam_binding": {pubsub.ResourceConverterPubsubSubscriptionIamBinding()}, + "google_pubsub_subscription_iam_member": {pubsub.ResourceConverterPubsubSubscriptionIamMember()}, + "google_storage_bucket_iam_policy": {storage.ResourceConverterStorageBucketIamPolicy()}, + "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()}, + "google_logging_project_bucket_config": {logging.ResourceConverterLogProjectBucket()}, + "google_logging_billing_account_bucket_config": {logging.ResourceConverterLogBillingAccountBucket()}, + "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()}, + "google_access_context_manager_access_policy": {accesscontextmanager.ResourceConverterAccessContextManagerAccessPolicy()}, + "google_cloud_run_service": {cloudrun.ResourceConverterCloudRunService()}, + "google_cloud_run_v2_service": {cloudrunv2.ResourceConverterCloudRunV2Service()}, + "google_cloud_run_domain_mapping": {cloudrun.ResourceConverterCloudRunDomainMapping()}, + "google_cloud_run_v2_job": {cloudrunv2.ResourceConverterCloudRunV2Job()}, + "google_cloudfunctions_function": {cloudfunctions.ResourceConverterCloudFunctionsCloudFunction()}, + "google_monitoring_notification_channel": {monitoring.ResourceConverterMonitoringNotificationChannel()}, + "google_monitoring_alert_policy": {monitoring.ResourceConverterMonitoringAlertPolicy()}, + "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_peering": {vmwareengine.ResourceConverterVmwareengineNetworkPeering()}, + "google_vmwareengine_network_policy": {vmwareengine.ResourceConverterVmwareengineNetworkPolicy()}, + "google_vmwareengine_private_cloud": {vmwareengine.ResourceConverterVmwareenginePrivateCloud()}, + "google_project": { + resourcemanager.ResourceConverterProject(), + resourcemanager.ResourceConverterProjectBillingInfo(), + }, + "google_bigtable_instance": { + bigtable.ResourceConverterBigtableInstance(), + bigtable.ResourceConverterBigtableCluster(), + }, + "google_organization_iam_policy": {resourcemanager.ResourceConverterOrganizationIamPolicy()}, + "google_organization_iam_binding": {resourcemanager.ResourceConverterOrganizationIamBinding()}, + "google_organization_iam_member": {resourcemanager.ResourceConverterOrganizationIamMember()}, + "google_organization_policy": {resourcemanager.ResourceConverterOrganizationPolicy()}, + "google_project_organization_policy": {resourcemanager.ResourceConverterProjectOrgPolicy()}, + "google_folder": {resourcemanager.ResourceConverterFolder()}, + "google_folder_iam_policy": {resourcemanager.ResourceConverterFolderIamPolicy()}, + "google_folder_iam_binding": {resourcemanager.ResourceConverterFolderIamBinding()}, + "google_folder_iam_member": {resourcemanager.ResourceConverterFolderIamMember()}, + "google_folder_organization_policy": {resourcemanager.ResourceConverterFolderOrgPolicy()}, + "google_kms_crypto_key_iam_policy": {kms.ResourceConverterKmsCryptoKeyIamPolicy()}, + "google_kms_crypto_key_iam_binding": {kms.ResourceConverterKmsCryptoKeyIamBinding()}, + "google_kms_crypto_key_iam_member": {kms.ResourceConverterKmsCryptoKeyIamMember()}, + "google_kms_key_ring_iam_policy": {kms.ResourceConverterKmsKeyRingIamPolicy()}, + "google_kms_key_ring_iam_binding": {kms.ResourceConverterKmsKeyRingIamBinding()}, + "google_kms_key_ring_iam_member": {kms.ResourceConverterKmsKeyRingIamMember()}, + "google_project_iam_policy": {resourcemanager.ResourceConverterProjectIamPolicy()}, + "google_project_iam_binding": {resourcemanager.ResourceConverterProjectIamBinding()}, + "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()}, + "google_service_account_key": {resourcemanager.ResourceConverterServiceAccountKey()}, + } +} diff --git a/mmv1/third_party/tgc/resource_converters.go.tmpl b/mmv1/third_party/tgc/resource_converters.go.tmpl index 1d81fa66f6b3..b367b358e018 100644 --- a/mmv1/third_party/tgc/resource_converters.go.tmpl +++ b/mmv1/third_party/tgc/resource_converters.go.tmpl @@ -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()}, @@ -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()}, @@ -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()}, @@ -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()}, @@ -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()}, diff --git a/mmv1/third_party/tgc/services/compute/compute_image.go b/mmv1/third_party/tgc/services/compute/compute_image.go new file mode 100644 index 000000000000..1181276e8f88 --- /dev/null +++ b/mmv1/third_party/tgc/services/compute/compute_image.go @@ -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 +} diff --git a/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool.go b/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool.go new file mode 100644 index 000000000000..905a4ba0dfec --- /dev/null +++ b/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool.go @@ -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 +} diff --git a/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool_provider.go b/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool_provider.go new file mode 100644 index 000000000000..3e91c8b5c945 --- /dev/null +++ b/mmv1/third_party/tgc/services/iam/iam_workload_identity_pool_provider.go @@ -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 +} diff --git a/mmv1/third_party/tgc/services/kms/kms_crypto_key_version.go b/mmv1/third_party/tgc/services/kms/kms_crypto_key_version.go new file mode 100644 index 000000000000..fc955d554ba9 --- /dev/null +++ b/mmv1/third_party/tgc/services/kms/kms_crypto_key_version.go @@ -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 +} diff --git a/mmv1/third_party/tgc/services/logging/logging_billing_account_sink.go b/mmv1/third_party/tgc/services/logging/logging_billing_account_sink.go new file mode 100644 index 000000000000..9c1fe5709d3e --- /dev/null +++ b/mmv1/third_party/tgc/services/logging/logging_billing_account_sink.go @@ -0,0 +1,89 @@ +package logging + +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" +) + +func ResourceConverterLoggingBillingAccountSink() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: LoggingProjectSinkAssetType, + Convert: GetLoggingBillingAccountSinkCaiObject, + } +} + +func GetLoggingBillingAccountSinkCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//logging.googleapis.com/billingAccounts/{{billing_account}}/sinks/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetLoggingBillingAccountSinkApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: LoggingProjectSinkAssetType, + Resource: &cai.AssetResource{ + Version: "v2", + DiscoveryDocumentURI: "https://logging.googleapis.com/$discovery/rest?version=v2", + DiscoveryName: "LogSink", + Data: resource, + }, + }}, nil +} + +func GetLoggingBillingAccountSinkApiObject(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("destination"); ok { + obj["destination"] = v.(string) + } + if v, ok := d.GetOk("filter"); ok { + obj["filter"] = 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("exclusions"); ok { + exclusions := v.([]interface{}) + es := make([]map[string]interface{}, 0, len(exclusions)) + for _, e := range exclusions { + exclusion := e.(map[string]interface{}) + entry := make(map[string]interface{}) + if name, ok := exclusion["name"]; ok { + entry["name"] = name.(string) + } + if description, ok := exclusion["description"]; ok { + entry["description"] = description.(string) + } + if filter, ok := exclusion["filter"]; ok { + entry["filter"] = filter.(string) + } + if disabled, ok := exclusion["disabled"]; ok { + entry["disabled"] = disabled.(bool) + } + es = append(es, entry) + } + obj["exclusions"] = es + } + if v, ok := d.GetOk("bigquery_options"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + opts := l[0].(map[string]interface{}) + bqo := make(map[string]interface{}) + if usePartitionedTables, ok := opts["use_partitioned_tables"]; ok { + bqo["usePartitionedTables"] = usePartitionedTables.(bool) + } + obj["bigqueryOptions"] = bqo + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/logging/logging_folder_sink.go b/mmv1/third_party/tgc/services/logging/logging_folder_sink.go new file mode 100644 index 000000000000..5e3faab5ecb8 --- /dev/null +++ b/mmv1/third_party/tgc/services/logging/logging_folder_sink.go @@ -0,0 +1,89 @@ +package logging + +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" +) + +func ResourceConverterLoggingFolderSink() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: LoggingProjectSinkAssetType, + Convert: GetLoggingFolderSinkCaiObject, + } +} + +func GetLoggingFolderSinkCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//logging.googleapis.com/folders/{{folder}}/sinks/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetLoggingFolderSinkApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: LoggingProjectSinkAssetType, + Resource: &cai.AssetResource{ + Version: "v2", + DiscoveryDocumentURI: "https://logging.googleapis.com/$discovery/rest?version=v2", + DiscoveryName: "LogSink", + Data: resource, + }, + }}, nil +} + +func GetLoggingFolderSinkApiObject(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("destination"); ok { + obj["destination"] = v.(string) + } + if v, ok := d.GetOk("filter"); ok { + obj["filter"] = 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("exclusions"); ok { + exclusions := v.([]interface{}) + es := make([]map[string]interface{}, 0, len(exclusions)) + for _, e := range exclusions { + exclusion := e.(map[string]interface{}) + entry := make(map[string]interface{}) + if name, ok := exclusion["name"]; ok { + entry["name"] = name.(string) + } + if description, ok := exclusion["description"]; ok { + entry["description"] = description.(string) + } + if filter, ok := exclusion["filter"]; ok { + entry["filter"] = filter.(string) + } + if disabled, ok := exclusion["disabled"]; ok { + entry["disabled"] = disabled.(bool) + } + es = append(es, entry) + } + obj["exclusions"] = es + } + if v, ok := d.GetOk("bigquery_options"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + opts := l[0].(map[string]interface{}) + bqo := make(map[string]interface{}) + if usePartitionedTables, ok := opts["use_partitioned_tables"]; ok { + bqo["usePartitionedTables"] = usePartitionedTables.(bool) + } + obj["bigqueryOptions"] = bqo + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/logging/logging_organization_sink.go b/mmv1/third_party/tgc/services/logging/logging_organization_sink.go new file mode 100644 index 000000000000..ce278552eb50 --- /dev/null +++ b/mmv1/third_party/tgc/services/logging/logging_organization_sink.go @@ -0,0 +1,89 @@ +package logging + +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" +) + +func ResourceConverterLoggingOrganizationSink() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: LoggingProjectSinkAssetType, + Convert: GetLoggingOrganizationSinkCaiObject, + } +} + +func GetLoggingOrganizationSinkCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//logging.googleapis.com/organizations/{{org_id}}/sinks/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetLoggingOrganizationSinkApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: LoggingProjectSinkAssetType, + Resource: &cai.AssetResource{ + Version: "v2", + DiscoveryDocumentURI: "https://logging.googleapis.com/$discovery/rest?version=v2", + DiscoveryName: "LogSink", + Data: resource, + }, + }}, nil +} + +func GetLoggingOrganizationSinkApiObject(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("destination"); ok { + obj["destination"] = v.(string) + } + if v, ok := d.GetOk("filter"); ok { + obj["filter"] = 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("exclusions"); ok { + exclusions := v.([]interface{}) + es := make([]map[string]interface{}, 0, len(exclusions)) + for _, e := range exclusions { + exclusion := e.(map[string]interface{}) + entry := make(map[string]interface{}) + if name, ok := exclusion["name"]; ok { + entry["name"] = name.(string) + } + if description, ok := exclusion["description"]; ok { + entry["description"] = description.(string) + } + if filter, ok := exclusion["filter"]; ok { + entry["filter"] = filter.(string) + } + if disabled, ok := exclusion["disabled"]; ok { + entry["disabled"] = disabled.(bool) + } + es = append(es, entry) + } + obj["exclusions"] = es + } + if v, ok := d.GetOk("bigquery_options"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + opts := l[0].(map[string]interface{}) + bqo := make(map[string]interface{}) + if usePartitionedTables, ok := opts["use_partitioned_tables"]; ok { + bqo["usePartitionedTables"] = usePartitionedTables.(bool) + } + obj["bigqueryOptions"] = bqo + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/logging/logging_project_sink.go b/mmv1/third_party/tgc/services/logging/logging_project_sink.go new file mode 100644 index 000000000000..4150baf61831 --- /dev/null +++ b/mmv1/third_party/tgc/services/logging/logging_project_sink.go @@ -0,0 +1,91 @@ +package logging + +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 LoggingProjectSinkAssetType string = "logging.googleapis.com/LogSink" + +func ResourceConverterLoggingProjectSink() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: LoggingProjectSinkAssetType, + Convert: GetLoggingProjectSinkCaiObject, + } +} + +func GetLoggingProjectSinkCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//logging.googleapis.com/projects/{{project}}/sinks/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetLoggingProjectSinkApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: LoggingProjectSinkAssetType, + Resource: &cai.AssetResource{ + Version: "v2", + DiscoveryDocumentURI: "https://logging.googleapis.com/$discovery/rest?version=v2", + DiscoveryName: "LogSink", + Data: resource, + }, + }}, nil +} + +func GetLoggingProjectSinkApiObject(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("destination"); ok { + obj["destination"] = v.(string) + } + if v, ok := d.GetOk("filter"); ok { + obj["filter"] = 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("exclusions"); ok { + exclusions := v.([]interface{}) + es := make([]map[string]interface{}, 0, len(exclusions)) + for _, e := range exclusions { + exclusion := e.(map[string]interface{}) + entry := make(map[string]interface{}) + if name, ok := exclusion["name"]; ok { + entry["name"] = name.(string) + } + if description, ok := exclusion["description"]; ok { + entry["description"] = description.(string) + } + if filter, ok := exclusion["filter"]; ok { + entry["filter"] = filter.(string) + } + if disabled, ok := exclusion["disabled"]; ok { + entry["disabled"] = disabled.(bool) + } + es = append(es, entry) + } + obj["exclusions"] = es + } + if v, ok := d.GetOk("bigquery_options"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + opts := l[0].(map[string]interface{}) + bqo := make(map[string]interface{}) + if usePartitionedTables, ok := opts["use_partitioned_tables"]; ok { + bqo["usePartitionedTables"] = usePartitionedTables.(bool) + } + obj["bigqueryOptions"] = bqo + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/notebooks/notebooks_instance.go b/mmv1/third_party/tgc/services/notebooks/notebooks_instance.go new file mode 100644 index 000000000000..f222fe4fcc1e --- /dev/null +++ b/mmv1/third_party/tgc/services/notebooks/notebooks_instance.go @@ -0,0 +1,63 @@ +package notebooks + +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 NotebooksInstanceAssetType string = "notebooks.googleapis.com/Instance" + +func ResourceConverterNotebooksInstance() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: NotebooksInstanceAssetType, + Convert: GetNotebooksInstanceCaiObject, + } +} + +func GetNotebooksInstanceCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//notebooks.googleapis.com/projects/{{project}}/locations/{{location}}/instances/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetNotebooksInstanceApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: NotebooksInstanceAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://notebooks.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "Instance", + Data: resource, + }, + }}, nil +} + +func GetNotebooksInstanceApiObject(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("machine_type"); ok { + obj["machineType"] = v.(string) + } + if v, ok := d.GetOk("vm_image"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + vmImage := l[0].(map[string]interface{}) + vi := make(map[string]interface{}) + if project, ok := vmImage["project"]; ok { + vi["project"] = project.(string) + } + if imageFamily, ok := vmImage["image_family"]; ok { + vi["imageFamily"] = imageFamily.(string) + } + obj["vmImage"] = vi + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_cluster.go b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_cluster.go new file mode 100644 index 000000000000..d098b259ca8f --- /dev/null +++ b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_cluster.go @@ -0,0 +1,64 @@ +package vmwareengine + +import ( + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource" + transport_tpg "github.comcom/hashicorp/terraform-provider-google-beta/google-beta/transport" +) + +const VmwareengineClusterAssetType string = "vmwareengine.googleapis.com/Cluster" + +func ResourceConverterVmwareengineCluster() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VmwareengineClusterAssetType, + Convert: GetVmwareengineClusterCaiObject, + } +} + +func GetVmwareengineClusterCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//vmwareengine.googleapis.com/{{parent}}/clusters/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetVmwareengineClusterApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: VmwareengineClusterAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "Cluster", + Data: resource, + }, + }}, nil +} + +func GetVmwareengineClusterApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + if v, ok := d.GetOk("node_type_configs"); ok { + configs := v.(*schema.Set).List() + ntcs := make([]map[string]interface{}, 0, len(configs)) + for _, c := range configs { + configMap := c.(map[string]interface{}) + ntc := make(map[string]interface{}) + if nodeTypeId, ok := configMap["node_type_id"]; ok { + ntc["nodeTypeId"] = nodeTypeId.(string) + } + if nodeCount, ok := configMap["node_count"]; ok { + ntc["nodeCount"] = nodeCount.(int) + } + if customCoreCount, ok := configMap["custom_core_count"]; ok { + ntc["customCoreCount"] = customCoreCount.(int) + } + ntcs = append(ntcs, ntc) + } + obj["nodeTypeConfigs"] = ntcs + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_external_address.go b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_external_address.go new file mode 100644 index 000000000000..efcce16d875f --- /dev/null +++ b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_external_address.go @@ -0,0 +1,50 @@ +package vmwareengine + +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 VmwareengineExternalAddressAssetType string = "vmwareengine.googleapis.com/ExternalAddress" + +func ResourceConverterVmwareengineExternalAddress() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VmwareengineExternalAddressAssetType, + Convert: GetVmwareengineExternalAddressCaiObject, + } +} + +func GetVmwareengineExternalAddressCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//vmwareengine.googleapis.com/{{parent}}/externalAddresses/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetVmwareengineExternalAddressApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: VmwareengineExternalAddressAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "ExternalAddress", + Data: resource, + }, + }}, nil +} + +func GetVmwareengineExternalAddressApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + if v, ok := d.GetOk("internal_ip"); ok { + obj["internalIp"] = v.(string) + } + if v, ok := d.GetOk("description"); ok { + obj["description"] = v.(string) + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_peering.go b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_peering.go new file mode 100644 index 000000000000..ebe1230984f6 --- /dev/null +++ b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_peering.go @@ -0,0 +1,68 @@ +package vmwareengine + +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 VmwareengineNetworkPeeringAssetType string = "vmwareengine.googleapis.com/NetworkPeering" + +func ResourceConverterVmwareengineNetworkPeering() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VmwareengineNetworkPeeringAssetType, + Convert: GetVmwareengineNetworkPeeringCaiObject, + } +} + +func GetVmwareengineNetworkPeeringCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//vmwareengine.googleapis.com/projects/{{project}}/locations/global/networkPeerings/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetVmwareengineNetworkPeeringApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: VmwareengineNetworkPeeringAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "NetworkPeering", + Data: resource, + }, + }}, nil +} + +func GetVmwareengineNetworkPeeringApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + if v, ok := d.GetOk("description"); ok { + obj["description"] = v.(string) + } + if v, ok := d.GetOk("peer_network"); ok { + obj["peerNetwork"] = v.(string) + } + if v, ok := d.GetOk("peer_network_type"); ok { + obj["peerNetworkType"] = v.(string) + } + if v, ok := d.GetOk("vmware_engine_network"); ok { + obj["vmwareEngineNetwork"] = v.(string) + } + if v, ok := d.GetOk("export_custom_routes"); ok { + obj["exportCustomRoutes"] = v.(bool) + } + if v, ok := d.GetOk("import_custom_routes"); ok { + obj["importCustomRoutes"] = v.(bool) + } + if v, ok := d.GetOk("export_custom_routes_with_public_ip"); ok { + obj["exportCustomRoutesWithPublicIp"] = v.(bool) + } + if v, ok := d.GetOk("import_custom_routes_with_public_ip"); ok { + obj["importCustomRoutesWithPublicIp"] = v.(bool) + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_policy.go b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_policy.go new file mode 100644 index 000000000000..33e806d47f6d --- /dev/null +++ b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_network_policy.go @@ -0,0 +1,68 @@ +package vmwareengine + +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 VmwareengineNetworkPolicyAssetType string = "vmwareengine.googleapis.com/NetworkPolicy" + +func ResourceConverterVmwareengineNetworkPolicy() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VmwareengineNetworkPolicyAssetType, + Convert: GetVmwareengineNetworkPolicyCaiObject, + } +} + +func GetVmwareengineNetworkPolicyCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//vmwareengine.googleapis.com/projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetVmwareengineNetworkPolicyApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: VmwareengineNetworkPolicyAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "NetworkPolicy", + Data: resource, + }, + }}, nil +} + +func GetVmwareengineNetworkPolicyApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + if v, ok := d.GetOk("vmware_engine_network"); ok { + obj["vmwareEngineNetwork"] = v.(string) + } + if v, ok := d.GetOk("description"); ok { + obj["description"] = v.(string) + } + if v, ok := d.GetOk("edge_services_cidr"); ok { + obj["edgeServicesCidr"] = v.(string) + } + if v, ok := d.GetOk("internet_access"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + ia := make(map[string]interface{}) + ia["enabled"] = l[0].(map[string]interface{})["enabled"].(bool) + obj["internetAccess"] = ia + } + } + if v, ok := d.GetOk("external_ip"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + ei := make(map[string]interface{}) + ei["enabled"] = l[0].(map[string]interface{})["enabled"].(bool) + obj["externalIp"] = ei + } + } + + return obj, nil +} diff --git a/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_private_cloud.go b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_private_cloud.go new file mode 100644 index 000000000000..a6e3bf74edac --- /dev/null +++ b/mmv1/third_party/tgc/services/vmwareengine/vmwareengine_private_cloud.go @@ -0,0 +1,62 @@ +package vmwareengine + +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 VmwareenginePrivateCloudAssetType string = "vmwareengine.googleapis.com/PrivateCloud" + +func ResourceConverterVmwareenginePrivateCloud() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VmwareenginePrivateCloudAssetType, + Convert: GetVmwareenginePrivateCloudCaiObject, + } +} + +func GetVmwareenginePrivateCloudCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.ReplaceVars(d, config, "//vmwareengine.googleapis.com/projects/{{project}}/locations/{{location}}/privateClouds/{{name}}") + if err != nil { + return nil, err + } + + resource, err := GetVmwareenginePrivateCloudApiObject(d, config) + if err != nil { + return nil, err + } + + return []cai.Asset{{ + Name: name, + Type: VmwareenginePrivateCloudAssetType, + Resource: &cai.AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + DiscoveryName: "PrivateCloud", + Data: resource, + }, + }}, nil +} + +func GetVmwareenginePrivateCloudApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + if v, ok := d.GetOk("description"); ok { + obj["description"] = v.(string) + } + if v, ok := d.GetOk("network_config"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + nc := make(map[string]interface{}) + nc["managementCidr"] = l[0].(map[string]interface{})["management_cidr"].(string) + nc["vmwareEngineNetwork"] = l[0].(map[string]interface{})["vmware_engine_network"].(string) + obj["networkConfig"] = nc + } + } + if v, ok := d.GetOk("management_cluster"); ok { + if l := v.([]interface{}); len(l) > 0 && l[0] != nil { + mc := make(map[string]interface{}) + mc["clusterId"] = l[0].(map[string]interface{})["cluster_id"].(string) + obj["managementCluster"] = mc + } + } + return obj, nil +} diff --git a/mmv1/third_party/tgc/tests/data/example_compute_image.json b/mmv1/third_party/tgc/tests/data/example_compute_image.json new file mode 100644 index 000000000000..488f18a53c63 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_compute_image.json @@ -0,0 +1,19 @@ +[ + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/global/images/example-image", + "asset_type": "compute.googleapis.com/Image", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", + "discovery_name": "Image", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "example-image", + "rawDisk": { + "source": "https://storage.googleapis.com/bosh-gce-raw-stemcells/bosh-stemcell-97.98-google-kvm-ubuntu-xenial-go_agent-raw-1557960142.tar.gz" + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_compute_image.tf b/mmv1/third_party/tgc/tests/data/example_compute_image.tf new file mode 100644 index 000000000000..57ad9e67e250 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_compute_image.tf @@ -0,0 +1,6 @@ +resource "google_compute_image" "example" { + name = "example-image" + raw_disk { + source = "https://storage.googleapis.com/bosh-gce-raw-stemcells/bosh-stemcell-97.98-google-kvm-ubuntu-xenial-go_agent-raw-1557960142.tar.gz" + } +} diff --git a/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.json b/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.json new file mode 100644 index 000000000000..4a9c9d50a0aa --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.json @@ -0,0 +1,17 @@ +[ + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/regions/us-central1/clusters/dproctest-simple", + "asset_type": "dataproc.googleapis.com/Cluster", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://dataproc.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Cluster", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "clusterName": "dproctest-simple", + "projectId": "{{.Provider.project}}" + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.tf b/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.tf new file mode 100644 index 000000000000..16c0909a27c8 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_dataproc_cluster.tf @@ -0,0 +1,4 @@ +resource "google_dataproc_cluster" "simple" { + name = "dproctest-simple" + region = "us-central1" +} diff --git a/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.json b/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.json new file mode 100644 index 000000000000..fe714e42b5cc --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.json @@ -0,0 +1,35 @@ +[ + { + "name": "//iam.googleapis.com/projects/{{.Provider.project}}/locations/global/workloadIdentityPools/wi-pool-{{.RANDOM_SUFFIX}}", + "asset_type": "iam.googleapis.com/WorkloadIdentityPool", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://iam.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "WorkloadIdentityPool", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "displayName": "Workload Identity Pool", + "description": "Workload Identity Pool for testing" + } + } + }, + { + "name": "//iam.googleapis.com/projects/{{.Provider.project}}/locations/global/workloadIdentityPools/wi-pool-{{.RANDOM_SUFFIX}}/providers/wi-provider-{{.RANDOM_SUFFIX}}", + "asset_type": "iam.googleapis.com/WorkloadIdentityPoolProvider", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://iam.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "WorkloadIdentityPoolProvider", + "parent": "//iam.googleapis.com/projects/{{.Provider.project}}/locations/global/workloadIdentityPools/wi-pool-{{.RANDOM_SUFFIX}}", + "data": { + "displayName": "Workload Identity Pool Provider", + "description": "Workload Identity Pool Provider for testing", + "oidc": { + "issuerUri": "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/" + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.tf b/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.tf new file mode 100644 index 000000000000..434c0788748b --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_iam_workload_identity_pool_provider.tf @@ -0,0 +1,15 @@ +resource "google_iam_workload_identity_pool" "pool" { + workload_identity_pool_id = "wi-pool-{{.RANDOM_SUFFIX}}" + display_name = "Workload Identity Pool" + description = "Workload Identity Pool for testing" +} + +resource "google_iam_workload_identity_pool_provider" "provider" { + workload_identity_pool_id = google_iam_workload_identity_pool.pool.workload_identity_pool_id + workload_identity_pool_provider_id = "wi-provider-{{.RANDOM_SUFFIX}}" + display_name = "Workload Identity Pool Provider" + description = "Workload Identity Pool Provider for testing" + oidc { + issuer_uri = "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/" + } +} diff --git a/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.json b/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.json new file mode 100644 index 000000000000..30208c796124 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.json @@ -0,0 +1,45 @@ +[ + { + "name": "//cloudkms.googleapis.com/projects/{{.Provider.project}}/locations/global/keyRings/keyring-example", + "asset_type": "cloudkms.googleapis.com/KeyRing", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://cloudkms.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "KeyRing", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/keyRings/keyring-example" + } + } + }, + { + "name": "//cloudkms.googleapis.com/projects/{{.Provider.project}}/locations/global/keyRings/keyring-example/cryptoKeys/crypto-key-example", + "asset_type": "cloudkms.googleapis.com/CryptoKey", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://cloudkms.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "CryptoKey", + "parent": "//cloudkms.googleapis.com/projects/{{.Provider.project}}/locations/global/keyRings/keyring-example", + "data": { + "purpose": "ENCRYPT_DECRYPT", + "rotationPeriod": "7776000s" + } + } + }, + { + "name": "//cloudkms.googleapis.com/projects/{{.Provider.project}}/locations/global/keyRings/keyring-example/cryptoKeys/crypto-key-example/cryptoKeyVersions/1", + "asset_type": "cloudkms.googleapis.com/CryptoKeyVersion", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://cloudkms.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "CryptoKeyVersion", + "parent": "//cloudkms.googleapis.com/projects/{{.Provider.project}}/locations/global/keyRings/keyring-example/cryptoKeys/crypto-key-example", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/keyRings/keyring-example/cryptoKeys/crypto-key-example/cryptoKeyVersions/1" + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.tf b/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.tf new file mode 100644 index 000000000000..2b54da9c256d --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_kms_crypto_key_version.tf @@ -0,0 +1,14 @@ +resource "google_kms_key_ring" "keyring" { + name = "keyring-example" + location = "global" +} + +resource "google_kms_crypto_key" "cryptokey" { + name = "crypto-key-example" + key_ring = google_kms_key_ring.keyring.id + rotation_period = "7776000s" +} + +resource "google_kms_crypto_key_version" "example-key" { + crypto_key = google_kms_crypto_key.cryptokey.id +} diff --git a/mmv1/third_party/tgc/tests/data/example_logging_project_sink.json b/mmv1/third_party/tgc/tests/data/example_logging_project_sink.json new file mode 100644 index 000000000000..97384d3e6236 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_logging_project_sink.json @@ -0,0 +1,34 @@ +[ + { + "name": "//storage.googleapis.com/project-logging-bucket-{{.RANDOM_SUFFIX}}", + "asset_type": "storage.googleapis.com/Bucket", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://www.googleapis.com/discovery/v1/apis/storage/v1/rest", + "discovery_name": "Bucket", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "location": "US", + "name": "project-logging-bucket-{{.RANDOM_SUFFIX}}" + } + } + }, + { + "name": "//logging.googleapis.com/projects/{{.Provider.project}}/sinks/my-project-sink", + "asset_type": "logging.googleapis.com/LogSink", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v2", + "discovery_document_uri": "https://logging.googleapis.com/$discovery/rest?version=v2", + "discovery_name": "LogSink", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "my-project-sink", + "destination": "storage.googleapis.com/project-logging-bucket-{{.RANDOM_SUFFIX}}", + "filter": "resource.type = gce_instance AND severity >= WARNING", + "uniqueWriterIdentity": true + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_logging_project_sink.tf b/mmv1/third_party/tgc/tests/data/example_logging_project_sink.tf new file mode 100644 index 000000000000..418bade1e073 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_logging_project_sink.tf @@ -0,0 +1,12 @@ +resource "google_storage_bucket" "log-bucket" { + name = "project-logging-bucket-{{.RANDOM_SUFFIX}}" + location = "US" +} + +resource "google_logging_project_sink" "my-sink" { + name = "my-project-sink" + project = "{{.Provider.project}}" + destination = "storage.googleapis.com/${google_storage_bucket.log-bucket.name}" + filter = "resource.type = gce_instance AND severity >= WARNING" + unique_writer_identity = true +} diff --git a/mmv1/third_party/tgc/tests/data/example_notebooks_instance.json b/mmv1/third_party/tgc/tests/data/example_notebooks_instance.json new file mode 100644 index 000000000000..19f83b5cc478 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_notebooks_instance.json @@ -0,0 +1,21 @@ +[ + { + "name": "//notebooks.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/instances/notebooks-instance", + "asset_type": "notebooks.googleapis.com/Instance", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://notebooks.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Instance", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "machineType": "e2-medium", + "name": "notebooks-instance", + "vmImage": { + "imageFamily": "tf-latest-gpu", + "project": "deeplearning-platform-release" + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_notebooks_instance.tf b/mmv1/third_party/tgc/tests/data/example_notebooks_instance.tf new file mode 100644 index 000000000000..f837015b750f --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_notebooks_instance.tf @@ -0,0 +1,9 @@ +resource "google_notebooks_instance" "instance" { + name = "notebooks-instance" + location = "us-central1-a" + machine_type = "e2-medium" + vm_image { + project = "deeplearning-platform-release" + image_family = "tf-latest-gpu" + } +} diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.json b/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.json new file mode 100644 index 000000000000..4ef469c33202 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.json @@ -0,0 +1,57 @@ +[ + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/global/networks/cluster-nw-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/Network", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Network", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/networks/cluster-nw-{{.RANDOM_SUFFIX}}", + "type": "STANDARD" + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/cluster-pc-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/PrivateCloud", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "PrivateCloud", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "description": "PC for cluster test.", + "networkConfig": { + "managementCidr": "192.168.0.0/24", + "vmwareEngineNetwork": "projects/{{.Provider.project}}/locations/global/networks/cluster-nw-{{.RANDOM_SUFFIX}}" + }, + "managementCluster": { + "clusterId": "management" + } + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/cluster-pc-{{.RANDOM_SUFFIX}}/clusters/cluster-acc-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/Cluster", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Cluster", + "parent": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/cluster-pc-{{.RANDOM_SUFFIX}}", + "data": { + "nodeTypeConfigs": [ + { + "nodeTypeId": "standard-72", + "nodeCount": 3 + } + ] + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.tf b/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.tf new file mode 100644 index 000000000000..6af6cf32f1a2 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_cluster.tf @@ -0,0 +1,33 @@ +resource "google_vmwareengine_network" "cluster-nw" { + name = "cluster-nw-{{.RANDOM_SUFFIX}}" + location = "global" + type = "STANDARD" +} + +resource "google_vmwareengine_private_cloud" "cluster-pc" { + location = "us-central1-a" + name = "cluster-pc-{{.RANDOM_SUFFIX}}" + description = "PC for cluster test." + + network_config { + management_cidr = "192.168.0.0/24" + vmware_engine_network = google_vmwareengine_network.cluster-nw.id + } + + management_cluster { + cluster_id = "management" + node_type_configs { + node_type_id = "standard-72" + node_count = 3 + } + } +} + +resource "google_vmwareengine_cluster" "acc-cluster" { + name = "cluster-acc-{{.RANDOM_SUFFIX}}" + parent = google_vmwareengine_private_cloud.cluster-pc.id + node_type_configs { + node_type_id = "standard-72" + node_count = 3 + } +} diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.json b/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.json new file mode 100644 index 000000000000..4dd64d2f6532 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.json @@ -0,0 +1,18 @@ +[ + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/acc-pc/externalAddresses/acc-addr", + "asset_type": "vmwareengine.googleapis.com/ExternalAddress", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "ExternalAddress", + "parent": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/acc-pc", + "data": { + "name": "acc-addr", + "internalIp": "192.168.0.10", + "description": "Sample external address" + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.tf b/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.tf new file mode 100644 index 000000000000..c74cf9007d85 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_external_address.tf @@ -0,0 +1,23 @@ +resource "google_vmwareengine_network" "acc_network" { + name = "pc-nw" + location = "global" + type = "STANDARD" + description = "PC network description." +} + +resource "google_vmwareengine_private_cloud" "acc_pc" { + location = "us-central1-a" + name = "acc-pc" + description = "PC description." + network_config { + management_cidr = "192.168.0.0/24" + vmware_engine_network = google_vmwareengine_network.acc_network.id + } +} + +resource "google_vmwareengine_external_address" "acc_addr" { + name = "acc-addr" + parent = google_vmwareengine_private_cloud.acc_pc.id + internal_ip = "192.168.0.10" + description = "Sample external address" +} diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.json b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.json new file mode 100644 index 000000000000..19c2f5dc44b3 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.json @@ -0,0 +1,47 @@ +[ + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/global/networks/network-peering-vpc-{{.RANDOM_SUFFIX}}", + "asset_type": "compute.googleapis.com/Network", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", + "discovery_name": "Network", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "network-peering-vpc-{{.RANDOM_SUFFIX}}" + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/global/networks/default-standard-nw-np-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/Network", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Network", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/networks/default-standard-nw-np-{{.RANDOM_SUFFIX}}", + "type": "STANDARD" + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/global/networkPeerings/network-peering-peering-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/NetworkPeering", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "NetworkPeering", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "peerNetwork": "projects/{{.Provider.project}}/global/networks/network-peering-vpc-{{.RANDOM_SUFFIX}}", + "peerNetworkType": "STANDARD", + "vmwareEngineNetwork": "projects/{{.Provider.project}}/locations/global/networks/default-standard-nw-np-{{.RANDOM_SUFFIX}}" + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.tf b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.tf new file mode 100644 index 000000000000..eda6b0773b56 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_peering.tf @@ -0,0 +1,16 @@ +resource "google_compute_network" "network-peering-vpc" { + name = "network-peering-vpc-{{.RANDOM_SUFFIX}}" +} + +resource "google_vmwareengine_network" "network-peering-standard-nw" { + name = "default-standard-nw-np-{{.RANDOM_SUFFIX}}" + location = "global" + type = "STANDARD" +} + +resource "google_vmwareengine_network_peering" "acc-peering" { + name = "network-peering-peering-{{.RANDOM_SUFFIX}}" + vmware_engine_network = google_vmwareengine_network.network-peering-standard-nw.id + peer_network = google_compute_network.network-peering-vpc.id + peer_network_type = "STANDARD" +} diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.json b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.json new file mode 100644 index 000000000000..f35477033081 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.json @@ -0,0 +1,38 @@ +[ + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/global/networks/network-policy-nw-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/Network", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Network", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/networks/network-policy-nw-{{.RANDOM_SUFFIX}}", + "type": "STANDARD" + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1/networkPolicies/network-policy-np-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/NetworkPolicy", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "NetworkPolicy", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "vmwareEngineNetwork": "projects/{{.Provider.project}}/locations/global/networks/network-policy-nw-{{.RANDOM_SUFFIX}}", + "edgeServicesCidr": "192.168.30.0/26", + "internetAccess": { + "enabled": true + }, + "externalIp": { + "enabled": true + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.tf b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.tf new file mode 100644 index 000000000000..e11c076d9da8 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_network_policy.tf @@ -0,0 +1,21 @@ +resource "google_vmwareengine_network" "acc-nw" { + name = "network-policy-nw-{{.RANDOM_SUFFIX}}" + location = "global" + type = "STANDARD" +} + +resource "google_vmwareengine_network_policy" "acc-np" { + name = "network-policy-np-{{.RANDOM_SUFFIX}}" + location = "us-central1" + project = "{{.Provider.project}}" + vmware_engine_network = google_vmwareengine_network.acc-nw.id + edge_services_cidr = "192.168.30.0/26" + + internet_access { + enabled = true + } + + external_ip { + enabled = true + } +} diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.json b/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.json new file mode 100644 index 000000000000..24aee49649c0 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.json @@ -0,0 +1,38 @@ +[ + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/global/networks/pc-nw-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/Network", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "Network", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "name": "projects/{{.Provider.project}}/locations/global/networks/pc-nw-{{.RANDOM_SUFFIX}}", + "type": "STANDARD" + } + } + }, + { + "name": "//vmwareengine.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/privateClouds/pc-acc-{{.RANDOM_SUFFIX}}", + "asset_type": "vmwareengine.googleapis.com/PrivateCloud", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://vmwareengine.googleapis.com/$discovery/rest?version=v1", + "discovery_name": "PrivateCloud", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "description": "PC description.", + "networkConfig": { + "managementCidr": "192.168.0.0/24", + "vmwareEngineNetwork": "projects/{{.Provider.project}}/locations/global/networks/pc-nw-{{.RANDOM_SUFFIX}}" + }, + "managementCluster": { + "clusterId": "management" + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.tf b/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.tf new file mode 100644 index 000000000000..3dc735cd5f1f --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/example_vmwareengine_private_cloud.tf @@ -0,0 +1,24 @@ +resource "google_vmwareengine_network" "pc-nw" { + name = "pc-nw-{{.RANDOM_SUFFIX}}" + location = "global" + type = "STANDARD" +} + +resource "google_vmwareengine_private_cloud" "acc-pc" { + location = "us-central1-a" + name = "pc-acc-{{.RANDOM_SUFFIX}}" + description = "PC description." + + network_config { + management_cidr = "192.168.0.0/24" + vmware_engine_network = google_vmwareengine_network.pc-nw.id + } + + management_cluster { + cluster_id = "management" + node_type_configs { + node_type_id = "standard-72" + node_count = 3 + } + } +}