mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-26 15:42:21 +08:00
Merge pull request #4154 from ipfs/feat/lowpower-profile
Add low power init profile
This commit is contained in:
@ -45,6 +45,7 @@ const (
|
||||
routingOptionDHTClientKwd = "dhtclient"
|
||||
routingOptionDHTKwd = "dht"
|
||||
routingOptionNoneKwd = "none"
|
||||
routingOptionDefaultKwd = "default"
|
||||
unencryptTransportKwd = "disable-transport-encryption"
|
||||
unrestrictedApiAccessKwd = "unrestricted-api"
|
||||
writableKwd = "writable"
|
||||
@ -150,7 +151,7 @@ Headers.
|
||||
Options: []cmdkit.Option{
|
||||
cmdkit.BoolOption(initOptionKwd, "Initialize ipfs with default settings if not already initialized"),
|
||||
cmdkit.StringOption(initProfileOptionKwd, "Configuration profiles to apply for --init. See ipfs init --help for more"),
|
||||
cmdkit.StringOption(routingOptionKwd, "Overrides the routing option").WithDefault("dht"),
|
||||
cmdkit.StringOption(routingOptionKwd, "Overrides the routing option").WithDefault("default"),
|
||||
cmdkit.BoolOption(mountKwd, "Mounts IPFS to the filesystem"),
|
||||
cmdkit.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"),
|
||||
cmdkit.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount). Defaults to config setting."),
|
||||
@ -300,6 +301,22 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
}
|
||||
|
||||
routingOption, _ := req.Options[routingOptionKwd].(string)
|
||||
if err != nil {
|
||||
re.SetError(err, cmdkit.ErrNormal)
|
||||
return
|
||||
}
|
||||
if routingOption == routingOptionDefaultKwd {
|
||||
cfg, err := repo.Config()
|
||||
if err != nil {
|
||||
re.SetError(err, cmdkit.ErrNormal)
|
||||
return
|
||||
}
|
||||
|
||||
routingOption = cfg.Routing.Type
|
||||
if routingOption == "" {
|
||||
routingOption = routingOptionDHTKwd
|
||||
}
|
||||
}
|
||||
switch routingOption {
|
||||
case routingOptionSupernodeKwd:
|
||||
re.SetError(errors.New("supernode routing was never fully implemented and has been removed"), cmdkit.ErrNormal)
|
||||
|
@ -39,6 +39,9 @@ Available profiles:
|
||||
running IPFS on machines with public IPv4 addresses.
|
||||
'test' - Reduces external interference of IPFS daemon, this
|
||||
is useful when using the daemon in test environments.
|
||||
'lowpower' - Reduces daemon overhead on the system. May affect node
|
||||
functionality - performance of content discovery and data fetching
|
||||
may be degraded.
|
||||
|
||||
ipfs uses a repository in the local file system. By default, the repo is
|
||||
located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
|
||||
|
@ -197,6 +197,12 @@ Default: `true`
|
||||
- `Interval`
|
||||
A number of seconds to wait between discovery checks.
|
||||
|
||||
- `Routing`
|
||||
Content routing mode. Can be overridden with daemon `--routing` flag.
|
||||
Valid modes are:
|
||||
- `dht` (default)
|
||||
- `dhtclient`
|
||||
- `none`
|
||||
|
||||
## `Gateway`
|
||||
Options for the HTTP gateway.
|
||||
|
@ -19,6 +19,7 @@ type Config struct {
|
||||
Addresses Addresses // local node's addresses
|
||||
Mounts Mounts // local node's mount points
|
||||
Discovery Discovery // local node's discovery mechanisms
|
||||
Routing Routing // local node's routing settings
|
||||
Ipns Ipns // Ipns settings
|
||||
Bootstrap []string // local nodes's bootstrap peer addresses
|
||||
Gateway Gateway // local node's gateway server options
|
||||
|
@ -38,10 +38,16 @@ func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
|
||||
Datastore: datastore,
|
||||
Bootstrap: BootstrapPeerStrings(bootstrapPeers),
|
||||
Identity: identity,
|
||||
Discovery: Discovery{MDNS{
|
||||
Discovery: Discovery{
|
||||
MDNS: MDNS{
|
||||
Enabled: true,
|
||||
Interval: 10,
|
||||
}},
|
||||
},
|
||||
},
|
||||
|
||||
Routing: Routing{
|
||||
Type: "dht",
|
||||
},
|
||||
|
||||
// setup the node mount points.
|
||||
Mounts: Mounts{
|
||||
|
@ -1,5 +1,7 @@
|
||||
package config
|
||||
|
||||
import "time"
|
||||
|
||||
// Transformer is a function which takes configuration and applies some filter to it
|
||||
type Transformer func(c *Config) error
|
||||
|
||||
@ -73,6 +75,15 @@ var Profiles = map[string]Transformer{
|
||||
c.Datastore.Spec = DefaultDatastoreConfig().Spec
|
||||
return nil
|
||||
},
|
||||
"lowpower": func(c *Config) error {
|
||||
c.Routing.Type = "dhtclient"
|
||||
c.Reprovider.Interval = "0"
|
||||
|
||||
c.Swarm.ConnMgr.LowWater = 20
|
||||
c.Swarm.ConnMgr.HighWater = 40
|
||||
c.Swarm.ConnMgr.GracePeriod = time.Minute.String()
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
func appendSingle(a []string, b []string) []string {
|
||||
|
7
repo/config/routing.go
Normal file
7
repo/config/routing.go
Normal file
@ -0,0 +1,7 @@
|
||||
package config
|
||||
|
||||
// Routing defines configuration options for libp2p routing
|
||||
type Routing struct {
|
||||
// Type sets default daemon routing mode.
|
||||
Type string
|
||||
}
|
@ -167,6 +167,20 @@ test_expect_success "clean up ipfs dir" '
|
||||
rm -rf "$IPFS_PATH"
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs init --profile=lowpower' succeeds" '
|
||||
BITS="1024" &&
|
||||
ipfs init --bits="$BITS" --profile=lowpower
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs config Discovery.Routing' looks good" '
|
||||
ipfs config Routing.Type > actual_config &&
|
||||
test $(cat actual_config) = "dhtclient"
|
||||
'
|
||||
|
||||
test_expect_success "clean up ipfs dir" '
|
||||
rm -rf "$IPFS_PATH"
|
||||
'
|
||||
|
||||
test_init_ipfs
|
||||
|
||||
test_launch_ipfs_daemon
|
||||
|
Reference in New Issue
Block a user