Skip to content

Commit 96fc5ba

Browse files
authored
tgc-revival: add kms resources (#15745)
1 parent 9db0387 commit 96fc5ba

File tree

11 files changed

+615
-571
lines changed

11 files changed

+615
-571
lines changed

mmv1/api/resource.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,11 @@ type TGCResource struct {
416416

417417
// [Optional] It overrides the default Cai asset name format, which is the resource id format
418418
CaiAssetNameFormat string `yaml:"cai_asset_name_format,omitempty"`
419+
420+
// [Optional] It overrides the Cai asset name format during cai2hcl conversion.
421+
// Its usage is strictly limited to scenarios requiring the extraction of parameters
422+
// from the Google Cloud Asset Inventory (CAI) asset name format
423+
Cai2hclNameFormat string `yaml:"cai2hcl_name_format,omitempty"`
419424
}
420425

421426
// // MarshalYAML implements a custom marshaller to omit dynamic default values.
@@ -2332,6 +2337,15 @@ func (r Resource) GetCaiAssetNameTemplate() string {
23322337
return fmt.Sprintf("//%s.googleapis.com/%s", r.CaiProductBackendName(r.CaiProductBaseUrl()), r.IdFormat)
23332338
}
23342339

2340+
// Gets a format string for CAI asset name
2341+
func (r Resource) Cai2hclAssetNameTemplate() string {
2342+
if r.Cai2hclNameFormat != "" {
2343+
return fmt.Sprintf("//%s.googleapis.com/%s", r.CaiProductBackendName(r.CaiProductBaseUrl()), r.Cai2hclNameFormat)
2344+
}
2345+
2346+
return r.GetCaiAssetNameTemplate()
2347+
}
2348+
23352349
// Ignores verifying CAI asset name if it is one computed field
23362350
// For example, the CAI asset name format is //monitoring.googleapis.com/{{name}}
23372351
// for google_monitoring_notification_channel

mmv1/products/kms/CryptoKey.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ update_verb: 'PATCH'
3838
update_mask: true
3939
import_format:
4040
- '{{key_ring}}/cryptoKeys/{{name}}'
41+
include_in_tgc_next_DO_NOT_USE: true
42+
tgc_include_handwritten_tests: true
4143
timeouts:
4244
insert_minutes: 20
4345
update_minutes: 20

mmv1/products/kms/CryptoKeyVersion.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ delete_url: '{{name}}:destroy'
3333
delete_verb: 'POST'
3434
import_format:
3535
- '{{name}}'
36+
include_in_tgc_next_DO_NOT_USE: true
37+
tgc_include_handwritten_tests: true
38+
cai2hcl_name_format: '{{crypto_key}}/cryptoKeyVersions/'
3639
timeouts:
3740
insert_minutes: 20
3841
update_minutes: 20

mmv1/provider/terraform_tgc_next.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ func (tgc TerraformGoogleConversionNext) CopyCommonFiles(outputFolder string, ge
247247
// services
248248
"pkg/services/compute/image.go": "third_party/terraform/services/compute/image.go",
249249
"pkg/services/compute/disk_type.go": "third_party/terraform/services/compute/disk_type.go",
250+
"pkg/services/kms/kms_utils.go": "third_party/terraform/services/kms/kms_utils.go",
250251
}
251252
tgc.CopyFileList(outputFolder, resourceConverters)
252253
}

mmv1/templates/tgc_next/cai2hcl/resource_converter.go.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (c *{{ $.ResourceName -}}Cai2hclConverter) convertResourceData(asset caiass
143143

144144
{{/* Attempt to parse all self-link parameters from asset name. */}}
145145
outputFields := {{ $.OutputFieldSetStr }}
146-
utils.ParseUrlParamValuesFromAssetName(asset.Name, "{{ $.GetCaiAssetNameTemplate }}", outputFields, hclData)
146+
utils.ParseUrlParamValuesFromAssetName(asset.Name, "{{ $.Cai2hclAssetNameTemplate }}", outputFields, hclData)
147147
{{ range $prop := $.ReadPropertiesForTgc }}
148148
{{ if $prop.FlattenObject -}}
149149
if flattenedProp := flatten{{ if $.NestedQuery -}}Nested{{end}}{{ $.ResourceName -}}{{ camelize $prop.Name "upper" -}}(res["{{ $prop.ApiName -}}"], d, config); flattenedProp != nil {

mmv1/templates/tgc_next/test/test_file.go.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ func TestAcc{{$.ResourceName}}(t *testing.T) {
4747
"{{ $field }}",
4848
{{- end }}
4949
},
50+
"{{$.TerraformName}}",
5051
)
5152
})
5253
}

mmv1/templates/tgc_next/tfplan2cai/resource_converter.go.tmpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"regexp"
2525
"strconv"
2626
"strings"
27+
"time"
2728

2829
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
2930
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
@@ -61,6 +62,7 @@ var (
6162
_ = retry.Retry
6263
_ = schema.Noop
6364
_ = structure.ExpandJsonFromString
65+
_ = time.Now
6466
_ = validation.All
6567
_ = terraform.State{}
6668
_ = tgcresource.RemoveTerraformAttributionLabel

0 commit comments

Comments
 (0)