Skip to content

Commit 2950de8

Browse files
author
yann degat
committed
enforce CheckDeleted on all resources
1 parent 74403cc commit 2950de8

30 files changed

+262
-272
lines changed

ovh/data_source_ovh_me_installation_template.go

+141-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package ovh
22

33
import (
4+
"fmt"
5+
"net/url"
6+
47
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
"github.com/ovh/go-ovh/ovh"
59
)
610

711
func dataSourceMeInstallationTemplate() *schema.Resource {
@@ -254,9 +258,7 @@ func dataSourceMeInstallationTemplate() *schema.Resource {
254258

255259
func dataSourceMeInstallationTemplateRead(d *schema.ResourceData, meta interface{}) error {
256260
config := meta.(*Config)
257-
name := d.Get("template_name").(string)
258-
259-
template, err := getInstallationTemplate(name, config.OVHClient)
261+
template, err := getInstallationTemplate(d, config.OVHClient)
260262
if err != nil {
261263
return err
262264
}
@@ -272,6 +274,7 @@ func dataSourceMeInstallationTemplateRead(d *schema.ResourceData, meta interface
272274
return err
273275
}
274276

277+
name := d.Get("template_name").(string)
275278
d.SetId(name)
276279

277280
return nil
@@ -322,3 +325,138 @@ func partialMeInstallationTemplatePartitionSchemesRead(d *schema.ResourceData, m
322325

323326
return nil
324327
}
328+
329+
func getPartitionSchemes(template string, client *ovh.Client) ([]*PartitionScheme, error) {
330+
schemes, err := getPartitionSchemeIds(template, client)
331+
if err != nil {
332+
return nil, err
333+
}
334+
335+
partitionSchemes := []*PartitionScheme{}
336+
for _, scheme := range schemes {
337+
partitionScheme, err := getPartitionScheme(template, scheme, client)
338+
if err != nil {
339+
return nil, err
340+
}
341+
342+
partitionSchemes = append(partitionSchemes, partitionScheme)
343+
}
344+
345+
return partitionSchemes, nil
346+
}
347+
348+
func getPartitionScheme(template, scheme string, client *ovh.Client) (*PartitionScheme, error) {
349+
r := &PartitionScheme{}
350+
351+
endpoint := fmt.Sprintf(
352+
"/me/installationTemplate/%s/partitionScheme/%s",
353+
url.PathEscape(template),
354+
url.PathEscape(scheme),
355+
)
356+
357+
if err := client.Get(endpoint, r); err != nil {
358+
return nil, fmt.Errorf("Error calling GET %s: %s \n", endpoint, err.Error())
359+
}
360+
361+
return r, nil
362+
}
363+
364+
func getPartitionSchemeIds(template string, client *ovh.Client) ([]string, error) {
365+
schemes := []string{}
366+
endpoint := fmt.Sprintf(
367+
"/me/installationTemplate/%s/partitionScheme",
368+
url.PathEscape(template),
369+
)
370+
err := client.Get(endpoint, &schemes)
371+
372+
if err != nil {
373+
return nil, fmt.Errorf("Error calling GET %s: %s \n", endpoint, err.Error())
374+
}
375+
return schemes, nil
376+
}
377+
378+
func getPartitionSchemePartitions(template, scheme string, client *ovh.Client) ([]*Partition, error) {
379+
mountPoints := []string{}
380+
endpoint := fmt.Sprintf(
381+
"/me/installationTemplate/%s/partitionScheme/%s/partition",
382+
url.PathEscape(template),
383+
url.PathEscape(scheme),
384+
)
385+
err := client.Get(endpoint, &mountPoints)
386+
387+
if err != nil {
388+
return nil, fmt.Errorf("Error calling GET %s: %s \n", endpoint, err.Error())
389+
}
390+
391+
partitions := []*Partition{}
392+
for _, mountPoint := range mountPoints {
393+
partition, err := getPartitionSchemePartition(template, scheme, mountPoint, client)
394+
if err != nil {
395+
return nil, err
396+
}
397+
398+
partitions = append(partitions, partition)
399+
}
400+
401+
return partitions, nil
402+
}
403+
404+
func getPartitionSchemePartition(template, scheme, mountPoint string, client *ovh.Client) (*Partition, error) {
405+
r := &Partition{}
406+
407+
endpoint := fmt.Sprintf(
408+
"/me/installationTemplate/%s/partitionScheme/%s/partition/%s",
409+
url.PathEscape(template),
410+
url.PathEscape(scheme),
411+
url.PathEscape(mountPoint),
412+
)
413+
414+
if err := client.Get(endpoint, r); err != nil {
415+
return nil, fmt.Errorf("Calling GET %s: %s \n", endpoint, err.Error())
416+
}
417+
418+
return r, nil
419+
}
420+
421+
func getPartitionSchemeHardwareRaids(template, scheme string, client *ovh.Client) ([]*HardwareRaid, error) {
422+
names := []string{}
423+
endpoint := fmt.Sprintf(
424+
"/me/installationTemplate/%s/partitionScheme/%s/hardwareRaid",
425+
url.PathEscape(template),
426+
url.PathEscape(scheme),
427+
)
428+
err := client.Get(endpoint, &names)
429+
430+
if err != nil {
431+
return nil, fmt.Errorf("Error calling GET %s: %s \n", endpoint, err.Error())
432+
}
433+
434+
hardwareRaids := []*HardwareRaid{}
435+
for _, name := range names {
436+
hardwareRaid, err := getPartitionSchemeHardwareRaid(template, scheme, name, client)
437+
if err != nil {
438+
return nil, err
439+
}
440+
441+
hardwareRaids = append(hardwareRaids, hardwareRaid)
442+
}
443+
444+
return hardwareRaids, nil
445+
}
446+
447+
func getPartitionSchemeHardwareRaid(template, scheme, name string, client *ovh.Client) (*HardwareRaid, error) {
448+
r := &HardwareRaid{}
449+
450+
endpoint := fmt.Sprintf(
451+
"/me/installationTemplate/%s/partitionScheme/%s/hardwareRaid/%s",
452+
url.PathEscape(template),
453+
url.PathEscape(scheme),
454+
url.PathEscape(name),
455+
)
456+
457+
if err := client.Get(endpoint, r); err != nil {
458+
return nil, fmt.Errorf("Error calling %s: %s \n", endpoint, err.Error())
459+
}
460+
461+
return r, nil
462+
}

ovh/resource_ovh_cloud_project_network_private.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,8 @@ func resourceCloudProjectNetworkPrivateRead(d *schema.ResourceData, meta interfa
172172

173173
endpoint := fmt.Sprintf("/cloud/project/%s/network/private/%s", serviceName, d.Id())
174174

175-
err = config.OVHClient.Get(endpoint, r)
176-
if err != nil {
177-
return fmt.Errorf("Error calling %s:\n\t %q", endpoint, err)
175+
if err := config.OVHClient.Get(endpoint, r); err != nil {
176+
return helpers.CheckDeleted(d, err, endpoint)
178177
}
179178

180179
err = readCloudProjectNetworkPrivate(config, d, r)

ovh/resource_ovh_cloud_project_network_private_subnet.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,8 @@ func resourceCloudProjectNetworkPrivateSubnetRead(d *schema.ResourceData, meta i
198198

199199
endpoint := fmt.Sprintf("/cloud/project/%s/network/private/%s/subnet", serviceName, networkId)
200200

201-
err = config.OVHClient.Get(endpoint, &r)
202-
if err != nil {
203-
return fmt.Errorf("calling GET %s:\n\t %q", endpoint, err)
201+
if err := config.OVHClient.Get(endpoint, r); err != nil {
202+
return helpers.CheckDeleted(d, err, endpoint)
204203
}
205204

206205
err = readCloudProjectNetworkPrivateSubnet(d, r)

ovh/resource_ovh_cloud_project_user.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,8 @@ func resourceCloudProjectUserRead(d *schema.ResourceData, meta interface{}) erro
205205
d.Id(),
206206
)
207207

208-
err = config.OVHClient.Get(endpoint, user)
209-
if err != nil {
210-
return fmt.Errorf("calling Get %s:\n\t %q", endpoint, err)
208+
if err := config.OVHClient.Get(endpoint, user); err != nil {
209+
return helpers.CheckDeleted(d, err, endpoint)
211210
}
212211

213212
d.SetId(strconv.Itoa(user.Id))

ovh/resource_ovh_dedicated_ceph_acl.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,10 @@ func resourceDedicatedCephACLRead(d *schema.ResourceData, meta interface{}) erro
149149
url := fmt.Sprintf("/dedicated/ceph/%s/acl/%s", id, d.Id())
150150
resp := &DedicatedCephACL{}
151151

152-
err := config.OVHClient.Get(url, resp)
153-
if err != nil {
154-
return fmt.Errorf("Error calling GET %s:\n\t%q", url, err)
152+
if err := config.OVHClient.Get(url, resp); err != nil {
153+
return helpers.CheckDeleted(d, err, url)
155154
}
155+
156156
d.Set("netmask", resp.Netmask)
157157
d.Set("family", resp.Family)
158158
d.Set("network", resp.Network)

ovh/resource_ovh_dedicated_server_install_task.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ func resourceDedicatedServerInstallTaskRead(d *schema.ResourceData, meta interfa
218218

219219
task, err := getDedicatedServerTask(serviceName, id, config.OVHClient)
220220
if err != nil {
221-
//After some delay, if the task is marked as `done`, the Provider
221+
// After some delay, if the task is marked as `done`, the Provider
222222
// may purge it. To avoid raising errors when terraform refreshes its plan,
223223
// 404 errors are ignored on Resource Read, thus some information may be lost
224224
// after a while.

ovh/resource_ovh_dedicated_server_reboot_task.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func resourceDedicatedServerRebootTaskRead(d *schema.ResourceData, meta interfac
110110

111111
task, err := getDedicatedServerTask(serviceName, id, config.OVHClient)
112112
if err != nil {
113-
//After some delay, if the task is marked as `done`, the Provider
113+
// After some delay, if the task is marked as `done`, the Provider
114114
// may purge it. To avoid raising errors when terraform refreshes its plan,
115115
// 404 errors are ignored on Resource Read, thus some information may be lost
116116
// after a while.

ovh/resource_ovh_domain_zone_record.go

+13-7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313
"github.com/ovh/go-ovh/ovh"
14+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
1415
)
1516

1617
type OvhDomainZoneRecord struct {
@@ -128,7 +129,7 @@ func resourceOvhDomainZoneRecordCreate(d *schema.ResourceData, meta interface{})
128129
// reverse order to keep the last item if found
129130
sort.Sort(sort.Reverse(sort.IntSlice(records)))
130131
for _, rec := range records {
131-
record, err := ovhDomainZoneRecord(provider.OVHClient, zone, strconv.Itoa(rec), true)
132+
record, err := ovhDomainZoneRecord(provider.OVHClient, d, strconv.Itoa(rec), true)
132133
if err != nil {
133134
return fmt.Errorf("Error calling /domain/zone/%s. Zone may have been left with orphan records!:\n\t %q", zone, err)
134135
}
@@ -156,9 +157,10 @@ func resourceOvhDomainZoneRecordCreate(d *schema.ResourceData, meta interface{})
156157
func resourceOvhDomainZoneRecordRead(d *schema.ResourceData, meta interface{}) error {
157158
provider := meta.(*Config)
158159

159-
record, err := ovhDomainZoneRecord(provider.OVHClient, d.Get("zone").(string), d.Id(), d.IsNewResource())
160+
record, err := ovhDomainZoneRecord(provider.OVHClient, d, d.Id(), d.IsNewResource())
161+
160162
if err != nil {
161-
return fmt.Errorf("Unable to find zone record %s after retries: %s", d.Id(), err)
163+
return err
162164
}
163165

164166
d.Set("zone", record.Zone)
@@ -246,12 +248,15 @@ func ovhDomainZoneRefresh(d *schema.ResourceData, meta interface{}) error {
246248
return nil
247249
}
248250

249-
func ovhDomainZoneRecord(client *ovh.Client, zone string, id string, retry bool) (*OvhDomainZoneRecord, error) {
251+
func ovhDomainZoneRecord(client *ovh.Client, d *schema.ResourceData, id string, retry bool) (*OvhDomainZoneRecord, error) {
250252
rec := &OvhDomainZoneRecord{}
253+
zone := d.Get("zone").(string)
254+
255+
endpoint := fmt.Sprintf("/domain/zone/%s/record/%s", zone, id)
251256

252257
err := resource.Retry(1*time.Minute, func() *resource.RetryError {
253258
err := client.Get(
254-
fmt.Sprintf("/domain/zone/%s/record/%s", zone, id),
259+
endpoint,
255260
rec,
256261
)
257262
if err != nil {
@@ -262,9 +267,10 @@ func ovhDomainZoneRecord(client *ovh.Client, zone string, id string, retry bool)
262267
}
263268
return nil
264269
})
270+
265271
if err != nil {
266-
return nil, fmt.Errorf("Unable to find zone record %s/%s after retries: %s", zone, id, err)
272+
return nil, helpers.CheckDeleted(d, err, endpoint)
267273
}
268274

269-
return rec, nil
275+
return rec, err
270276
}

ovh/resource_ovh_domain_zone_redirection.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strconv"
77

88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
910
)
1011

1112
type OvhDomainZoneRedirection struct {
@@ -102,14 +103,10 @@ func resourceOvhDomainZoneRedirectionRead(d *schema.ResourceData, meta interface
102103
provider := meta.(*Config)
103104

104105
redirection := OvhDomainZoneRedirection{}
105-
err := provider.OVHClient.Get(
106-
fmt.Sprintf("/domain/zone/%s/redirection/%s", d.Get("zone").(string), d.Id()),
107-
&redirection,
108-
)
106+
endpoint := fmt.Sprintf("/domain/zone/%s/redirection/%s", d.Get("zone").(string), d.Id())
109107

110-
if err != nil {
111-
d.SetId("")
112-
return nil
108+
if err := provider.OVHClient.Get(endpoint, &redirection); err != nil {
109+
return helpers.CheckDeleted(d, err, endpoint)
113110
}
114111

115112
d.Set("zone", redirection.Zone)

ovh/resource_ovh_ip_reverse.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,14 @@ func resourceOvhIpReverseRead(d *schema.ResourceData, meta interface{}) error {
103103
provider := meta.(*Config)
104104

105105
reverse := OvhIpReverse{}
106-
err := provider.OVHClient.Get(
107-
fmt.Sprintf("/ip/%s/reverse/%s", strings.Replace(d.Get("ip").(string), "/", "%2F", 1), d.Get("ipreverse").(string)),
108-
&reverse,
106+
endpoint := fmt.Sprintf(
107+
"/ip/%s/reverse/%s",
108+
strings.Replace(d.Get("ip").(string), "/", "%2F", 1),
109+
d.Get("ipreverse").(string),
109110
)
110111

111-
if err != nil {
112-
d.SetId("")
113-
return nil
112+
if err := provider.OVHClient.Get(endpoint, &reverse); err != nil {
113+
return helpers.CheckDeleted(d, err, endpoint)
114114
}
115115

116116
d.Set("ipreverse", reverse.IpReverse)

ovh/resource_ovh_iploadbalancing_http_farm.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,8 @@ func resourceIpLoadbalancingHttpFarmRead(d *schema.ResourceData, meta interface{
192192
r := &IpLoadbalancingFarm{}
193193
endpoint := fmt.Sprintf("/ipLoadbalancing/%s/http/farm/%s", service, d.Id())
194194

195-
err := config.OVHClient.Get(endpoint, &r)
196-
if err != nil {
197-
return fmt.Errorf("calling GET %s:\n\t %s", endpoint, err.Error())
195+
if err := config.OVHClient.Get(endpoint, r); err != nil {
196+
return helpers.CheckDeleted(d, err, endpoint)
198197
}
199198

200199
probes := make([]map[string]interface{}, 0)

ovh/resource_ovh_iploadbalancing_http_farm_server.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,8 @@ func resourceIpLoadbalancingHttpFarmServerRead(d *schema.ResourceData, meta inte
168168

169169
endpoint := fmt.Sprintf("/ipLoadbalancing/%s/http/farm/%d/server/%s", service, farmid, d.Id())
170170

171-
err := config.OVHClient.Get(endpoint, r)
172-
if err != nil {
173-
return fmt.Errorf("calling GET %s :\n\t %q", endpoint, err)
171+
if err := config.OVHClient.Get(endpoint, r); err != nil {
172+
return helpers.CheckDeleted(d, err, endpoint)
174173
}
175174

176175
// set resource attributes

ovh/resource_ovh_iploadbalancing_http_frontend.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,8 @@ func resourceIpLoadbalancingHttpFrontendRead(d *schema.ResourceData, meta interf
148148
r := &IpLoadbalancingHttpFrontend{}
149149
endpoint := fmt.Sprintf("/ipLoadbalancing/%s/http/frontend/%s", service, d.Id())
150150

151-
err := config.OVHClient.Get(endpoint, &r)
152-
if err != nil {
153-
return fmt.Errorf("calling %s:\n\t %s", endpoint, err.Error())
151+
if err := config.OVHClient.Get(endpoint, r); err != nil {
152+
return helpers.CheckDeleted(d, err, endpoint)
154153
}
155154

156155
d.SetId(fmt.Sprintf("%d", r.FrontendId))

ovh/resource_ovh_iploadbalancing_http_route.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ func resourceIPLoadbalancingRouteHTTPRead(d *schema.ResourceData, meta interface
116116
r := &IPLoadbalancingRouteHTTP{}
117117
endpoint := fmt.Sprintf("/ipLoadbalancing/%s/http/route/%s", service, d.Id())
118118

119-
err := config.OVHClient.Get(endpoint, &r)
120-
if err != nil {
119+
if err := config.OVHClient.Get(endpoint, r); err != nil {
121120
return helpers.CheckDeleted(d, err, endpoint)
122121
}
123122

0 commit comments

Comments
 (0)