@@ -3,6 +3,7 @@ package compute
33
44import (
55 " context"
6+ " encoding/json"
67 " fmt"
78 " reflect"
89 " strings"
@@ -1800,15 +1801,35 @@ func resourceComputeInstanceTemplateCreate(d *schema.ResourceData, meta interfac
18001801 Name: itName,
18011802 }
18021803
1803- op, err := NewClient(config, userAgent).InstanceTemplates.Insert (project, instanceTemplate).Do ()
1804+ itBytes, err := json.Marshal (instanceTemplate)
1805+ if err != nil {
1806+ return fmt.Errorf (" Error marshaling instance template: %s " , err)
1807+ }
1808+ var itBody map[string]interface{}
1809+ if err := json.Unmarshal (itBytes, &itBody); err != nil {
1810+ return fmt.Errorf (" Error unmarshaling instance template: %s " , err)
1811+ }
1812+
1813+ url, err := tpgresource.ReplaceVars (d, config, " {{" {{" }}ComputeBasePath{{" }}" }}projects/{{" {{" }}project{{" }}" }}/global/instanceTemplates" )
1814+ if err != nil {
1815+ return err
1816+ }
1817+ op, err := transport_tpg.SendRequest (transport_tpg.SendRequestOptions {
1818+ Config: config,
1819+ Method: " POST" ,
1820+ Project: project,
1821+ RawURL: url,
1822+ UserAgent: userAgent,
1823+ Body: itBody,
1824+ })
18041825 if err != nil {
18051826 return fmt.Errorf (" Error creating instance template: %s " , err)
18061827 }
18071828
18081829 // Store the ID now
18091830 d.SetId (fmt.Sprintf (" projects/%s /global/instanceTemplates/%s " , project, instanceTemplate.Name ))
18101831 // And also the unique ID
1811- d.Set (" self_link_unique" , fmt.Sprintf (" %v ?uniqueId=%v " , d.Id (), op.TargetId ))
1832+ d.Set (" self_link_unique" , fmt.Sprintf (" %v ?uniqueId=%v " , d.Id (), op[ " targetId " ] ))
18121833
18131834 err = ComputeOperationWaitTime(config, op, project, " Creating Instance Template" , userAgent, d.Timeout (schema.TimeoutCreate ))
18141835 if err != nil {
@@ -2096,14 +2117,35 @@ func resourceComputeInstanceTemplateRead(d *schema.ResourceData, meta interface{
20962117 }
20972118
20982119 splits := strings.Split (idStr, " /" )
2099- {{- if eq $ .TargetVersionName " ga" }}
2100- instanceTemplate, err := NewClient(config, userAgent).InstanceTemplates.Get (project, splits[len (splits)-1]).Do ()
2101- {{- else }}
2102- instanceTemplate, err := NewClient(config, userAgent).InstanceTemplates.Get (project, splits[len (splits)-1]).View (" FULL" ).Do ()
2103- {{- end }}
2120+ baseUrl, err := tpgresource.ReplaceVars (d, config, " {{" {{" }}ComputeBasePath{{" }}" }}projects/{{" {{" }}project{{" }}" }}/global/instanceTemplates" )
2121+ if err != nil {
2122+ return err
2123+ }
2124+ url := fmt.Sprintf (" %s /%s " , baseUrl, splits[len (splits)-1])
2125+ {{- if ne $ .TargetVersionName " ga" }}
2126+ url, err = transport_tpg.AddQueryParams (url, map[string]string{" view" : " FULL" })
2127+ if err != nil {
2128+ return err
2129+ }
2130+ {{- end }}
2131+ res, err := transport_tpg.SendRequest (transport_tpg.SendRequestOptions {
2132+ Config: config,
2133+ Method: " GET" ,
2134+ Project: project,
2135+ RawURL: url,
2136+ UserAgent: userAgent,
2137+ })
21042138 if err != nil {
21052139 return transport_tpg.HandleNotFoundError (err, d, fmt.Sprintf (" Instance Template %q " , d.Get (" name" ). (string)))
21062140 }
2141+ itBytes, err := json.Marshal (res)
2142+ if err != nil {
2143+ return fmt.Errorf (" Error marshaling instance template response: %s " , err)
2144+ }
2145+ var instanceTemplate compute.InstanceTemplate
2146+ if err := json.Unmarshal (itBytes, &instanceTemplate); err != nil {
2147+ return fmt.Errorf (" Error unmarshaling instance template response: %s " , err)
2148+ }
21072149 // Set the metadata fingerprint if there is one.
21082150 if instanceTemplate.Properties.Metadata != nil {
21092151 if err = d.Set (" metadata_fingerprint" , instanceTemplate.Properties.Metadata.Fingerprint ); err != nil {
@@ -2344,8 +2386,18 @@ func resourceComputeInstanceTemplateDelete(d *schema.ResourceData, meta interfac
23442386 }
23452387
23462388 splits := strings.Split (d.Id (), " /" )
2347- op, err := NewClient(config, userAgent).InstanceTemplates.Delete (
2348- project, splits[len (splits)-1]).Do ()
2389+ baseUrl, err := tpgresource.ReplaceVars (d, config, " {{" {{" }}ComputeBasePath{{" }}" }}projects/{{" {{" }}project{{" }}" }}/global/instanceTemplates" )
2390+ if err != nil {
2391+ return err
2392+ }
2393+ url := fmt.Sprintf (" %s /%s " , baseUrl, splits[len (splits)-1])
2394+ op, err := transport_tpg.SendRequest (transport_tpg.SendRequestOptions {
2395+ Config: config,
2396+ Method: " DELETE" ,
2397+ Project: project,
2398+ RawURL: url,
2399+ UserAgent: userAgent,
2400+ })
23492401 if err != nil {
23502402 return fmt.Errorf (" Error deleting instance template: %s " , err)
23512403 }
0 commit comments