Skip to content

Commit 7e7b3f7

Browse files
committed
2 parents 3c5924b + 1b462a3 commit 7e7b3f7

1 file changed

Lines changed: 41 additions & 27 deletions

File tree

mmv1/templates/terraform/resource.go.tmpl

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -815,34 +815,11 @@ func resource{{ $.ResourceName -}}Read(d *schema.ResourceData, meta interface{})
815815
return fmt.Errorf("Error reading {{ $.Name -}}: %s", err)
816816
}
817817
{{- end}}
818-
{{ range $prop := $.GettableProperties }}
819-
{{if $prop.FlattenObject -}}
820-
// Terraform must set the top level schema field, but since this object contains collapsed properties
821-
// it's difficult to know what the top level should be. Instead we just loop over the map returned from flatten.
822-
if flattenedProp := flatten{{ if $.NestedQuery -}}Nested{{end}}{{ $.ResourceName -}}{{ camelize $prop.Name "upper" -}}(res["{{ $prop.ApiName -}}"], d, config); flattenedProp != nil {
823-
if gerr, ok := flattenedProp.(*googleapi.Error); ok {
824-
return fmt.Errorf("Error reading {{ $.Name -}}: %s", gerr)
825-
}
826-
casted := flattenedProp.([]interface{})[0]
827-
if casted != nil {
828-
for k, v := range casted.(map[string]interface{}) {
829-
if err := d.Set(k, v); err != nil {
830-
return fmt.Errorf("Error setting %s: %s", k, err)
831-
}
832-
}
833-
}
834-
}
835-
{{- else -}}
836-
if err := d.Set("{{ underscore $prop.Name -}}", flatten{{ if $.NestedQuery -}}Nested{{end}}{{ $.ResourceName -}}{{ camelize $prop.Name "upper" -}}(res["{{ $prop.ApiName -}}"], d, config)); err != nil {
837-
return fmt.Errorf("Error reading {{ $.Name -}}: %s", err)
838-
}
839-
{{- end}}
840-
{{- end}}
841-
{{if $.HasSelfLink -}}
842-
if err := d.Set("self_link", tpgresource.ConvertSelfLinkToV1(res["selfLink"].(string))); err != nil {
843-
return fmt.Errorf("Error reading {{ $.Name -}}: %s", err)
818+
err = Resource{{ $.ResourceName -}}Flatten(d, meta, res, config, {{- if $.HasProject }}project,{{ end }} userAgent, billingProject, url, headers)
819+
if err != nil {
820+
return err
844821
}
845-
{{- end}}
822+
846823
{{ if and (not $.ExcludeIdentityGeneration) (not $.ExcludeRead) }}
847824
identity, err := d.Identity()
848825
if err == nil && identity != nil {
@@ -1541,3 +1518,40 @@ func resource{{ $.ResourceName -}}PostCreateSetComputedFields(d *schema.Resource
15411518
return nil
15421519
}
15431520
{{- end }}
1521+
1522+
{{ if not $.ExcludeRead }}
1523+
func Resource{{ $.ResourceName -}}Flatten(d *schema.ResourceData, meta interface{}, res map[string]interface{}, config *transport_tpg.Config,{{if $.HasProject -}}project string, {{end -}}userAgent string, billingProject string, url string, headers http.Header) error {
1524+
{{- if or $.GettableProperties $.HasSelfLink }}
1525+
var err error
1526+
{{- end }}
1527+
{{ range $prop := $.GettableProperties }}
1528+
{{if $prop.FlattenObject -}}
1529+
// Terraform must set the top level schema field, but since this object contains collapsed properties
1530+
// it's difficult to know what the top level should be. Instead we just loop over the map returned from flatten.
1531+
if flattenedProp := flatten{{ if $.NestedQuery -}}Nested{{end}}{{ $.ResourceName -}}{{ camelize $prop.Name "upper" -}}(res["{{ $prop.ApiName -}}"], d, config); flattenedProp != nil {
1532+
if gerr, ok := flattenedProp.(*googleapi.Error); ok {
1533+
return fmt.Errorf("Error reading {{ $.Name -}}: %s", gerr)
1534+
}
1535+
casted := flattenedProp.([]interface{})[0]
1536+
if casted != nil {
1537+
for k, v := range casted.(map[string]interface{}) {
1538+
if err := d.Set(k, v); err != nil {
1539+
return fmt.Errorf("Error setting %s: %s", k, err)
1540+
}
1541+
}
1542+
}
1543+
}
1544+
{{- else -}}
1545+
if err = d.Set("{{ underscore $prop.Name -}}", flatten{{ if $.NestedQuery -}}Nested{{end}}{{ $.ResourceName -}}{{ camelize $prop.Name "upper" -}}(res["{{ $prop.ApiName -}}"], d, config)); err != nil {
1546+
return fmt.Errorf("Error reading {{ $.Name -}}: %s", err)
1547+
}
1548+
{{- end}}
1549+
{{- end}}
1550+
{{if $.HasSelfLink -}}
1551+
if err = d.Set("self_link", tpgresource.ConvertSelfLinkToV1(res["selfLink"].(string))); err != nil {
1552+
return fmt.Errorf("Error reading {{ $.Name -}}: %s", err)
1553+
}
1554+
{{- end }}
1555+
return nil
1556+
}
1557+
{{- end -}}

0 commit comments

Comments
 (0)