Skip to content

Commit 6eb21df

Browse files
committed
Properly handle server in error status
1 parent 6d9bc03 commit 6eb21df

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

pkg/server.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ var serverNormalStates = []string{
4848
"stopped",
4949
}
5050

51+
var serverErrorStates = []string{
52+
"error",
53+
}
54+
5155
var serverNormalStatuses = []string{
5256
"ACTIVE",
5357
"SHUTOFF",
@@ -62,6 +66,10 @@ var serverWaitStatuses = []string{
6266
"BUILD",
6367
}
6468

69+
var serverErrorStatuses = []string{
70+
"ERROR",
71+
}
72+
6573
func createServerSpeed(server *serverExtended) {
6674
t := server.Updated.Sub(server.Created)
6775
log.Printf("Time to create a server: %s", t)
@@ -79,6 +87,10 @@ func waitForServer(client *gophercloud.ServiceClient, id string, secs float64) (
7987
// this is needed, because if new data contains a "null", the struct will contain an old data, e.g. `"OS-EXT-STS:task_state": null`
8088
server = tmp
8189

90+
if isSliceContainsStr(serverErrorStates, server.VmState) || isSliceContainsStr(serverErrorStatuses, server.Status) {
91+
return false, fmt.Errorf("server status: %s (%s)", server.Status, joinSkipEmpty(", ", server.VmState, server.TaskState))
92+
}
93+
8294
if !isSliceContainsStr(serverNormalStates, server.VmState) || server.TaskState != "" {
8395
log.Printf("Server status: %s (%s)", server.Status, joinSkipEmpty(", ", server.VmState, server.TaskState))
8496
return false, nil

0 commit comments

Comments
 (0)