diff --git a/converters/google/resources/resource_converters.go b/converters/google/resources/resource_converters.go index 254dd725e..36a64f8aa 100644 --- a/converters/google/resources/resource_converters.go +++ b/converters/google/resources/resource_converters.go @@ -23,6 +23,7 @@ package google // N:1 = [ResourceConverter{Convert: convertAbc, merge: mergeAbc}] (len=1) func ResourceConverters() map[string][]ResourceConverter { return map[string][]ResourceConverter{ + "google_compute_address": {resourceConverterComputeAddress()}, "google_compute_firewall": {resourceConverterComputeFirewall()}, "google_compute_disk": {resourceConverterComputeDisk()}, "google_compute_forwarding_rule": {resourceConverterComputeForwardingRule()}, diff --git a/test/cli_test.go b/test/cli_test.go index 9f71a0e32..66eecdc92 100644 --- a/test/cli_test.go +++ b/test/cli_test.go @@ -79,6 +79,7 @@ func TestCLI(t *testing.T) { {name: "example_bigtable_instance"}, {name: "example_cloud_run_mapping"}, {name: "example_cloud_run_service"}, + {name: "example_compute_address"}, {name: "example_compute_disk"}, {name: "example_compute_disk_empty_image"}, {name: "example_compute_firewall"}, diff --git a/test/read_test.go b/test/read_test.go index 2eca939ed..bcb04c5f1 100644 --- a/test/read_test.go +++ b/test/read_test.go @@ -38,6 +38,7 @@ func TestReadPlannedAssetsCoverage(t *testing.T) { {name: "example_bigtable_instance"}, {name: "example_cloud_run_mapping"}, {name: "example_cloud_run_service"}, + {name: "example_compute_address"}, {name: "example_compute_disk"}, {name: "example_compute_disk_empty_image"}, {name: "example_compute_firewall"}, diff --git a/testdata/templates/example_compute_address.json b/testdata/templates/example_compute_address.json new file mode 100644 index 000000000..403a31b89 --- /dev/null +++ b/testdata/templates/example_compute_address.json @@ -0,0 +1,53 @@ +[ + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/global/networks/my-network", + "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": { + "autoCreateSubnetworks": true, + "name": "my-network" + } + } + }, + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/regions/us-central1/addresses/my-internal-address", + "asset_type": "compute.googleapis.com/Address", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", + "discovery_name": "Address", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "address": "10.0.42.42", + "addressType": "INTERNAL", + "name": "my-internal-address", + "region": "projects/{{.Provider.project}}/global/regions/us-central1" + } + } + }, + { + "name": "//compute.googleapis.com/projects/{{.Provider.project}}/regions/us-central1/subnetworks/my-subnet", + "asset_type": "compute.googleapis.com/Subnetwork", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v1", + "discovery_document_uri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", + "discovery_name": "Subnetwork", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "ipCidrRange": "10.0.0.0/16", + "logConfig": { + "enable": false + }, + "name": "my-subnet", + "region": "projects/{{.Provider.project}}/global/regions/us-central1" + } + } + } +] diff --git a/testdata/templates/example_compute_address.tf b/testdata/templates/example_compute_address.tf new file mode 100644 index 000000000..0755c67f7 --- /dev/null +++ b/testdata/templates/example_compute_address.tf @@ -0,0 +1,47 @@ +/** + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~> {{.Provider.version}}" + } + } +} + +provider "google" { + {{if .Provider.credentials }}credentials = "{{.Provider.credentials}}"{{end}} +} + +resource "google_compute_network" "default" { + name = "my-network" +} + +resource "google_compute_subnetwork" "default" { + name = "my-subnet" + ip_cidr_range = "10.0.0.0/16" + region = "us-central1" + network = google_compute_network.default.id +} + +resource "google_compute_address" "internal_with_subnet_and_address" { + name = "my-internal-address" + subnetwork = google_compute_subnetwork.default.id + address_type = "INTERNAL" + address = "10.0.42.42" + region = "us-central1" +} diff --git a/testdata/templates/example_compute_address.tfplan.json b/testdata/templates/example_compute_address.tfplan.json new file mode 100644 index 000000000..d5d68aa66 --- /dev/null +++ b/testdata/templates/example_compute_address.tfplan.json @@ -0,0 +1,266 @@ +{ + "format_version": "0.2", + "terraform_version": "1.0.10", + "planned_values": { + "root_module": { + "resources": [ + { + "address": "google_compute_address.internal_with_subnet_and_address", + "mode": "managed", + "type": "google_compute_address", + "name": "internal_with_subnet_and_address", + "provider_name": "registry.terraform.io/hashicorp/google", + "schema_version": 0, + "values": { + "address": "10.0.42.42", + "address_type": "INTERNAL", + "description": null, + "name": "my-internal-address", + "network": null, + "prefix_length": null, + "region": "us-central1", + "timeouts": null + }, + "sensitive_values": { + "users": [] + } + }, + { + "address": "google_compute_network.default", + "mode": "managed", + "type": "google_compute_network", + "name": "default", + "provider_name": "registry.terraform.io/hashicorp/google", + "schema_version": 0, + "values": { + "auto_create_subnetworks": true, + "delete_default_routes_on_create": false, + "description": null, + "name": "my-network", + "timeouts": null + }, + "sensitive_values": {} + }, + { + "address": "google_compute_subnetwork.default", + "mode": "managed", + "type": "google_compute_subnetwork", + "name": "default", + "provider_name": "registry.terraform.io/hashicorp/google", + "schema_version": 0, + "values": { + "description": null, + "ip_cidr_range": "10.0.0.0/16", + "ipv6_access_type": null, + "log_config": [], + "name": "my-subnet", + "private_ip_google_access": null, + "region": "us-central1", + "role": null, + "timeouts": null + }, + "sensitive_values": { + "log_config": [], + "secondary_ip_range": [] + } + } + ] + } + }, + "resource_changes": [ + { + "address": "google_compute_address.internal_with_subnet_and_address", + "mode": "managed", + "type": "google_compute_address", + "name": "internal_with_subnet_and_address", + "provider_name": "registry.terraform.io/hashicorp/google", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "address": "10.0.42.42", + "address_type": "INTERNAL", + "description": null, + "name": "my-internal-address", + "network": null, + "prefix_length": null, + "region": "us-central1", + "timeouts": null + }, + "after_unknown": { + "creation_timestamp": true, + "id": true, + "network_tier": true, + "project": true, + "purpose": true, + "self_link": true, + "subnetwork": true, + "users": true + }, + "before_sensitive": false, + "after_sensitive": { + "users": [] + } + } + }, + { + "address": "google_compute_network.default", + "mode": "managed", + "type": "google_compute_network", + "name": "default", + "provider_name": "registry.terraform.io/hashicorp/google", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "auto_create_subnetworks": true, + "delete_default_routes_on_create": false, + "description": null, + "name": "my-network", + "timeouts": null + }, + "after_unknown": { + "gateway_ipv4": true, + "id": true, + "mtu": true, + "project": true, + "routing_mode": true, + "self_link": true + }, + "before_sensitive": false, + "after_sensitive": {} + } + }, + { + "address": "google_compute_subnetwork.default", + "mode": "managed", + "type": "google_compute_subnetwork", + "name": "default", + "provider_name": "registry.terraform.io/hashicorp/google", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": null, + "ip_cidr_range": "10.0.0.0/16", + "ipv6_access_type": null, + "log_config": [], + "name": "my-subnet", + "private_ip_google_access": null, + "region": "us-central1", + "role": null, + "timeouts": null + }, + "after_unknown": { + "creation_timestamp": true, + "external_ipv6_prefix": true, + "fingerprint": true, + "gateway_address": true, + "id": true, + "ipv6_cidr_range": true, + "log_config": [], + "network": true, + "private_ipv6_google_access": true, + "project": true, + "purpose": true, + "secondary_ip_range": true, + "self_link": true, + "stack_type": true + }, + "before_sensitive": false, + "after_sensitive": { + "log_config": [], + "secondary_ip_range": [] + } + } + } + ], + "configuration": { + "provider_config": { + "google": { + "name": "google", + "expressions": { + "project": { + "constant_value": "{{.Provider.project}}" + } + } + } + }, + "root_module": { + "resources": [ + { + "address": "google_compute_address.internal_with_subnet_and_address", + "mode": "managed", + "type": "google_compute_address", + "name": "internal_with_subnet_and_address", + "provider_config_key": "google", + "expressions": { + "address": { + "constant_value": "10.0.42.42" + }, + "address_type": { + "constant_value": "INTERNAL" + }, + "name": { + "constant_value": "my-internal-address" + }, + "region": { + "constant_value": "us-central1" + }, + "subnetwork": { + "references": [ + "google_compute_subnetwork.default.id", + "google_compute_subnetwork.default" + ] + } + }, + "schema_version": 0 + }, + { + "address": "google_compute_network.default", + "mode": "managed", + "type": "google_compute_network", + "name": "default", + "provider_config_key": "google", + "expressions": { + "name": { + "constant_value": "my-network" + } + }, + "schema_version": 0 + }, + { + "address": "google_compute_subnetwork.default", + "mode": "managed", + "type": "google_compute_subnetwork", + "name": "default", + "provider_config_key": "google", + "expressions": { + "ip_cidr_range": { + "constant_value": "10.0.0.0/16" + }, + "name": { + "constant_value": "my-subnet" + }, + "network": { + "references": [ + "google_compute_network.default.id", + "google_compute_network.default" + ] + }, + "region": { + "constant_value": "us-central1" + } + }, + "schema_version": 0 + } + ] + } + } +}