From 30971b9086adc123b693afb5ffac4e708f551150 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 2 Nov 2025 04:43:42 +0000 Subject: [PATCH] feat: Add Terraform to CAI converter for google_workbench_instance This change introduces a new converter for the `google_workbench_instance` Terraform resource, enabling the conversion of Terraform plans to Google Cloud Asset Inventory (CAI) format. The following changes are included: - Registration of the `google_workbench_instance` converter in `mmv1/third_party/tgc/resource_converters.go.tmpl`. - A new test case (`workbench_instance.tf` and `workbench_instance.json`) to validate the converter's output. - The test case includes a `gce_setup` block with a `machine_type` and a `shielded_instance_config` block to ensure that the converter handles nested blocks correctly. --- .../tgc/resource_converters.go.tmpl | 3 ++- .../tgc/tests/data/workbench_instance.json | 26 +++++++++++++++++++ .../tgc/tests/data/workbench_instance.tf | 13 ++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 mmv1/third_party/tgc/tests/data/workbench_instance.json create mode 100644 mmv1/third_party/tgc/tests/data/workbench_instance.tf diff --git a/mmv1/third_party/tgc/resource_converters.go.tmpl b/mmv1/third_party/tgc/resource_converters.go.tmpl index 4df5d22273c0..635c182f21ca 100644 --- a/mmv1/third_party/tgc/resource_converters.go.tmpl +++ b/mmv1/third_party/tgc/resource_converters.go.tmpl @@ -208,7 +208,8 @@ 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_vertex_ai_dataset": {vertexai.ResourceConverterVertexAIDataset()}, + "google_workbench_instance": {workbench.ResourceConverterWorkbenchInstance()}, {{- range $object := $.IamResources }} {{- if $object.IamClassName }} "{{ $object.TerraformName }}_iam_policy": { {{- $object.IamClassName }}IamPolicy()}, diff --git a/mmv1/third_party/tgc/tests/data/workbench_instance.json b/mmv1/third_party/tgc/tests/data/workbench_instance.json new file mode 100644 index 000000000000..876febb0f7d0 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/workbench_instance.json @@ -0,0 +1,26 @@ +[ + { + "name": "//notebooks.googleapis.com/projects/{{.Provider.project}}/locations/us-central1-a/instances/workbench-instance-cai", + "asset_type": "notebooks.googleapis.com/Instance", + "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", + "resource": { + "version": "v2", + "discovery_document_uri": "https://notebooks.googleapis.com/$discovery/rest", + "discovery_name": "Instance", + "parent": "//cloudresourcemanager.googleapis.com/projects/{{.Provider.project}}", + "data": { + "gceSetup": { + "machineType": "e2-standard-2", + "shieldedInstanceConfig": { + "enableSecureBoot": true, + "enableVtpm": true, + "enableIntegrityMonitoring": true + } + }, + "labels": { + "goog-terraform-provisioned": "true" + } + } + } + } +] diff --git a/mmv1/third_party/tgc/tests/data/workbench_instance.tf b/mmv1/third_party/tgc/tests/data/workbench_instance.tf new file mode 100644 index 000000000000..be10eaf63a34 --- /dev/null +++ b/mmv1/third_party/tgc/tests/data/workbench_instance.tf @@ -0,0 +1,13 @@ + +resource "google_workbench_instance" "basic" { + name = "workbench-instance-cai" + location = "us-central1-a" + gce_setup { + machine_type = "e2-standard-2" + shielded_instance_config { + enable_secure_boot = true + enable_vtpm = true + enable_integrity_monitoring = true + } + } +}