@@ -100,56 +100,38 @@ func CreateServerWaitHandler(ctx context.Context, a APIClientInterface, projectI
100
100
return handler
101
101
}
102
102
103
- // ResizingServerWaitHandler will wait for a server to be resizing
104
- // Ii is an intermediate step inside the ResizeServerWaitHandler
105
- func resizingServerWaitHandler (ctx context.Context , a APIClientInterface , projectId , serverId string ) * wait.AsyncActionHandler [iaasalpha.Server ] {
103
+ // ResizeServerWaitHandler will wait for server resize
104
+ // It checks for an intermediate resizing status and only then waits for the server to become active
105
+ func ResizeServerWaitHandler (ctx context.Context , a APIClientInterface , projectId , serverId string ) ( h * wait.AsyncActionHandler [iaasalpha.Server ]) {
106
106
handler := wait .New (func () (waitFinished bool , response * iaasalpha.Server , err error ) {
107
107
server , err := a .GetServerExecute (ctx , projectId , serverId )
108
108
if err != nil {
109
109
return false , server , err
110
110
}
111
+
111
112
if server .Id == nil || server .Status == nil {
112
113
return false , server , fmt .Errorf ("resizing failed for server with id %s, the response is not valid: the id or the status are missing" , serverId )
113
114
}
114
- if * server .Id == serverId && * server .Status == ServerResizingStatus {
115
- return true , server , nil
116
- }
115
+
117
116
if * server .Id == serverId && * server .Status == ErrorStatus {
118
117
if server .ErrorMessage != nil {
119
118
return true , server , fmt .Errorf ("resizing failed for server with id %s: %s" , serverId , * server .ErrorMessage )
120
119
}
121
120
return true , server , fmt .Errorf ("resizing failed for server with id %s" , serverId )
122
121
}
123
- return false , server , nil
124
- })
125
- handler .SetTimeout (10 * time .Minute )
126
- return handler
127
- }
128
122
129
- // ResizeServerWaitHandler will wait for server resize
130
- // It checks for an intermediate resizing status and only then waits for the server to become active
131
- func ResizeServerWaitHandler (ctx context.Context , a APIClientInterface , projectId , serverId string ) * wait.AsyncActionHandler [iaasalpha.Server ] {
132
- handler := wait .New (func () (waitFinished bool , response * iaasalpha.Server , err error ) {
133
- server , err := resizingServerWaitHandler (ctx , a , projectId , serverId ).WaitWithContext (ctx )
134
- if err != nil {
135
- return false , server , err
136
- }
137
- server , err = a .GetServerExecute (ctx , projectId , serverId )
138
- if err != nil {
139
- return false , server , err
140
- }
141
- if server .Id == nil || server .Status == nil {
142
- return false , server , fmt .Errorf ("resizing failed for server with id %s, the response is not valid: the id or the status are missing" , serverId )
123
+ if ! h .IntermediateStateReached {
124
+ if * server .Id == serverId && * server .Status == ServerResizingStatus {
125
+ h .IntermediateStateReached = true
126
+ return false , server , nil
127
+ }
128
+ return false , server , nil
143
129
}
130
+
144
131
if * server .Id == serverId && * server .Status == ServerActiveStatus {
145
132
return true , server , nil
146
133
}
147
- if * server .Id == serverId && * server .Status == ErrorStatus {
148
- if server .ErrorMessage != nil {
149
- return true , server , fmt .Errorf ("resizing failed for server with id %s: %s" , serverId , * server .ErrorMessage )
150
- }
151
- return true , server , fmt .Errorf ("resizing failed for server with id %s" , serverId )
152
- }
134
+
153
135
return false , server , nil
154
136
})
155
137
handler .SetTimeout (20 * time .Minute )
0 commit comments