@@ -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