forked from orb-community/orb
/
endpoint.go
91 lines (83 loc) · 2.44 KB
/
endpoint.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
package grpc
import (
"context"
"github.com/go-kit/kit/endpoint"
"github.com/etaques/orb/fleet"
)
func retrieveAgentEndpoint(svc fleet.Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
req := request.(accessByIDReq)
if err := req.validate(); err != nil {
return nil, err
}
agent, err := svc.ViewAgentByIDInternal(ctx, req.OwnerID, req.AgentID)
if err != nil {
return nil, err
}
res := agentRes{
id: agent.MFThingID,
name: agent.Name.String(),
}
return res, nil
}
}
func retrieveAgentGroupEndpoint(svc fleet.Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
req := request.(accessAgByIDReq)
if err := req.validate(); err != nil {
return nil, err
}
agentGroup, err := svc.ViewAgentGroupByIDInternal(ctx, req.AgentGroupID, req.OwnerID)
if err != nil {
return nil, err
}
res := agentGroupRes{
id: agentGroup.ID,
name: agentGroup.Name.String(),
channel: agentGroup.MFChannelID,
}
return res, nil
}
}
func retrieveOwnerByChannelIDEndpoint(svc fleet.Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
req := request.(accessOwnerByChannelIDReq)
if err := req.validate(); err != nil {
return nil, err
}
agent, err := svc.ViewAgentInfoByChannelIDInternal(ctx, req.ChannelID)
if err != nil {
return nil, err
}
res := ownerRes{ownerID: agent.MFOwnerID, agentName: agent.Name.String()}
return res, nil
}
}
func retrieveAgentInfoByChannelIDEndpoint(svc fleet.Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
req := request.(accessAgentInfoByChannelIDReq)
if err := req.validate(); err != nil {
return nil, err
}
agent, err := svc.ViewAgentInfoByChannelIDInternal(ctx, req.ChannelID)
if err != nil {
return nil, err
}
matchingGroups, err := svc.ViewAgentMatchingGroupsByIDInternal(ctx, agent.MFThingID, agent.MFOwnerID)
if err != nil {
return nil, err
}
var groupIDs []string
for _, group := range matchingGroups.Groups {
groupIDs = append(groupIDs, group.GroupID)
}
res := agentInfoRes{
ownerID: agent.MFOwnerID,
agentName: agent.Name.String(),
agentTags: agent.AgentTags,
orbTags: agent.OrbTags,
agentGroupIDs: groupIDs,
}
return res, nil
}
}