1
1
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2
- package scaleway
2
+ package {{.API}}
3
3
4
4
import (
5
5
"context"
6
6
7
7
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8
8
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9
9
"github.com/scaleway/scaleway-sdk-go/scw"
10
+ _ "time"
10
11
)
11
12
12
13
func Resource{{ .Resource }}() *schema.Resource {
@@ -18,7 +19,13 @@ func Resource{{ .Resource }}() *schema.Resource {
18
19
Importer: &schema.ResourceImporter{
19
20
StateContext: schema.ImportStatePassthroughContext,
20
21
},
21
- //TODO: timeouts
22
+ Timeouts: &schema.ResourceTimeout{
23
+ Create: schema.DefaultTimeout(default{{.APIFirstLetterUpper}}{{.Resource}}Timeout),
24
+ Read: schema.DefaultTimeout(default{{.APIFirstLetterUpper}}{{.Resource}}Timeout),
25
+ Update: schema.DefaultTimeout(default{{.APIFirstLetterUpper}}{{.Resource}}Timeout),
26
+ Delete: schema.DefaultTimeout(default{{.APIFirstLetterUpper}}{{.Resource}}Timeout),
27
+ Default: schema.DefaultTimeout(default{{.APIFirstLetterUpper}}{{.Resource}}Timeout),
28
+ },
22
29
SchemaVersion: 0,
23
30
Schema: map[string]*schema.Schema{
24
31
"name": {
@@ -27,28 +34,31 @@ func Resource{{ .Resource }}() *schema.Resource {
27
34
Optional: true,
28
35
Description: "The {{ .ResourceCleanLow }} name",
29
36
},
30
- "{{ .Locality }}": {{ .Locality }} Schema(),
37
+ "{{ .Locality }}": {{.LocalityAdjective}}. Schema(),
31
38
"project_id": account.ProjectIDSchema(),
39
+ "organization_id": account.OrganizationIDSchema(),
32
40
},
33
41
}
34
42
}
35
43
36
44
func Resource{{ .Resource }}Create(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
37
- api, {{ .Locality }}, err := {{ .API }}APIWith {{ .LocalityUpper }}(d, m)
45
+ api, {{ .Locality }}, err := newAPIWith {{ .LocalityUpper }}(d, m)
38
46
if err != nil {
39
47
return diag.FromErr(err)
40
48
}
41
49
42
- {{ .ResourceCleanLow }}, err := api.Create{{ .ResourceClean }}(&{{ .API }}.Create{{ .ResourceClean }}Request{
43
- {{.LocalityUpper}}: {{.Locality}},
44
- ProjectID: d.Get("project_id").(string),
45
- Name: types.ExpandOrGenerateString(d.Get("name").(string), "{{ .ResourceCleanLow }}"),
46
- }, scw.WithContext(ctx))
50
+ req := &{{ .API }}.Create{{ .ResourceClean }}Request{
51
+ {{.LocalityUpper}}: {{.Locality}},
52
+ ProjectID: d.Get("project_id").(string),
53
+ Name: types.ExpandOrGenerateString(d.Get("name").(string), "{{ .ResourceCleanLow }}"),
54
+ }
55
+
56
+ {{ .ResourceCleanLow }}, err = api.Create{{.ResourceClean}}(req, scw.WithContext(ctx))
47
57
if err != nil {
48
58
return diag.FromErr(err)
49
59
}
50
60
51
- d.SetId(new{{ .LocalityAdjectiveUpper }}IDString ({{ .Locality }}, {{ .ResourceCleanLow }}.ID))
61
+ d.SetId({{.LocalityAdjective}}.NewIDString ({{ .Locality }}, {{ .ResourceCleanLow }}.ID))
52
62
53
63
{{if .SupportWaiters}}
54
64
_, err = waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, {{ .ResourceCleanLow }}.ID, d.Timeout(schema.TimeoutCreate))
@@ -61,21 +71,22 @@ func Resource{{ .Resource }}Create(ctx context.Context, d *schema.ResourceData,
61
71
}
62
72
63
73
func Resource{{ .Resource }}Read(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
64
- api, {{ .Locality }}, id, err := {{ .API }}APIWith {{ .LocalityUpper }}AndID(m, d.Id())
74
+ api, {{ .Locality }}, id, err := NewAPIWith {{ .LocalityUpper }}AndID(m, d.Id())
65
75
if err != nil {
66
76
return diag.FromErr(err)
67
77
}
68
78
{{if .SupportWaiters}}
69
79
{{ .ResourceCleanLow }}, err := waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutRead))
70
80
if err != nil {
71
- if is404Error (err) {
81
+ if httperrors.Is404 (err) {
72
82
d.SetId("")
73
83
return nil
74
84
}
75
85
return diag.FromErr(err)
76
86
}
77
87
{{- else}}
78
- {{.ResourceCleanLow}}, err := api.Get{{.ResourceClean}}(&{{.API}}.Get{{.ResourceClean}}Request{
88
+ {{.ResourceCleanLow}}, err = api.Get{{.ResourceClean}}(&
89
+ {
79
90
{{.ResourceClean}}ID: id,
80
91
{{.LocalityUpper}}: {{.Locality}},
81
92
}, scw.WithContext(ctx))
@@ -89,14 +100,14 @@ func Resource{{ .Resource }}Read(ctx context.Context, d *schema.ResourceData, m
89
100
}
90
101
91
102
func Resource{{ .Resource }}Update(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
92
- api, {{ .Locality }}, id, err := {{ .API }}APIWith {{ .LocalityUpper }}AndID(m, d.Id())
103
+ api, {{ .Locality }}, id, err := NewAPIWith {{ .LocalityUpper }}AndID(m, d.Id())
93
104
if err != nil {
94
105
return diag.FromErr(err)
95
106
}
96
107
{{if .SupportWaiters }}
97
108
{{ .ResourceCleanLow }}, err := waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutUpdate))
98
109
if err != nil {
99
- if is404Error (err) {
110
+ if httperrors.Is404 (err) {
100
111
d.SetId("")
101
112
return nil
102
113
}
@@ -120,7 +131,7 @@ func Resource{{ .Resource }}Update(ctx context.Context, d *schema.ResourceData,
120
131
}
121
132
122
133
func Resource{{ .Resource }}Delete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
123
- api, {{ .Locality }}, id, err := {{ .API }}APIWith {{ .LocalityUpper }}AndID(m, d.Id())
134
+ api, {{ .Locality }}, id, err := NewAPIWith {{ .LocalityUpper }}AndID(m, d.Id())
124
135
if err != nil {
125
136
return diag.FromErr(err)
126
137
}
@@ -140,7 +151,7 @@ func Resource{{ .Resource }}Delete(ctx context.Context, d *schema.ResourceData,
140
151
141
152
{{- if .SupportWaiters}}
142
153
_, err = waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutDelete))
143
- if err != nil && !is404Error (err) {
154
+ if err != nil && !httperrors.Is404 (err) {
144
155
return diag.FromErr(err)
145
156
}
146
157
{{- end}}
0 commit comments