/
builder_edge.go
58 lines (51 loc) · 1.68 KB
/
builder_edge.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
package node
import (
"errors"
"github.com/Filecoin-Titan/titan/api"
"github.com/Filecoin-Titan/titan/api/types"
"github.com/Filecoin-Titan/titan/node/asset"
"github.com/Filecoin-Titan/titan/node/asset/storage"
"github.com/Filecoin-Titan/titan/node/config"
"github.com/Filecoin-Titan/titan/node/device"
"github.com/Filecoin-Titan/titan/node/edge"
"github.com/Filecoin-Titan/titan/node/modules"
"github.com/Filecoin-Titan/titan/node/repo"
datasync "github.com/Filecoin-Titan/titan/node/sync"
"github.com/Filecoin-Titan/titan/node/validation"
"go.uber.org/fx"
"golang.org/x/xerrors"
)
func Edge(out *api.Edge) Option {
return Options(
ApplyIf(func(s *Settings) bool { return s.Config },
Error(errors.New("the Edge option must be set before Config option")),
),
func(s *Settings) error {
s.nodeType = repo.Edge
return nil
},
func(s *Settings) error {
resAPI := &edge.Edge{}
s.invokes[ExtractAPIKey] = fx.Populate(resAPI)
*out = resAPI
return nil
},
)
}
func ConfigEdge(c interface{}) Option {
cfg, ok := c.(*config.EdgeCfg)
if !ok {
return Error(xerrors.Errorf("invalid config from repo, got: %T", c))
}
log.Info("start to config edge")
return Options(
Override(new(*config.EdgeCfg), cfg),
Override(new(*device.Device), modules.NewDevice(&cfg.CPU, &cfg.Memory, &cfg.Storage, &cfg.Bandwidth)),
Override(new(*config.MinioConfig), &config.MinioConfig{}),
Override(new(*storage.Manager), modules.NewNodeStorageManager),
Override(new(*validation.Validation), modules.NewNodeValidation),
Override(new(*types.RateLimiter), modules.NewRateLimiter),
Override(new(*asset.Asset), asset.NewAsset),
Override(new(*datasync.DataSync), modules.NewDataSync),
)
}