Skip to content

Commit 2ec999c

Browse files
committed
add step for 'terminate' action
1 parent 3484a4a commit 2ec999c

File tree

3 files changed

+903
-919
lines changed

3 files changed

+903
-919
lines changed

internal/services/instance/action_server_action.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (a *ServerAction) Invoke(ctx context.Context, req action.InvokeRequest, res
136136
}
137137

138138
_, errWait := a.instanceAPI.WaitForServer(waitReq)
139-
if errWait != nil {
139+
if errWait != nil && data.Action.ValueString() != instance.ServerActionTerminate.String() {
140140
resp.Diagnostics.AddError(
141141
"error in wait server",
142142
fmt.Sprintf("%s", err))

internal/services/instance/action_server_action_test.go

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
instanceSDK "github.com/scaleway/scaleway-sdk-go/api/instance/v1"
1313
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
1414
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/instance"
15+
instancechecks "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/instance/testfuncs"
1516
)
1617

1718
func TestAccActionServer_Basic(t *testing.T) {
@@ -24,6 +25,7 @@ func TestAccActionServer_Basic(t *testing.T) {
2425

2526
resource.ParallelTest(t, resource.TestCase{
2627
ProtoV6ProviderFactories: tt.ProviderFactories,
28+
CheckDestroy: instancechecks.IsServerDestroyed(tt),
2729
Steps: []resource.TestStep{
2830
{
2931
Config: `
@@ -110,6 +112,7 @@ func TestAccActionServer_On_Off(t *testing.T) {
110112

111113
resource.ParallelTest(t, resource.TestCase{
112114
ProtoV6ProviderFactories: tt.ProviderFactories,
115+
CheckDestroy: instancechecks.IsServerDestroyed(tt),
113116
Steps: []resource.TestStep{
114117
{
115118
Config: fmt.Sprintf(`
@@ -144,28 +147,46 @@ func TestAccActionServer_On_Off(t *testing.T) {
144147
{
145148
Config: fmt.Sprintf(`
146149
resource "scaleway_instance_server" "main" {
147-
name = "should-be-started"
150+
name = "should-be-powered-off"
148151
type = "DEV1-S"
149152
image = "ubuntu_jammy"
150153
151154
lifecycle {
152-
action_trigger {
153-
events = [after_create]
154-
actions = [action.scaleway_instance_server_action.stop]
155-
}
156155
action_trigger {
157156
events = [after_update]
158-
actions = [action.scaleway_instance_server_action.start]
157+
actions = [action.scaleway_instance_server_action.poweroff]
159158
}
160159
}
161160
}
162161
163-
action "scaleway_instance_server_action" "stop" {
162+
action "scaleway_instance_server_action" "poweroff" {
164163
config {
165164
action = "%s"
166165
server_id = scaleway_instance_server.main.id
167166
wait = true
168167
}
168+
}`, instanceSDK.ServerActionPoweroff),
169+
},
170+
{
171+
RefreshState: true,
172+
Check: resource.ComposeTestCheckFunc(
173+
resource.TestCheckResourceAttr("scaleway_instance_server.main", "state", instance.InstanceServerStateStopped),
174+
readActualServerState(tt, "scaleway_instance_server.main", instanceSDK.ServerStateStopped.String()),
175+
),
176+
},
177+
{
178+
Config: fmt.Sprintf(`
179+
resource "scaleway_instance_server" "main" {
180+
name = "should-be-started"
181+
type = "DEV1-S"
182+
image = "ubuntu_jammy"
183+
184+
lifecycle {
185+
action_trigger {
186+
events = [after_update]
187+
actions = [action.scaleway_instance_server_action.start]
188+
}
189+
}
169190
}
170191
171192
action "scaleway_instance_server_action" "start" {
@@ -174,7 +195,7 @@ func TestAccActionServer_On_Off(t *testing.T) {
174195
server_id = scaleway_instance_server.main.id
175196
wait = true
176197
}
177-
}`, instanceSDK.ServerActionStopInPlace, instanceSDK.ServerActionPoweron),
198+
}`, instanceSDK.ServerActionPoweron),
178199
},
179200
{
180201
RefreshState: true,
@@ -186,44 +207,31 @@ func TestAccActionServer_On_Off(t *testing.T) {
186207
{
187208
Config: fmt.Sprintf(`
188209
resource "scaleway_instance_server" "main" {
189-
name = "should-be-powered-off"
210+
name = "should-be-terminated"
190211
type = "DEV1-S"
191212
image = "ubuntu_jammy"
192213
193214
lifecycle {
194-
action_trigger {
195-
events = [after_create]
196-
actions = [action.scaleway_instance_server_action.stop]
197-
}
198215
action_trigger {
199216
events = [after_update]
200-
actions = [action.scaleway_instance_server_action.poweroff]
217+
actions = [action.scaleway_instance_server_action.terminate]
201218
}
202219
}
203220
}
204221
205-
action "scaleway_instance_server_action" "stop" {
206-
config {
207-
action = "%s"
208-
server_id = scaleway_instance_server.main.id
209-
wait = true
210-
}
211-
}
212-
213-
action "scaleway_instance_server_action" "poweroff" {
222+
action "scaleway_instance_server_action" "terminate" {
214223
config {
215224
action = "%s"
216225
server_id = scaleway_instance_server.main.id
217-
wait = true
226+
wait = false
218227
}
219-
}`, instanceSDK.ServerActionStopInPlace, instanceSDK.ServerActionPoweroff),
228+
}`, instanceSDK.ServerActionTerminate),
229+
ExpectNonEmptyPlan: true,
220230
},
221231
{
222-
RefreshState: true,
223-
Check: resource.ComposeTestCheckFunc(
224-
resource.TestCheckResourceAttr("scaleway_instance_server.main", "state", instance.InstanceServerStateStopped),
225-
readActualServerState(tt, "scaleway_instance_server.main", instanceSDK.ServerStateStopped.String()),
226-
),
232+
RefreshState: true,
233+
Check: instancechecks.IsServerDestroyed(tt),
234+
ExpectNonEmptyPlan: true,
227235
},
228236
},
229237
})

0 commit comments

Comments
 (0)