Allow selecting pintracker with ipfs-cluster-service
License: MIT Signed-off-by: Hector Sanjuan <code@hector.link>
This commit is contained in:
parent
b8194143c2
commit
10fa7a13b5
|
@ -15,18 +15,20 @@ import (
|
|||
"github.com/ipfs/ipfs-cluster/monitor/basic"
|
||||
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
||||
"github.com/ipfs/ipfs-cluster/pintracker/maptracker"
|
||||
"github.com/ipfs/ipfs-cluster/pintracker/stateless"
|
||||
)
|
||||
|
||||
type cfgs struct {
|
||||
clusterCfg *ipfscluster.Config
|
||||
apiCfg *rest.Config
|
||||
ipfshttpCfg *ipfshttp.Config
|
||||
consensusCfg *raft.Config
|
||||
trackerCfg *maptracker.Config
|
||||
monCfg *basic.Config
|
||||
pubsubmonCfg *pubsubmon.Config
|
||||
diskInfCfg *disk.Config
|
||||
numpinInfCfg *numpin.Config
|
||||
clusterCfg *ipfscluster.Config
|
||||
apiCfg *rest.Config
|
||||
ipfshttpCfg *ipfshttp.Config
|
||||
consensusCfg *raft.Config
|
||||
maptrackerCfg *maptracker.Config
|
||||
statelessTrackerCfg *stateless.Config
|
||||
monCfg *basic.Config
|
||||
pubsubmonCfg *pubsubmon.Config
|
||||
diskInfCfg *disk.Config
|
||||
numpinInfCfg *numpin.Config
|
||||
}
|
||||
|
||||
func makeConfigs() (*config.Manager, *cfgs) {
|
||||
|
@ -35,7 +37,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
|||
apiCfg := &rest.Config{}
|
||||
ipfshttpCfg := &ipfshttp.Config{}
|
||||
consensusCfg := &raft.Config{}
|
||||
trackerCfg := &maptracker.Config{}
|
||||
maptrackerCfg := &maptracker.Config{}
|
||||
statelessCfg := &stateless.Config{}
|
||||
monCfg := &basic.Config{}
|
||||
pubsubmonCfg := &pubsubmon.Config{}
|
||||
diskInfCfg := &disk.Config{}
|
||||
|
@ -44,7 +47,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
|||
cfg.RegisterComponent(config.API, apiCfg)
|
||||
cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg)
|
||||
cfg.RegisterComponent(config.Consensus, consensusCfg)
|
||||
cfg.RegisterComponent(config.PinTracker, trackerCfg)
|
||||
cfg.RegisterComponent(config.PinTracker, maptrackerCfg)
|
||||
cfg.RegisterComponent(config.PinTracker, statelessCfg)
|
||||
cfg.RegisterComponent(config.Monitor, monCfg)
|
||||
cfg.RegisterComponent(config.Monitor, pubsubmonCfg)
|
||||
cfg.RegisterComponent(config.Informer, diskInfCfg)
|
||||
|
@ -54,7 +58,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
|||
apiCfg,
|
||||
ipfshttpCfg,
|
||||
consensusCfg,
|
||||
trackerCfg,
|
||||
maptrackerCfg,
|
||||
statelessCfg,
|
||||
monCfg,
|
||||
pubsubmonCfg,
|
||||
diskInfCfg,
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"github.com/ipfs/ipfs-cluster/monitor/basic"
|
||||
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
||||
"github.com/ipfs/ipfs-cluster/pintracker/maptracker"
|
||||
"github.com/ipfs/ipfs-cluster/pintracker/stateless"
|
||||
"github.com/ipfs/ipfs-cluster/pstoremgr"
|
||||
"github.com/ipfs/ipfs-cluster/state/mapstate"
|
||||
|
||||
|
@ -125,7 +126,7 @@ func createCluster(
|
|||
)
|
||||
checkErr("creating consensus component", err)
|
||||
|
||||
tracker := maptracker.NewMapPinTracker(cfgs.trackerCfg, host.ID())
|
||||
tracker := setupPinTracker(c.String("pintracker"), host, cfgs.maptrackerCfg, cfgs.statelessTrackerCfg)
|
||||
mon := setupMonitor(c.String("monitor"), host, cfgs.monCfg, cfgs.pubsubmonCfg)
|
||||
informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg)
|
||||
|
||||
|
@ -238,10 +239,12 @@ func setupMonitor(
|
|||
case "basic":
|
||||
mon, err := basic.NewMonitor(basicCfg)
|
||||
checkErr("creating monitor", err)
|
||||
logger.Debug("basic monitor loaded")
|
||||
return mon
|
||||
case "pubsub":
|
||||
mon, err := pubsubmon.New(h, pubsubCfg)
|
||||
checkErr("creating monitor", err)
|
||||
logger.Debug("pubsub monitor loaded")
|
||||
return mon
|
||||
default:
|
||||
err := errors.New("unknown monitor type")
|
||||
|
@ -250,3 +253,25 @@ func setupMonitor(
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
func setupPinTracker(
|
||||
name string,
|
||||
h host.Host,
|
||||
mapCfg *maptracker.Config,
|
||||
statelessCfg *stateless.Config,
|
||||
) ipfscluster.PinTracker {
|
||||
switch name {
|
||||
case "map":
|
||||
ptrk := maptracker.NewMapPinTracker(mapCfg, h.ID())
|
||||
logger.Debug("map pintracker loaded")
|
||||
return ptrk
|
||||
case "stateless":
|
||||
ptrk := stateless.New(statelessCfg, h.ID())
|
||||
logger.Debug("stateless pintracker loaded")
|
||||
return ptrk
|
||||
default:
|
||||
err := errors.New("unknown pintracker type")
|
||||
checkErr("", err)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ const programName = `ipfs-cluster-service`
|
|||
const (
|
||||
defaultAllocation = "disk-freespace"
|
||||
defaultMonitor = "pubsub"
|
||||
defaultPinTracker = "map"
|
||||
defaultLogLevel = "info"
|
||||
)
|
||||
|
||||
|
@ -250,6 +251,12 @@ configuration.
|
|||
Hidden: true,
|
||||
Usage: "peer monitor to use [basic,pubsub].",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "pintracker",
|
||||
Value: defaultPinTracker,
|
||||
Hidden: true,
|
||||
Usage: "pintracker to use [map,stateless].",
|
||||
},
|
||||
},
|
||||
Action: daemon,
|
||||
},
|
||||
|
|
|
@ -21,6 +21,7 @@ var LoggingFacilities = map[string]string{
|
|||
"shardingdags": "INFO",
|
||||
"localdags": "INFO",
|
||||
"adder": "INFO",
|
||||
"optracker": "INFO",
|
||||
}
|
||||
|
||||
// LoggingFacilitiesExtra provides logging identifiers
|
||||
|
|
|
@ -11,7 +11,7 @@ const configKey = "maptracker"
|
|||
|
||||
// Default values for this Config.
|
||||
const (
|
||||
DefaultMaxPinQueueSize = 4096
|
||||
DefaultMaxPinQueueSize = 50000
|
||||
DefaultConcurrentPins = 10
|
||||
)
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ const configKey = "stateless"
|
|||
|
||||
// Default values for this Config.
|
||||
const (
|
||||
DefaultMaxPinQueueSize = 4096
|
||||
DefaultConcurrentPins = 1
|
||||
DefaultMaxPinQueueSize = 50000
|
||||
DefaultConcurrentPins = 10
|
||||
)
|
||||
|
||||
// Config allows to initialize a Monitor and customize some parameters.
|
||||
|
|
Loading…
Reference in New Issue
Block a user