-
Notifications
You must be signed in to change notification settings - Fork 4
/
endpoints.go
109 lines (91 loc) · 2.6 KB
/
endpoints.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
package daemon
import (
"context"
"encoding/json"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"github.com/RTradeLtd/grpc/nexus"
)
// Ping is useful for checking client-server connection
func (d *Daemon) Ping(
c context.Context,
req *nexus.Empty,
) (*nexus.Empty, error) {
return &nexus.Empty{}, nil
}
// StartNetwork brings a node for the requested network online
func (d *Daemon) StartNetwork(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.StartNetworkResponse, error) {
n, err := d.o.NetworkUp(ctx, req.GetNetwork())
if err != nil {
return nil, grpc.Errorf(codes.Internal, err.Error())
}
return &nexus.StartNetworkResponse{
PeerId: n.PeerID,
SwarmPort: n.SwarmPort,
SwarmKey: n.SwarmKey,
}, nil
}
// UpdateNetwork updates the configuration of the given network
func (d *Daemon) UpdateNetwork(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.Empty, error) {
return &nexus.Empty{}, d.o.NetworkUpdate(ctx, req.GetNetwork())
}
// StopNetwork brings a node for the requested network offline
func (d *Daemon) StopNetwork(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.Empty, error) {
return &nexus.Empty{}, d.o.NetworkDown(ctx, req.GetNetwork())
}
// RemoveNetwork removes assets for requested node
func (d *Daemon) RemoveNetwork(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.Empty, error) {
return &nexus.Empty{}, d.o.NetworkRemove(ctx, req.GetNetwork())
}
// NetworkStats retrieves stats about the requested node
func (d *Daemon) NetworkStats(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.NetworkStatusReponse, error) {
s, err := d.o.NetworkStatus(ctx, req.Network)
if err != nil {
return nil, grpc.Errorf(codes.Internal, err.Error())
}
return &nexus.NetworkStatusReponse{
Network: s.NetworkDetails.NetworkID,
PeerId: s.NetworkDetails.PeerID,
Uptime: int64(s.Uptime),
DiskUsage: s.DiskUsage,
SwarmPort: s.NetworkDetails.SwarmPort,
}, nil
}
// NetworkDiagnostics retrieves detailed diagnostic details about the requested
// network node
func (d *Daemon) NetworkDiagnostics(
ctx context.Context,
req *nexus.NetworkRequest,
) (*nexus.NetworkDiagnosticsResponse, error) {
s, err := d.o.NetworkDiagnostics(ctx, req.Network)
if err != nil {
return nil, grpc.Errorf(codes.Internal, err.Error())
}
nb, err := json.Marshal(s.NodeInfo)
if err != nil {
return nil, grpc.Errorf(codes.Internal, err.Error())
}
sb, err := json.Marshal(s.NodeStats)
if err != nil {
return nil, grpc.Errorf(codes.Internal, err.Error())
}
return &nexus.NetworkDiagnosticsResponse{
NodeInfo: nb,
Stats: sb,
}, nil
}