Skip to content

Commit fe71c31

Browse files
authored
tgc-revival: support SecretManagerSecret (#15473)
1 parent 5eb5357 commit fe71c31

File tree

5 files changed

+62
-29
lines changed

5 files changed

+62
-29
lines changed

mmv1/api/resource.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,10 +2298,7 @@ func (r Resource) TGCTestIgnorePropertiesToStrings(e resource.Examples) []string
22982298
} else if tp.IsMissingInCai {
22992299
props = append(props, tp.MetadataLineage())
23002300
} else if tp.IgnoreRead {
2301-
if tp.Sensitive || tp.Name == "tags" {
2302-
// TODO: handle tags conversion, which are separate Cai assets with resources.
2303-
props = append(props, tp.MetadataLineage())
2304-
}
2301+
props = append(props, tp.MetadataLineage())
23052302
}
23062303
}
23072304
props = append(props, e.TGCTestIgnoreExtra...)

mmv1/products/secretmanager/Secret.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ iam_policy:
3838
allowed_iam_role: 'roles/secretmanager.secretAccessor'
3939
parent_resource_attribute: 'secret_id'
4040
iam_conditions_request_type: 'QUERY_PARAM_NESTED'
41+
include_in_tgc_next_DO_NOT_USE: true
4142
custom_code:
4243
constants: 'templates/terraform/constants/secret_manager_secret.go.tmpl'
4344
pre_update: 'templates/terraform/pre_update/secret_manager_secret.go.tmpl'

mmv1/products/secretmanagerregional/RegionalSecret.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ iam_policy:
4444
custom_code:
4545
pre_update: 'templates/terraform/pre_update/secret_manager_regional_secret.go.tmpl'
4646
pre_delete: 'templates/terraform/pre_delete/regional_secret.go.tmpl'
47+
include_in_tgc_next_DO_NOT_USE: true
4748
examples:
4849
- name: 'regional_secret_config_basic'
4950
primary_resource_id: 'regional-secret-basic'

mmv1/provider/terraform_tgc_next.go

Lines changed: 56 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -394,46 +394,78 @@ func FindIdentityParams(rids []ResourceIdentifier) []ResourceIdentifier {
394394
segmentsList[i] = cleanSegments
395395
}
396396

397-
if len(segmentsList[0]) == 0 {
398-
return rids
397+
segmentsList = removeSharedElements(segmentsList)
398+
399+
for i, segments := range segmentsList {
400+
if len(segments) == 0 {
401+
rids[i].IdentityParam = ""
402+
} else {
403+
rids[i].IdentityParam = segments[0]
404+
}
399405
}
400-
expectedLength := len(segmentsList[0])
401406

402-
for i := 1; i < len(segmentsList); i++ {
403-
if len(segmentsList[i]) != expectedLength {
404-
return rids
407+
// Move the id with empty IdentityParam to the end of the list
408+
for i, ids := range rids {
409+
if ids.IdentityParam == "" {
410+
temp := ids
411+
lastIndex := len(rids) - 1
412+
if i != lastIndex {
413+
rids[i] = rids[lastIndex]
414+
rids[lastIndex] = temp
415+
}
416+
break
405417
}
406418
}
407419

408-
varyingIndex := -1
420+
return rids
421+
}
409422

410-
for i := 0; i < expectedLength; i++ {
411-
referenceSegment := segmentsList[0][i]
412-
isVarying := false
423+
// Finds elements common to ALL lists in a list of lists
424+
// and returns a new list of lists with those common elements removed.
425+
func removeSharedElements(list_of_lists [][]string) [][]string {
426+
if len(list_of_lists) <= 1 {
427+
return list_of_lists
428+
}
413429

414-
for j := 1; j < len(segmentsList); j++ {
415-
if segmentsList[j][i] != referenceSegment {
416-
isVarying = true
417-
break
418-
}
430+
sharedSet := make(map[string]bool)
431+
for _, element := range list_of_lists[0] {
432+
sharedSet[element] = true
433+
}
434+
435+
for i := 1; i < len(list_of_lists); i++ {
436+
currentListSet := make(map[string]bool)
437+
for _, element := range list_of_lists[i] {
438+
currentListSet[element] = true
419439
}
420440

421-
if isVarying {
422-
if varyingIndex != -1 {
423-
return rids
441+
newSharedSet := make(map[string]bool)
442+
443+
for element := range sharedSet {
444+
if currentListSet[element] {
445+
newSharedSet[element] = true
424446
}
425-
varyingIndex = i
447+
}
448+
449+
sharedSet = newSharedSet
450+
451+
if len(sharedSet) == 0 {
452+
break
426453
}
427454
}
428455

429-
if varyingIndex != -1 {
430-
for i, segments := range segmentsList {
431-
rids[i].IdentityParam = segments[varyingIndex]
456+
var new_list_of_lists [][]string
457+
458+
for _, sublist := range list_of_lists {
459+
var newSublist []string
460+
for _, element := range sublist {
461+
if !sharedSet[element] {
462+
newSublist = append(newSublist, element)
463+
}
432464
}
433-
return rids
465+
new_list_of_lists = append(new_list_of_lists, newSublist)
434466
}
435467

436-
return rids
468+
return new_list_of_lists
437469
}
438470

439471
type TgcWithProducts struct {

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ func ConvertResource(asset caiasset.Asset) ([]*models.TerraformResourceBlock, er
4646
{{- range $i, $object := $resources }}
4747
{{- if eq $i 0 }}
4848
if strings.Contains(asset.Name, "{{$object.IdentityParam}}") {
49-
{{- else }}
49+
{{- else if $object.IdentityParam }}
5050
} else if strings.Contains(asset.Name, "{{$object.IdentityParam}}") {
51+
{{- else }}
52+
} else {
5153
{{- end }}
5254
converter = ConverterMap[asset.Type]["{{ $object.AliasName }}"]
5355
{{- if eq $i (sub (len $resources) 1)}}

0 commit comments

Comments
 (0)