Skip to content

Commit c0ea684

Browse files
authored
Refactor resource status (#93)
1 parent f4469d0 commit c0ea684

File tree

4 files changed

+83
-107
lines changed

4 files changed

+83
-107
lines changed

cli/cmd/predict.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"github.com/cortexlabs/cortex/pkg/lib/errors"
2828
"github.com/cortexlabs/cortex/pkg/lib/files"
2929
"github.com/cortexlabs/cortex/pkg/lib/json"
30-
libstrings "github.com/cortexlabs/cortex/pkg/lib/strings"
3130
s "github.com/cortexlabs/cortex/pkg/lib/strings"
3231
libtime "github.com/cortexlabs/cortex/pkg/lib/time"
3332
"github.com/cortexlabs/cortex/pkg/lib/urls"
@@ -83,7 +82,7 @@ var predictCmd = &cobra.Command{
8382
predictResponse, err := makePredictRequest(apiURL, samplesJSONPath)
8483
if err != nil {
8584
if strings.Contains(err.Error(), "503 Service Temporarily Unavailable") || strings.Contains(err.Error(), "502 Bad Gateway") {
86-
errors.Exit(ErrorAPINotReady(apiName, resource.StatusAPIUpdating.Message()))
85+
errors.Exit(ErrorAPINotReady(apiName, resource.StatusUpdating.Message()))
8786
}
8887
errors.Exit(err)
8988
}
@@ -120,7 +119,7 @@ var predictCmd = &cobra.Command{
120119
json, _ := json.Marshal(prediction.PredictedValueReversed)
121120
fmt.Println(s.TrimPrefixAndSuffix(string(json), "\""))
122121
} else {
123-
fmt.Println(libstrings.Round(prediction.PredictedValue, 2, true))
122+
fmt.Println(s.Round(prediction.PredictedValue, 2, true))
124123
}
125124
}
126125
}

pkg/operator/api/resource/status.go

Lines changed: 49 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -90,27 +90,24 @@ const (
9090
StatusSkipped
9191
StatusParentFailed
9292
StatusParentKilled
93+
StatusKilledOOM
9394

9495
// Data statuses
95-
StatusDataRunning
96-
StatusDataSucceeded
97-
StatusDataFailed
98-
StatusDataKilled
96+
StatusRunning
97+
StatusSucceeded
98+
StatusFailed
99+
StatusKilled
99100

100101
// API statuses
101-
StatusAPIUpdating
102-
StatusAPIReady
103-
StatusAPIStopping
104-
StatusAPIStopped
105-
StatusAPIError
102+
StatusUpdating
103+
StatusReady
104+
StatusStopping
105+
StatusStopped
106+
StatusError
106107

107108
// Additional API group statuses (i.e. aggregated API status)
108-
StatusAPIGroupPendingUpdate
109-
StatusAPIGroupParentFailed
110-
StatusAPIGroupParentKilled
111-
StatusAPIGroupUpdateSkipped
112-
113-
StatusDataKilledOOM
109+
StatusPendingUpdate
110+
StatusUpdateSkipped
114111
)
115112

116113
var statusCodes = []string{
@@ -122,37 +119,35 @@ var statusCodes = []string{
122119
"status_skipped",
123120
"status_parent_failed",
124121
"status_parent_killed",
122+
"status_killed_oom",
125123

126-
"status_data_running",
127-
"status_data_succeeded",
128-
"status_data_failed",
129-
"status_data_killed",
130-
131-
"status_api_updating",
132-
"status_api_ready",
133-
"status_api_stopping",
134-
"status_api_stopped",
135-
"status_api_error",
124+
"status_running",
125+
"status_succeeded",
126+
"status_failed",
127+
"status_killed",
136128

137-
"status_api_group_pending_update",
138-
"status_api_group_parent_failed",
139-
"status_api_group_parent_killed",
140-
"status_api_group_update_skipped",
129+
"status_updating",
130+
"status_ready",
131+
"status_stopping",
132+
"status_stopped",
133+
"status_error",
141134

142-
"status_data_oom",
135+
"status_pending_update",
136+
"status_update_skipped",
143137
}
144138

145-
var _ = [1]int{}[int(StatusDataKilledOOM)-(len(statusCodes)-1)] // Ensure list length matches
139+
var _ = [1]int{}[int(StatusUpdateSkipped)-(len(statusCodes)-1)] // Ensure list length matches
146140

147141
var statusCodeMessages = []string{
148142
"unknown", // StatusUnknown
149143

150-
"pending", // StatusPending
151-
"compute unavailable", // StatusPendingCompute
152-
"pending", // StatusWaiting
153-
"skipped", // StatusSkipped
154-
"upstream error", // StatusParentFailed
155-
"upstream termination", // StatusParentKilled
144+
"pending", // StatusPending
145+
"compute unavailable", // StatusPendingCompute
146+
"pending", // StatusWaiting
147+
"skipped", // StatusSkipped
148+
"upstream error", // StatusParentFailed
149+
"upstream termination", // StatusParentKilled
150+
"terminated (out of mem)", // StatusDataOOM
156151

157152
"running", // StatusDataRunning
158153
"ready", // StatusDataSucceeded
@@ -165,15 +160,12 @@ var statusCodeMessages = []string{
165160
"stopped", // StatusAPIStopped
166161
"error", // StatusAPIError
167162

168-
"update pending", // StatusAPIGroupPendingUpdate
169-
"upstream error", // StatusAPIGroupParentFailed
170-
"upstream termination", // StatusAPIGroupParentKilled
171-
"update skipped", // StatusAPIGroupUpdateSkipped
163+
"update pending", // StatusAPIGroupPendingUpdate
164+
"update skipped", // StatusAPIGroupUpdateSkipped
172165

173-
"terminated (out of mem)", // StatusDataOOM
174166
}
175167

176-
var _ = [1]int{}[int(StatusDataKilledOOM)-(len(statusCodeMessages)-1)] // Ensure list length matches
168+
var _ = [1]int{}[int(StatusUpdateSkipped)-(len(statusCodeMessages)-1)] // Ensure list length matches
177169

178170
// StatusDataRunning aliases
179171
const (
@@ -193,27 +185,24 @@ var statusSortBuckets = []int{
193185
2, // StatusSkipped
194186
2, // StatusParentFailed
195187
2, // StatusParentKilled
188+
1, // StatusKilledOOM
196189

197-
3, // StatusDataRunning
198-
0, // StatusDataSucceeded
199-
1, // StatusDataFailed
200-
1, // StatusDataKilled
201-
202-
3, // StatusAPIUpdating
203-
0, // StatusAPIReady
204-
3, // StatusAPIStopping
205-
1, // StatusAPIStopped
206-
1, // StatusAPIError
190+
3, // StatusRunning
191+
0, // StatusSucceeded
192+
1, // StatusFailed
193+
1, // StatusKilled
207194

208-
0, // StatusAPIGroupPendingUpdate
209-
2, // StatusAPIGroupParentFailed
210-
2, // StatusAPIGroupParentKilled
211-
2, // StatusAPIGroupUpdateSkipped
195+
3, // StatusUpdating
196+
0, // StatusReady
197+
3, // StatusStopping
198+
1, // StatusStopped
199+
1, // StatusError
212200

213-
1, // StatusDataKilledOOM
201+
0, // StatusPendingUpdate
202+
2, // StatusUpdateSkipped
214203
}
215204

216-
var _ = [1]int{}[int(StatusDataKilledOOM)-(len(statusSortBuckets)-1)] // Ensure list length matches
205+
var _ = [1]int{}[int(StatusUpdateSkipped)-(len(statusSortBuckets)-1)] // Ensure list length matches
217206

218207
func (code StatusCode) String() string {
219208
if int(code) < 0 || int(code) >= len(statusCodes) {
@@ -237,7 +226,7 @@ func (code StatusCode) SortBucket() int {
237226
}
238227

239228
func (status *DataStatus) Message() string {
240-
if status.Code == StatusDataRunning {
229+
if status.Code == StatusRunning {
241230
switch status.ResourceType {
242231
case RawColumnType:
243232
return RawColumnRunningMessage

pkg/operator/workloads/api_status.go

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,22 @@ func getReplicaCountsMap(podList []corev1.Pod, ctx *context.Context) map[string]
164164

165165
func apiStatusCode(apiStatus *resource.APIStatus, failedWorkloadIDs strset.Set) resource.StatusCode {
166166
if failedWorkloadIDs.Has(apiStatus.WorkloadID) {
167-
return resource.StatusAPIError
167+
return resource.StatusError
168168
}
169169
if apiStatus.RequestedReplicas == 0 {
170170
if apiStatus.TotalReady() > 0 {
171-
return resource.StatusAPIStopping
171+
return resource.StatusStopping
172172
}
173-
return resource.StatusAPIStopped
173+
return resource.StatusStopped
174174
}
175175
if apiStatus.ReadyUpdated == apiStatus.RequestedReplicas {
176-
return resource.StatusAPIReady
176+
return resource.StatusReady
177177
}
178178
if apiStatus.FailedUpdated > 0 {
179-
return resource.StatusAPIError
179+
return resource.StatusError
180180
}
181181
if apiStatus.TotalReady() > 0 {
182-
return resource.StatusAPIUpdating
182+
return resource.StatusUpdating
183183
}
184184

185185
return resource.StatusPending
@@ -195,15 +195,15 @@ func updateAPIStatusCodeByParents(apiStatus *resource.APIStatus, dataStatuses ma
195195
parentSkipped := false
196196
for dependency := range allDependencies {
197197
switch dataStatuses[dependency].Code {
198-
case resource.StatusDataKilled, resource.StatusDataKilledOOM:
198+
case resource.StatusKilled, resource.StatusKilledOOM:
199199
apiStatus.Code = resource.StatusParentKilled
200200
return
201-
case resource.StatusDataFailed:
201+
case resource.StatusFailed:
202202
apiStatus.Code = resource.StatusParentFailed
203203
return
204204
case resource.StatusSkipped:
205205
parentSkipped = true
206-
case resource.StatusDataSucceeded:
206+
case resource.StatusSucceeded:
207207
numSucceeded++
208208
}
209209
}
@@ -214,7 +214,7 @@ func updateAPIStatusCodeByParents(apiStatus *resource.APIStatus, dataStatuses ma
214214
}
215215

216216
if numSucceeded == len(allDependencies) {
217-
apiStatus.Code = resource.StatusAPIUpdating
217+
apiStatus.Code = resource.StatusUpdating
218218
}
219219
}
220220

@@ -276,7 +276,7 @@ func getActiveAPIStatus(apiStatuses []*resource.APIStatus, ctx *context.Context)
276276

277277
func apiGroupStatusCode(apiStatuses []*resource.APIStatus, ctx *context.Context) resource.StatusCode {
278278
if len(apiStatuses) == 0 {
279-
return resource.StatusAPIStopped
279+
return resource.StatusStopped
280280
}
281281

282282
apiName := apiStatuses[0].APIName
@@ -285,10 +285,10 @@ func apiGroupStatusCode(apiStatuses []*resource.APIStatus, ctx *context.Context)
285285
if ctxAPI == nil {
286286
for _, apiStatus := range apiStatuses {
287287
if apiStatus.TotalReady() > 0 {
288-
return resource.StatusAPIStopping
288+
return resource.StatusStopping
289289
}
290290
}
291-
return resource.StatusAPIStopped
291+
return resource.StatusStopped
292292
}
293293

294294
var ctxAPIStatus *resource.APIStatus
@@ -306,30 +306,18 @@ func apiGroupStatusCode(apiStatuses []*resource.APIStatus, ctx *context.Context)
306306
}
307307

308308
switch ctxAPIStatus.Code {
309-
case resource.StatusUnknown:
310-
return resource.StatusUnknown
309+
case resource.StatusUnknown, resource.StatusPendingCompute,
310+
resource.StatusParentFailed, resource.StatusParentKilled, resource.StatusUpdating,
311+
resource.StatusReady, resource.StatusStopping, resource.StatusError:
312+
return ctxAPIStatus.Code
311313
case resource.StatusPending:
312-
return resource.StatusAPIGroupPendingUpdate
313-
case resource.StatusPendingCompute:
314-
return resource.StatusPendingCompute
314+
return resource.StatusPendingUpdate
315315
case resource.StatusWaiting:
316-
return resource.StatusAPIUpdating
316+
return resource.StatusUpdating
317317
case resource.StatusSkipped:
318-
return resource.StatusAPIGroupUpdateSkipped
319-
case resource.StatusParentFailed:
320-
return resource.StatusAPIGroupParentFailed
321-
case resource.StatusParentKilled:
322-
return resource.StatusAPIGroupParentKilled
323-
case resource.StatusAPIUpdating:
324-
return resource.StatusAPIUpdating
325-
case resource.StatusAPIReady:
326-
return resource.StatusAPIReady
327-
case resource.StatusAPIStopping:
328-
return resource.StatusAPIStopping
329-
case resource.StatusAPIStopped:
330-
return resource.StatusAPIGroupPendingUpdate
331-
case resource.StatusAPIError:
332-
return resource.StatusAPIError
318+
return resource.StatusUpdateSkipped
319+
case resource.StatusStopped:
320+
return resource.StatusPendingUpdate
333321
}
334322

335323
return resource.StatusUnknown
@@ -346,7 +334,7 @@ func setInsufficientComputeAPIStatusCodes(apiStatuses map[string]*resource.APISt
346334
}
347335

348336
for _, apiStatus := range apiStatuses {
349-
if apiStatus.Code == resource.StatusPending || apiStatus.Code == resource.StatusWaiting || apiStatus.Code == resource.StatusAPIUpdating {
337+
if apiStatus.Code == resource.StatusPending || apiStatus.Code == resource.StatusWaiting || apiStatus.Code == resource.StatusUpdating {
350338
if _, ok := stalledWorkloads[apiStatus.WorkloadID]; ok {
351339
apiStatus.Code = resource.StatusPendingCompute
352340
}

pkg/operator/workloads/data_status.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,18 +67,18 @@ func dataStatusCode(dataSavedStatus *resource.DataSavedStatus) resource.StatusCo
6767
return resource.StatusPending
6868
}
6969
if dataSavedStatus.End == nil {
70-
return resource.StatusDataRunning
70+
return resource.StatusRunning
7171
}
7272

7373
switch dataSavedStatus.ExitCode {
7474
case resource.ExitCodeDataSucceeded:
75-
return resource.StatusDataSucceeded
75+
return resource.StatusSucceeded
7676
case resource.ExitCodeDataFailed:
77-
return resource.StatusDataFailed
77+
return resource.StatusFailed
7878
case resource.ExitCodeDataKilled:
79-
return resource.StatusDataKilled
79+
return resource.StatusKilled
8080
case resource.ExitCodeDataOOM:
81-
return resource.StatusDataKilledOOM
81+
return resource.StatusKilledOOM
8282
}
8383

8484
return resource.StatusUnknown
@@ -93,15 +93,15 @@ func updateDataStatusCodeByParents(dataStatus *resource.DataStatus, dataStatuses
9393
parentSkipped := false
9494
for dependency := range allDependencies {
9595
switch dataStatuses[dependency].Code {
96-
case resource.StatusDataKilled, resource.StatusDataKilledOOM:
96+
case resource.StatusKilled, resource.StatusKilledOOM:
9797
dataStatus.Code = resource.StatusParentKilled
9898
return
99-
case resource.StatusDataFailed:
99+
case resource.StatusFailed:
100100
dataStatus.Code = resource.StatusParentFailed
101101
return
102102
case resource.StatusSkipped:
103103
parentSkipped = true
104-
case resource.StatusDataSucceeded:
104+
case resource.StatusSucceeded:
105105
numSucceeded++
106106
}
107107
}
@@ -150,7 +150,7 @@ func didSparkShortCircuit(dataStatuses map[string]*resource.DataStatus, ctx *con
150150
if _, ok := sparkResources[dataStatus.ResourceID]; !ok {
151151
continue
152152
}
153-
if dataStatus.Code == resource.StatusDataFailed || dataStatus.Code == resource.StatusDataKilled {
153+
if dataStatus.Code == resource.StatusFailed || dataStatus.Code == resource.StatusKilled {
154154
return true
155155
}
156156
}

0 commit comments

Comments
 (0)