@@ -21,7 +21,6 @@ import (
2121 "fmt"
2222 "log"
2323 "reflect"
24- "strings"
2524 "time"
2625
2726 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -47,10 +46,11 @@ func ResourceMonitoringMonitoredProject() *schema.Resource {
4746
4847 Schema : map [string ]* schema.Schema {
4948 "metrics_scope" : {
50- Type : schema .TypeString ,
51- Required : true ,
52- ForceNew : true ,
53- Description : `Required. The resource name of the existing Metrics Scope that will monitor this project. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}` ,
49+ Type : schema .TypeString ,
50+ Required : true ,
51+ ForceNew : true ,
52+ DiffSuppressFunc : tpgresource .CompareResourceNames ,
53+ Description : `Required. The resource name of the existing Metrics Scope that will monitor this project. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}` ,
5454 },
5555 "name" : {
5656 Type : schema .TypeString ,
@@ -92,7 +92,6 @@ func resourceMonitoringMonitoredProjectCreate(d *schema.ResourceData, meta inter
9292 if err != nil {
9393 return err
9494 }
95- url = strings .ReplaceAll (url , "projects/projects/" , "projects/" )
9695
9796 log .Printf ("[DEBUG] Creating new MonitoredProject: %#v" , obj )
9897 billingProject := ""
@@ -103,13 +102,14 @@ func resourceMonitoringMonitoredProjectCreate(d *schema.ResourceData, meta inter
103102 }
104103
105104 res , err := transport_tpg .SendRequest (transport_tpg.SendRequestOptions {
106- Config : config ,
107- Method : "POST" ,
108- Project : billingProject ,
109- RawURL : url ,
110- UserAgent : userAgent ,
111- Body : obj ,
112- Timeout : d .Timeout (schema .TimeoutCreate ),
105+ Config : config ,
106+ Method : "POST" ,
107+ Project : billingProject ,
108+ RawURL : url ,
109+ UserAgent : userAgent ,
110+ Body : obj ,
111+ Timeout : d .Timeout (schema .TimeoutCreate ),
112+ ErrorRetryPredicates : []transport_tpg.RetryErrorPredicateFunc {transport_tpg .IsMonitoringPermissionError },
113113 })
114114 if err != nil {
115115 return fmt .Errorf ("Error creating MonitoredProject: %s" , err )
@@ -120,7 +120,6 @@ func resourceMonitoringMonitoredProjectCreate(d *schema.ResourceData, meta inter
120120 if err != nil {
121121 return fmt .Errorf ("Error constructing id: %s" , err )
122122 }
123- id = strings .ReplaceAll (id , "projects/projects/" , "projects/" )
124123 d .SetId (id )
125124
126125 log .Printf ("[DEBUG] Finished creating MonitoredProject %q: %#v" , d .Id (), res )
@@ -139,7 +138,6 @@ func resourceMonitoringMonitoredProjectRead(d *schema.ResourceData, meta interfa
139138 if err != nil {
140139 return err
141140 }
142- url = strings .ReplaceAll (url , "projects/projects/" , "projects/" )
143141
144142 billingProject := ""
145143
@@ -148,12 +146,20 @@ func resourceMonitoringMonitoredProjectRead(d *schema.ResourceData, meta interfa
148146 billingProject = bp
149147 }
150148
149+ metricsScope := d .Get ("metrics_scope" ).(string )
150+ metricsScope = tpgresource .GetResourceNameFromSelfLink (metricsScope )
151+ d .Set ("metrics_scope" , metricsScope )
152+ url , err = tpgresource .ReplaceVars (d , config , "{{MonitoringBasePath}}v1/locations/global/metricsScopes/{{metrics_scope}}" )
153+ if err != nil {
154+ return err
155+ }
151156 res , err := transport_tpg .SendRequest (transport_tpg.SendRequestOptions {
152- Config : config ,
153- Method : "GET" ,
154- Project : billingProject ,
155- RawURL : url ,
156- UserAgent : userAgent ,
157+ Config : config ,
158+ Method : "GET" ,
159+ Project : billingProject ,
160+ RawURL : url ,
161+ UserAgent : userAgent ,
162+ ErrorRetryPredicates : []transport_tpg.RetryErrorPredicateFunc {transport_tpg .IsMonitoringPermissionError },
157163 })
158164 if err != nil {
159165 return transport_tpg .HandleNotFoundError (err , d , fmt .Sprintf ("MonitoringMonitoredProject %q" , d .Id ()))
@@ -206,7 +212,6 @@ func resourceMonitoringMonitoredProjectDelete(d *schema.ResourceData, meta inter
206212 if err != nil {
207213 return err
208214 }
209- url = strings .ReplaceAll (url , "projects/projects/" , "projects/" )
210215
211216 var obj map [string ]interface {}
212217 log .Printf ("[DEBUG] Deleting MonitoredProject %q" , d .Id ())
@@ -217,13 +222,14 @@ func resourceMonitoringMonitoredProjectDelete(d *schema.ResourceData, meta inter
217222 }
218223
219224 res , err := transport_tpg .SendRequest (transport_tpg.SendRequestOptions {
220- Config : config ,
221- Method : "DELETE" ,
222- Project : billingProject ,
223- RawURL : url ,
224- UserAgent : userAgent ,
225- Body : obj ,
226- Timeout : d .Timeout (schema .TimeoutDelete ),
225+ Config : config ,
226+ Method : "DELETE" ,
227+ Project : billingProject ,
228+ RawURL : url ,
229+ UserAgent : userAgent ,
230+ Body : obj ,
231+ Timeout : d .Timeout (schema .TimeoutDelete ),
232+ ErrorRetryPredicates : []transport_tpg.RetryErrorPredicateFunc {transport_tpg .IsMonitoringPermissionError },
227233 })
228234 if err != nil {
229235 return transport_tpg .HandleNotFoundError (err , d , "MonitoredProject" )
@@ -247,7 +253,6 @@ func resourceMonitoringMonitoredProjectImport(d *schema.ResourceData, meta inter
247253 if err != nil {
248254 return nil , fmt .Errorf ("Error constructing id: %s" , err )
249255 }
250- id = strings .ReplaceAll (id , "projects/projects/" , "projects/" )
251256 d .SetId (id )
252257
253258 return []* schema.ResourceData {d }, nil
@@ -270,6 +275,7 @@ func resourceMonitoringMonitoredProjectEncoder(d *schema.ResourceData, meta inte
270275 name = tpgresource .GetResourceNameFromSelfLink (name )
271276 metricsScope := d .Get ("metrics_scope" ).(string )
272277 metricsScope = tpgresource .GetResourceNameFromSelfLink (metricsScope )
278+ d .Set ("metrics_scope" , metricsScope )
273279 obj ["name" ] = fmt .Sprintf ("locations/global/metricsScopes/%s/projects/%s" , metricsScope , name )
274280 return obj , nil
275281}
0 commit comments