-
Notifications
You must be signed in to change notification settings - Fork 926
/
process_health_check.go
70 lines (57 loc) · 1.7 KB
/
process_health_check.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package v7action
import (
"sort"
"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
)
type ProcessHealthCheck struct {
ProcessType string
HealthCheckType constant.HealthCheckType
Endpoint string
InvocationTimeout int64
}
type ProcessHealthChecks []ProcessHealthCheck
func (phs ProcessHealthChecks) Sort() {
sort.Slice(phs, func(i int, j int) bool {
var iScore int
var jScore int
switch phs[i].ProcessType {
case constant.ProcessTypeWeb:
iScore = 0
default:
iScore = 1
}
switch phs[j].ProcessType {
case constant.ProcessTypeWeb:
jScore = 0
default:
jScore = 1
}
if iScore == 1 && jScore == 1 {
return phs[i].ProcessType < phs[j].ProcessType
}
return iScore < jScore
})
}
func (actor Actor) GetApplicationProcessHealthChecksByNameAndSpace(appName string, spaceGUID string) ([]ProcessHealthCheck, Warnings, error) {
app, allWarnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
if err != nil {
return nil, allWarnings, err
}
ccv3Processes, warnings, err := actor.CloudControllerClient.GetApplicationProcesses(app.GUID)
allWarnings = append(allWarnings, Warnings(warnings)...)
if err != nil {
return nil, allWarnings, err
}
var processHealthChecks ProcessHealthChecks
for _, ccv3Process := range ccv3Processes {
processHealthCheck := ProcessHealthCheck{
ProcessType: ccv3Process.Type,
HealthCheckType: ccv3Process.HealthCheckType,
Endpoint: ccv3Process.HealthCheckEndpoint,
InvocationTimeout: ccv3Process.HealthCheckInvocationTimeout,
}
processHealthChecks = append(processHealthChecks, processHealthCheck)
}
processHealthChecks.Sort()
return processHealthChecks, allWarnings, nil
}