Skip to content

Commit 7c1c55c

Browse files
committed
Support helper/schema.Resource *WithoutTimeout fields in terraformtype and xpasses/XR006
1 parent d733591 commit 7c1c55c

File tree

4 files changed

+61
-22
lines changed

4 files changed

+61
-22
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# v0.25.0
2+
3+
ENHANCEMENTS
4+
5+
* helper/terraformtype/helper/schema: Add constants for new `Resource` type `CreateWithoutTimeout`, `DeleteWithoutTimeout`, `ReadWithoutTimeout`, and `DeleteWithoutTimeout` fields
6+
* xpasses/XR006: Support `CreateWithoutTimeout`, `DeleteWithoutTimeout`, `ReadWithoutTimeout`, and `DeleteWithoutTimeout`
7+
18
# v0.24.0
29

310
FEATURES

helper/terraformtype/helper/schema/type_resource.go

+22-18
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,28 @@ import (
99
)
1010

1111
const (
12-
ResourceFieldCreate = `Create`
13-
ResourceFieldCreateContext = `CreateContext`
14-
ResourceFieldCustomizeDiff = `CustomizeDiff`
15-
ResourceFieldDelete = `Delete`
16-
ResourceFieldDeleteContext = `DeleteContext`
17-
ResourceFieldDeprecationMessage = `DeprecationMessage`
18-
ResourceFieldDescription = `Description`
19-
ResourceFieldExists = `Exists`
20-
ResourceFieldImporter = `Importer`
21-
ResourceFieldMigrateState = `MigrateState`
22-
ResourceFieldRead = `Read`
23-
ResourceFieldReadContext = `ReadContext`
24-
ResourceFieldSchema = `Schema`
25-
ResourceFieldSchemaVersion = `SchemaVersion`
26-
ResourceFieldStateUpgraders = `StateUpgraders`
27-
ResourceFieldTimeouts = `Timeouts`
28-
ResourceFieldUpdate = `Update`
29-
ResourceFieldUpdateContext = `UpdateContext`
12+
ResourceFieldCreate = `Create`
13+
ResourceFieldCreateContext = `CreateContext`
14+
ResourceFieldCreateWithoutTimeout = `CreateWithoutTimeout`
15+
ResourceFieldCustomizeDiff = `CustomizeDiff`
16+
ResourceFieldDelete = `Delete`
17+
ResourceFieldDeleteContext = `DeleteContext`
18+
ResourceFieldDeleteWithoutTimeout = `DeleteWithoutTimeout`
19+
ResourceFieldDeprecationMessage = `DeprecationMessage`
20+
ResourceFieldDescription = `Description`
21+
ResourceFieldExists = `Exists`
22+
ResourceFieldImporter = `Importer`
23+
ResourceFieldMigrateState = `MigrateState`
24+
ResourceFieldRead = `Read`
25+
ResourceFieldReadContext = `ReadContext`
26+
ResourceFieldReadWithoutTimeout = `ReadWithoutTimeout`
27+
ResourceFieldSchema = `Schema`
28+
ResourceFieldSchemaVersion = `SchemaVersion`
29+
ResourceFieldStateUpgraders = `StateUpgraders`
30+
ResourceFieldTimeouts = `Timeouts`
31+
ResourceFieldUpdate = `Update`
32+
ResourceFieldUpdateContext = `UpdateContext`
33+
ResourceFieldUpdateWithoutTimeout = `UpdateWithoutTimeout`
3034

3135
TypeNameResource = `Resource`
3236
)

xpasses/XR006/XR006.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ func run(pass *analysis.Pass) (interface{}, error) {
3232
continue
3333
}
3434

35-
if !resource.DeclaresField(schema.ResourceFieldCreate) && !resource.DeclaresField(schema.ResourceFieldCreateContext) && resource.Resource.Timeouts.Create != nil {
35+
if !resource.DeclaresField(schema.ResourceFieldCreate) && !resource.DeclaresField(schema.ResourceFieldCreateContext) && !resource.DeclaresField(schema.ResourceFieldCreateWithoutTimeout) && resource.Resource.Timeouts.Create != nil {
3636
pass.Reportf(resource.AstCompositeLit.Pos(), "%s: resource should not configure Timeouts.Create without Create implementation", analyzerName)
3737
}
3838

39-
if !resource.DeclaresField(schema.ResourceFieldDelete) && !resource.DeclaresField(schema.ResourceFieldDeleteContext) && resource.Resource.Timeouts.Delete != nil {
39+
if !resource.DeclaresField(schema.ResourceFieldDelete) && !resource.DeclaresField(schema.ResourceFieldDeleteContext) && !resource.DeclaresField(schema.ResourceFieldDeleteWithoutTimeout) && resource.Resource.Timeouts.Delete != nil {
4040
pass.Reportf(resource.AstCompositeLit.Pos(), "%s: resource should not configure Timeouts.Delete without Delete implementation", analyzerName)
4141
}
4242

43-
if !resource.DeclaresField(schema.ResourceFieldRead) && !resource.DeclaresField(schema.ResourceFieldReadContext) && resource.Resource.Timeouts.Read != nil {
43+
if !resource.DeclaresField(schema.ResourceFieldRead) && !resource.DeclaresField(schema.ResourceFieldReadContext) && !resource.DeclaresField(schema.ResourceFieldReadWithoutTimeout) && resource.Resource.Timeouts.Read != nil {
4444
pass.Reportf(resource.AstCompositeLit.Pos(), "%s: resource should not configure Timeouts.Read without Read implementation", analyzerName)
4545
}
4646

47-
if !resource.DeclaresField(schema.ResourceFieldUpdate) && !resource.DeclaresField(schema.ResourceFieldUpdateContext) && resource.Resource.Timeouts.Update != nil {
47+
if !resource.DeclaresField(schema.ResourceFieldUpdate) && !resource.DeclaresField(schema.ResourceFieldUpdateContext) && !resource.DeclaresField(schema.ResourceFieldUpdateWithoutTimeout) && resource.Resource.Timeouts.Update != nil {
4848
pass.Reportf(resource.AstCompositeLit.Pos(), "%s: resource should not configure Timeouts.Update without Update implementation", analyzerName)
4949
}
5050
}

xpasses/XR006/testdata/src/a/main_v2.go

+28
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,34 @@ func f_v2() {
8888
Update: schema.DefaultTimeout(time.Minute),
8989
},
9090
}
91+
92+
_ = schema.Resource{
93+
CreateWithoutTimeout: createContextFunc_v2,
94+
Timeouts: &schema.ResourceTimeout{
95+
Create: schema.DefaultTimeout(time.Minute),
96+
},
97+
}
98+
99+
_ = schema.Resource{
100+
DeleteWithoutTimeout: deleteContextFunc_v2,
101+
Timeouts: &schema.ResourceTimeout{
102+
Delete: schema.DefaultTimeout(time.Minute),
103+
},
104+
}
105+
106+
_ = schema.Resource{
107+
ReadWithoutTimeout: readContextFunc_v2,
108+
Timeouts: &schema.ResourceTimeout{
109+
Read: schema.DefaultTimeout(time.Minute),
110+
},
111+
}
112+
113+
_ = schema.Resource{
114+
UpdateWithoutTimeout: updateContextFunc_v2,
115+
Timeouts: &schema.ResourceTimeout{
116+
Update: schema.DefaultTimeout(time.Minute),
117+
},
118+
}
91119
}
92120

93121
func createFunc_v2(d *schema.ResourceData, meta interface{}) error {

0 commit comments

Comments
 (0)