-
Notifications
You must be signed in to change notification settings - Fork 43
/
actual_lrp_handlers.go
125 lines (104 loc) · 3.77 KB
/
actual_lrp_handlers.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package handlers
import (
"net/http"
"code.cloudfoundry.org/bbs/db"
"code.cloudfoundry.org/bbs/models"
"code.cloudfoundry.org/lager/v3"
)
type ActualLRPHandler struct {
db db.ActualLRPDB
exitChan chan<- struct{}
}
func NewActualLRPHandler(db db.ActualLRPDB, exitChan chan<- struct{}) *ActualLRPHandler {
return &ActualLRPHandler{
db: db,
exitChan: exitChan,
}
}
func (h *ActualLRPHandler) ActualLRPs(logger lager.Logger, w http.ResponseWriter, req *http.Request) {
var err error
logger = logger.Session("actual-lrps").WithTraceInfo(req)
logger.Debug("starting")
defer logger.Debug("complete")
request := &models.ActualLRPsRequest{}
response := &models.ActualLRPsResponse{}
err = parseRequest(logger, req, request)
if err == nil {
var index *int32
if request.IndexExists() {
i := request.GetIndex()
index = &i
}
filter := models.ActualLRPFilter{Domain: request.Domain, CellID: request.CellId, Index: index, ProcessGuid: request.ProcessGuid}
response.ActualLrps, err = h.db.ActualLRPs(req.Context(), logger, filter)
}
response.Error = models.ConvertError(err)
writeResponse(w, response)
exitIfUnrecoverable(logger, h.exitChan, response.Error)
}
// Deprecated: use ActaulLRPs instead
func (h *ActualLRPHandler) ActualLRPGroups(logger lager.Logger, w http.ResponseWriter, req *http.Request) {
var err error
logger = logger.Session("actual-lrp-groups").WithTraceInfo(req)
request := &models.ActualLRPGroupsRequest{}
response := &models.ActualLRPGroupsResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
filter := models.ActualLRPFilter{Domain: request.Domain, CellID: request.CellId}
lrps, err := h.db.ActualLRPs(req.Context(), logger, filter)
if err != nil {
response.Error = models.ConvertError(err)
return
}
response.ActualLrpGroups = models.ResolveActualLRPGroups(lrps)
}
// Deprecated: use ActaulLRPs instead
func (h *ActualLRPHandler) ActualLRPGroupsByProcessGuid(logger lager.Logger, w http.ResponseWriter, req *http.Request) {
var err error
logger = logger.Session("actual-lrp-groups-by-process-guid").WithTraceInfo(req)
request := &models.ActualLRPGroupsByProcessGuidRequest{}
response := &models.ActualLRPGroupsResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
filter := models.ActualLRPFilter{ProcessGuid: request.ProcessGuid}
lrps, err := h.db.ActualLRPs(req.Context(), logger, filter)
if err != nil {
response.Error = models.ConvertError(err)
return
}
response.ActualLrpGroups = models.ResolveActualLRPGroups(lrps)
}
// Deprecated: use ActaulLRPs instead
func (h *ActualLRPHandler) ActualLRPGroupByProcessGuidAndIndex(logger lager.Logger, w http.ResponseWriter, req *http.Request) {
var err error
logger = logger.Session("actual-lrp-group-by-process-guid-and-index").WithTraceInfo(req)
request := &models.ActualLRPGroupByProcessGuidAndIndexRequest{}
response := &models.ActualLRPGroupResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
filter := models.ActualLRPFilter{ProcessGuid: request.ProcessGuid, Index: &request.Index}
lrps, err := h.db.ActualLRPs(req.Context(), logger, filter)
if err == nil && len(lrps) == 0 {
err = models.ErrResourceNotFound
}
if err != nil {
response.Error = models.ConvertError(err)
return
}
response.ActualLrpGroup = models.ResolveActualLRPGroup(lrps)
}