Skip to content

Commit 3ebf8f3

Browse files
committed
fix(tftemplate): fix generation
1 parent 2556547 commit 3ebf8f3

12 files changed

+85
-44
lines changed

cmd/tftemplate/datasource.go.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2-
package scaleway
2+
package {{.API}}
33

44
import (
55
"context"

cmd/tftemplate/datasource_test.go.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2-
package scaleway
2+
package {{.API}}_test
33

44
import (
55
"testing"

cmd/tftemplate/go.mod

+5-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ require github.com/AlecAivazis/survey/v2 v2.3.7
88

99
require (
1010
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
11-
github.com/mattn/go-colorable v0.1.2 // indirect
12-
github.com/mattn/go-isatty v0.0.8 // indirect
11+
github.com/mattn/go-colorable v0.1.13 // indirect
12+
github.com/mattn/go-isatty v0.0.20 // indirect
1313
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
14-
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
14+
github.com/stretchr/testify v1.7.0 // indirect
15+
golang.org/x/sys v0.20.0 // indirect
1516
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
16-
golang.org/x/text v0.4.0 // indirect
17+
golang.org/x/text v0.15.0 // indirect
1718
)

cmd/tftemplate/go.sum

+13-5
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,21 @@ github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u
1111
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
1212
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
1313
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
14-
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
1514
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
16-
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
15+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
16+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
1717
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
18+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
19+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
20+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1821
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
1922
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
2023
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2124
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2225
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
23-
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
2426
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
27+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
28+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
2529
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
2630
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
2731
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -36,16 +40,20 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h
3640
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
3741
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3842
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
39-
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
4043
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
44+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
45+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
46+
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
47+
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
4148
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
4249
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
4350
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
4451
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
4552
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
4653
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
47-
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
4854
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
55+
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
56+
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
4957
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
5058
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
5159
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=

cmd/tftemplate/helpers.go.tmpl

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2-
package scaleway
2+
package {{.API}}
33

44
import (
55
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
66
"github.com/scaleway/scaleway-sdk-go/scw"
77
)
88

9-
// {{.API}}APIWith{{.LocalityUpper}} returns a new {{.API}} API and the {{.Locality}} for a Create request
9+
// newAPIWith{{.LocalityUpper}} returns a new {{.API}} API and the {{.Locality}} for a Create request
1010
func {{.API}}APIWith{{.LocalityUpper}}(d *schema.ResourceData, m interface{}) (*{{.API}}.API, scw.{{.LocalityUpper}}, error) {
1111
{{.API}}API := {{.API}}.NewAPI(meta.ExtractScwClient(m))
1212

13-
{{.Locality}}, err := extract{{.LocalityUpper}}(d, m)
13+
{{.Locality}}, err := meta.Extract{{.LocalityUpper}}(d, m)
1414
if err != nil {
1515
return nil, "", err
1616
}
@@ -22,7 +22,7 @@ func {{.API}}APIWith{{.LocalityUpper}}(d *schema.ResourceData, m interface{}) (*
2222
func {{.API}}APIWith{{.LocalityUpper}}AndID(m interface{}, {{.LocalityAdjective}}ID string) (*{{.API}}.API, scw.{{.LocalityUpper}}, string, error) {
2323
{{.API}}API := {{.API}}.NewAPI(meta.ExtractScwClient(m))
2424

25-
{{.Locality}}, ID, err := parse{{.LocalityAdjectiveUpper}}ID({{.LocalityAdjective}}ID)
25+
{{.Locality}}, ID, err := {{.LocalityAdjective}}.ParseID({{.LocalityAdjective}}ID)
2626
if err != nil {
2727
return nil, "", "", err
2828
}

cmd/tftemplate/main.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"log"
77
"text/template"
8+
89
"tftemplate/models"
910

1011
"github.com/AlecAivazis/survey/v2"
@@ -54,14 +55,14 @@ var resourceQS = []*survey.Question{
5455
{
5556
Name: "helpers",
5657
Prompt: &survey.Confirm{
57-
Message: "Generate helpers ? Will override scaleway/helpers_{api}.go",
58+
Message: "Generate helpers ? Will override ../../internal/services/{api}/helpers_{api}.go",
5859
Default: false,
5960
},
6061
},
6162
{
6263
Name: "waiters",
6364
Prompt: &survey.Confirm{
64-
Message: "Generate waiters ? Will be added to scaleway/helpers_{api}.go",
65+
Message: "Generate waiters ? Will be added to ../../internal/services/{api}/waiter.go",
6566
Default: true,
6667
},
6768
},
@@ -95,32 +96,32 @@ func main() {
9596

9697
templates := []*TerraformTemplate{
9798
{
98-
FileName: fmt.Sprintf("../../scaleway/resource_%s.go", resourceData.ResourceHCL),
99+
FileName: fmt.Sprintf("../../internal/services/%s/%s.go", resourceData.API, resourceData.ResourceHCL),
99100
TemplateFile: resourceTemplateFile,
100101
Skip: !contains(resourceInput.Targets, "resource"),
101102
},
102103
{
103-
FileName: fmt.Sprintf("../../scaleway/resource_%s_test.go", resourceData.ResourceHCL),
104+
FileName: fmt.Sprintf("../../internal/services/%s/%s_test.go", resourceData.API, resourceData.ResourceHCL),
104105
TemplateFile: resourceTestTemplateFile,
105106
Skip: !contains(resourceInput.Targets, "resource"),
106107
},
107108
{
108-
FileName: fmt.Sprintf("../../scaleway/data_source_%s.go", resourceData.ResourceHCL),
109+
FileName: fmt.Sprintf("../../internal/services/%s/data_source_%s.go", resourceData.API, resourceData.ResourceHCL),
109110
TemplateFile: datasourceTemplateFile,
110111
Skip: !contains(resourceInput.Targets, "datasource"),
111112
},
112113
{
113-
FileName: fmt.Sprintf("../../scaleway/data_source_%s_test.go", resourceData.ResourceHCL),
114+
FileName: fmt.Sprintf("../../internal/services/%s/data_source_%s_test.go", resourceData.API, resourceData.ResourceHCL),
114115
TemplateFile: datasourceTestTemplateFile,
115116
Skip: !contains(resourceInput.Targets, "datasource"),
116117
},
117118
{
118-
FileName: fmt.Sprintf("../../scaleway/helpers_%s.go", resourceData.API),
119+
FileName: fmt.Sprintf("../../internal/services/%s/helpers_%s.go", resourceData.API, resourceData.API),
119120
TemplateFile: resourceHelpersTemplateFile,
120121
Skip: !resourceInput.Helpers,
121122
},
122123
{
123-
FileName: fmt.Sprintf("../../scaleway/helpers_%s.go", resourceData.API),
124+
FileName: fmt.Sprintf("../../internal/services/%s/waiter.go", resourceData.API),
124125
TemplateFile: resourceWaitersTemplateFile,
125126
Skip: !resourceInput.Waiters,
126127
Append: true,

cmd/tftemplate/models/resource.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package models
22

33
import (
4+
"golang.org/x/text/cases"
5+
"golang.org/x/text/language"
46
"strings"
57
"unicode"
68
)
@@ -15,6 +17,7 @@ type ResourceTemplate struct {
1517
ResourceCleanLow string // namespace
1618
ResourceHCL string // function_namespace
1719
API string // function
20+
APIFirstLetterUpper string
1821

1922
SupportWaiters bool // If resource have waiters
2023
}
@@ -24,6 +27,11 @@ func isUpper(letter uint8) bool {
2427
return unicode.IsUpper(r) || unicode.IsDigit(r)
2528
}
2629

30+
func APIfirstLetterUpper(api string) string {
31+
capitalized := cases.Title(language.Und).String(api)
32+
return capitalized
33+
}
34+
2735
// splitByWord split a resource name to words
2836
// ex: FunctionNamespace, K8SCluster, IamSSHKey
2937
func splitByWord(sentence string) []string {
@@ -81,7 +89,7 @@ func resourceWordsLower(resource string) []string {
8189
func adjectiveLocality(locality string) string {
8290
switch locality {
8391
case "zone":
84-
return "zoned"
92+
return "zonal"
8593
case "region":
8694
return "regional"
8795
}
@@ -103,5 +111,6 @@ func NewResourceTemplate(api string, resource string, locality string) ResourceT
103111
ResourceCleanLow: cleanResource(api, resource, false),
104112
ResourceHCL: strings.Join(resourceWordsLower(resource), "_"),
105113
API: api,
114+
APIFirstLetterUpper: APIfirstLetterUpper(api),
106115
}
107116
}

cmd/tftemplate/resource.go.tmpl

+28-17
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2-
package scaleway
2+
package {{.API}}
33

44
import (
55
"context"
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
99
"github.com/scaleway/scaleway-sdk-go/scw"
10+
_ "time"
1011
)
1112

1213
func Resource{{ .Resource }}() *schema.Resource {
@@ -18,7 +19,13 @@ func Resource{{ .Resource }}() *schema.Resource {
1819
Importer: &schema.ResourceImporter{
1920
StateContext: schema.ImportStatePassthroughContext,
2021
},
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+
},
2229
SchemaVersion: 0,
2330
Schema: map[string]*schema.Schema{
2431
"name": {
@@ -27,28 +34,31 @@ func Resource{{ .Resource }}() *schema.Resource {
2734
Optional: true,
2835
Description: "The {{ .ResourceCleanLow }} name",
2936
},
30-
"{{ .Locality }}": {{ .Locality }}Schema(),
37+
"{{ .Locality }}": {{.LocalityAdjective}}.Schema(),
3138
"project_id": account.ProjectIDSchema(),
39+
"organization_id": account.OrganizationIDSchema(),
3240
},
3341
}
3442
}
3543

3644
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)
3846
if err != nil {
3947
return diag.FromErr(err)
4048
}
4149

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: types.ExpandStringPtr(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))
4757
if err != nil {
4858
return diag.FromErr(err)
4959
}
5060

51-
d.SetId(new{{ .LocalityAdjectiveUpper }}IDString({{ .Locality }}, {{ .ResourceCleanLow }}.ID))
61+
d.SetId({{.LocalityAdjective}}.NewIDString({{ .Locality }}, {{ .ResourceCleanLow }}.ID))
5262

5363
{{if .SupportWaiters}}
5464
_, 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,
6171
}
6272

6373
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())
6575
if err != nil {
6676
return diag.FromErr(err)
6777
}
6878
{{if .SupportWaiters}}
6979
{{ .ResourceCleanLow }}, err := waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutRead))
7080
if err != nil {
71-
if is404Error(err) {
81+
if httperrors.Is404(err) {
7282
d.SetId("")
7383
return nil
7484
}
7585
return diag.FromErr(err)
7686
}
7787
{{- else}}
78-
{{.ResourceCleanLow}}, err := api.Get{{.ResourceClean}}(&{{.API}}.Get{{.ResourceClean}}Request{
88+
{{.ResourceCleanLow}}, err = api.Get{{.ResourceClean}}(&
89+
{
7990
{{.ResourceClean}}ID: id,
8091
{{.LocalityUpper}}: {{.Locality}},
8192
}, scw.WithContext(ctx))
@@ -89,14 +100,14 @@ func Resource{{ .Resource }}Read(ctx context.Context, d *schema.ResourceData, m
89100
}
90101

91102
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())
93104
if err != nil {
94105
return diag.FromErr(err)
95106
}
96107
{{if .SupportWaiters }}
97108
{{ .ResourceCleanLow }}, err := waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutUpdate))
98109
if err != nil {
99-
if is404Error(err) {
110+
if httperrors.Is404(err) {
100111
d.SetId("")
101112
return nil
102113
}
@@ -120,7 +131,7 @@ func Resource{{ .Resource }}Update(ctx context.Context, d *schema.ResourceData,
120131
}
121132

122133
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())
124135
if err != nil {
125136
return diag.FromErr(err)
126137
}
@@ -140,7 +151,7 @@ func Resource{{ .Resource }}Delete(ctx context.Context, d *schema.ResourceData,
140151

141152
{{- if .SupportWaiters}}
142153
_, err = waitFor{{ .Resource }}(ctx, api, {{ .Locality }}, id, d.Timeout(schema.TimeoutDelete))
143-
if err != nil && !is404Error(err) {
154+
if err != nil && !httperrors.Is404(err) {
144155
return diag.FromErr(err)
145156
}
146157
{{- end}}

cmd/tftemplate/templates.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"log"
55
"os"
66
"text/template"
7+
8+
"strings"
79
"tftemplate/models"
810
)
911

@@ -23,9 +25,10 @@ type TerraformTemplate struct {
2325
func executeTemplate(tmpl *TerraformTemplate, data models.ResourceTemplate) error {
2426
var outputFile *os.File
2527
var err error
26-
28+
lastInd := strings.LastIndex(tmpl.FileName, "/")
29+
_ = os.Mkdir(tmpl.FileName[:lastInd], os.ModePerm)
2730
if tmpl.Append {
28-
outputFile, err = os.OpenFile(tmpl.FileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
31+
outputFile, err = os.OpenFile(tmpl.FileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644)
2932
} else {
3033
outputFile, err = os.Create(tmpl.FileName)
3134
}

cmd/tftemplate/waiters.go.tmpl

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
{{- /*gotype: tftemplate/models.ResourceTemplate*/ -}}
2+
package {{.API}}
3+
4+
import (
5+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/transport"
6+
"github.com/scaleway/scaleway-sdk-go/scw"
7+
)
28

39
func waitFor{{.Resource}}(ctx context.Context, {{.API}}API *{{.API}}.API, {{.Locality}} scw.{{.LocalityUpper}}, id string, timeout time.Duration) (*{{.API}}.{{.ResourceClean}}, error) {
4-
retryInterval := defaultFunctionRetryInterval
10+
retryInterval := default{{.ResourceClean}}RetryInterval
511
if DefaultWaitRetryInterval != nil {
612
retryInterval = *DefaultWaitRetryInterval
713
}

internal/services/dedibox/client.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package dedibox

internal/services/dedibox/server.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package dedibox

0 commit comments

Comments
 (0)