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/basic"
|
||||||
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
||||||
"github.com/ipfs/ipfs-cluster/pintracker/maptracker"
|
"github.com/ipfs/ipfs-cluster/pintracker/maptracker"
|
||||||
|
"github.com/ipfs/ipfs-cluster/pintracker/stateless"
|
||||||
)
|
)
|
||||||
|
|
||||||
type cfgs struct {
|
type cfgs struct {
|
||||||
clusterCfg *ipfscluster.Config
|
clusterCfg *ipfscluster.Config
|
||||||
apiCfg *rest.Config
|
apiCfg *rest.Config
|
||||||
ipfshttpCfg *ipfshttp.Config
|
ipfshttpCfg *ipfshttp.Config
|
||||||
consensusCfg *raft.Config
|
consensusCfg *raft.Config
|
||||||
trackerCfg *maptracker.Config
|
maptrackerCfg *maptracker.Config
|
||||||
monCfg *basic.Config
|
statelessTrackerCfg *stateless.Config
|
||||||
pubsubmonCfg *pubsubmon.Config
|
monCfg *basic.Config
|
||||||
diskInfCfg *disk.Config
|
pubsubmonCfg *pubsubmon.Config
|
||||||
numpinInfCfg *numpin.Config
|
diskInfCfg *disk.Config
|
||||||
|
numpinInfCfg *numpin.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeConfigs() (*config.Manager, *cfgs) {
|
func makeConfigs() (*config.Manager, *cfgs) {
|
||||||
|
@ -35,7 +37,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
||||||
apiCfg := &rest.Config{}
|
apiCfg := &rest.Config{}
|
||||||
ipfshttpCfg := &ipfshttp.Config{}
|
ipfshttpCfg := &ipfshttp.Config{}
|
||||||
consensusCfg := &raft.Config{}
|
consensusCfg := &raft.Config{}
|
||||||
trackerCfg := &maptracker.Config{}
|
maptrackerCfg := &maptracker.Config{}
|
||||||
|
statelessCfg := &stateless.Config{}
|
||||||
monCfg := &basic.Config{}
|
monCfg := &basic.Config{}
|
||||||
pubsubmonCfg := &pubsubmon.Config{}
|
pubsubmonCfg := &pubsubmon.Config{}
|
||||||
diskInfCfg := &disk.Config{}
|
diskInfCfg := &disk.Config{}
|
||||||
|
@ -44,7 +47,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
||||||
cfg.RegisterComponent(config.API, apiCfg)
|
cfg.RegisterComponent(config.API, apiCfg)
|
||||||
cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg)
|
cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg)
|
||||||
cfg.RegisterComponent(config.Consensus, consensusCfg)
|
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, monCfg)
|
||||||
cfg.RegisterComponent(config.Monitor, pubsubmonCfg)
|
cfg.RegisterComponent(config.Monitor, pubsubmonCfg)
|
||||||
cfg.RegisterComponent(config.Informer, diskInfCfg)
|
cfg.RegisterComponent(config.Informer, diskInfCfg)
|
||||||
|
@ -54,7 +58,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
|
||||||
apiCfg,
|
apiCfg,
|
||||||
ipfshttpCfg,
|
ipfshttpCfg,
|
||||||
consensusCfg,
|
consensusCfg,
|
||||||
trackerCfg,
|
maptrackerCfg,
|
||||||
|
statelessCfg,
|
||||||
monCfg,
|
monCfg,
|
||||||
pubsubmonCfg,
|
pubsubmonCfg,
|
||||||
diskInfCfg,
|
diskInfCfg,
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
"github.com/ipfs/ipfs-cluster/monitor/basic"
|
"github.com/ipfs/ipfs-cluster/monitor/basic"
|
||||||
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
|
||||||
"github.com/ipfs/ipfs-cluster/pintracker/maptracker"
|
"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/pstoremgr"
|
||||||
"github.com/ipfs/ipfs-cluster/state/mapstate"
|
"github.com/ipfs/ipfs-cluster/state/mapstate"
|
||||||
|
|
||||||
|
@ -125,7 +126,7 @@ func createCluster(
|
||||||
)
|
)
|
||||||
checkErr("creating consensus component", err)
|
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)
|
mon := setupMonitor(c.String("monitor"), host, cfgs.monCfg, cfgs.pubsubmonCfg)
|
||||||
informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg)
|
informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg)
|
||||||
|
|
||||||
|
@ -238,10 +239,12 @@ func setupMonitor(
|
||||||
case "basic":
|
case "basic":
|
||||||
mon, err := basic.NewMonitor(basicCfg)
|
mon, err := basic.NewMonitor(basicCfg)
|
||||||
checkErr("creating monitor", err)
|
checkErr("creating monitor", err)
|
||||||
|
logger.Debug("basic monitor loaded")
|
||||||
return mon
|
return mon
|
||||||
case "pubsub":
|
case "pubsub":
|
||||||
mon, err := pubsubmon.New(h, pubsubCfg)
|
mon, err := pubsubmon.New(h, pubsubCfg)
|
||||||
checkErr("creating monitor", err)
|
checkErr("creating monitor", err)
|
||||||
|
logger.Debug("pubsub monitor loaded")
|
||||||
return mon
|
return mon
|
||||||
default:
|
default:
|
||||||
err := errors.New("unknown monitor type")
|
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 (
|
const (
|
||||||
defaultAllocation = "disk-freespace"
|
defaultAllocation = "disk-freespace"
|
||||||
defaultMonitor = "pubsub"
|
defaultMonitor = "pubsub"
|
||||||
|
defaultPinTracker = "map"
|
||||||
defaultLogLevel = "info"
|
defaultLogLevel = "info"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -250,6 +251,12 @@ configuration.
|
||||||
Hidden: true,
|
Hidden: true,
|
||||||
Usage: "peer monitor to use [basic,pubsub].",
|
Usage: "peer monitor to use [basic,pubsub].",
|
||||||
},
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "pintracker",
|
||||||
|
Value: defaultPinTracker,
|
||||||
|
Hidden: true,
|
||||||
|
Usage: "pintracker to use [map,stateless].",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: daemon,
|
Action: daemon,
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,6 +21,7 @@ var LoggingFacilities = map[string]string{
|
||||||
"shardingdags": "INFO",
|
"shardingdags": "INFO",
|
||||||
"localdags": "INFO",
|
"localdags": "INFO",
|
||||||
"adder": "INFO",
|
"adder": "INFO",
|
||||||
|
"optracker": "INFO",
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoggingFacilitiesExtra provides logging identifiers
|
// LoggingFacilitiesExtra provides logging identifiers
|
||||||
|
|
|
@ -11,7 +11,7 @@ const configKey = "maptracker"
|
||||||
|
|
||||||
// Default values for this Config.
|
// Default values for this Config.
|
||||||
const (
|
const (
|
||||||
DefaultMaxPinQueueSize = 4096
|
DefaultMaxPinQueueSize = 50000
|
||||||
DefaultConcurrentPins = 10
|
DefaultConcurrentPins = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ const configKey = "stateless"
|
||||||
|
|
||||||
// Default values for this Config.
|
// Default values for this Config.
|
||||||
const (
|
const (
|
||||||
DefaultMaxPinQueueSize = 4096
|
DefaultMaxPinQueueSize = 50000
|
||||||
DefaultConcurrentPins = 1
|
DefaultConcurrentPins = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
// Config allows to initialize a Monitor and customize some parameters.
|
// Config allows to initialize a Monitor and customize some parameters.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user