/
hs.go
57 lines (47 loc) · 1.44 KB
/
hs.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
package admin
import (
"context"
adminProto "github.com/textileio/powergate/api/gen/powergate/admin/v1"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
// GCStaged runs a unpinning garbage collection and returns the unpinned cids.
func (a *Service) GCStaged(ctx context.Context, req *adminProto.GCStagedRequest) (*adminProto.GCStagedResponse, error) {
cids, err := a.s.GCStaged(ctx)
if err != nil {
return nil, status.Errorf(codes.Internal, "running FFS GC: %v", err)
}
cidsStr := make([]string, len(cids))
for i := range cids {
cidsStr[i] = cids[i].String()
}
return &adminProto.GCStagedResponse{
UnpinnedCids: cidsStr,
}, nil
}
// PinnedCids returns all the pinned cids in Hot-Storage.
func (a *Service) PinnedCids(ctx context.Context, req *adminProto.PinnedCidsRequest) (*adminProto.PinnedCidsResponse, error) {
pcids, err := a.s.PinnedCids(ctx)
if err != nil {
return nil, status.Errorf(codes.Internal, "getting pinned cids: %v", err)
}
res := &adminProto.PinnedCidsResponse{
Cids: make([]*adminProto.HSPinnedCid, len(pcids)),
}
for i, pc := range pcids {
hspc := &adminProto.HSPinnedCid{
Cid: pc.Cid.String(),
Users: make([]*adminProto.HSPinnedCidUser, len(pc.APIIDs)),
}
for j, up := range pc.APIIDs {
upr := &adminProto.HSPinnedCidUser{
UserId: up.ID.String(),
Staged: up.Staged,
CreatedAt: up.CreatedAt,
}
hspc.Users[j] = upr
}
res.Cids[i] = hspc
}
return res, nil
}