mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-26 23:53:19 +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"
|
routingOptionDHTClientKwd = "dhtclient"
|
||||||
routingOptionDHTKwd = "dht"
|
routingOptionDHTKwd = "dht"
|
||||||
routingOptionNoneKwd = "none"
|
routingOptionNoneKwd = "none"
|
||||||
|
routingOptionDefaultKwd = "default"
|
||||||
unencryptTransportKwd = "disable-transport-encryption"
|
unencryptTransportKwd = "disable-transport-encryption"
|
||||||
unrestrictedApiAccessKwd = "unrestricted-api"
|
unrestrictedApiAccessKwd = "unrestricted-api"
|
||||||
writableKwd = "writable"
|
writableKwd = "writable"
|
||||||
@ -150,7 +151,7 @@ Headers.
|
|||||||
Options: []cmdkit.Option{
|
Options: []cmdkit.Option{
|
||||||
cmdkit.BoolOption(initOptionKwd, "Initialize ipfs with default settings if not already initialized"),
|
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(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(mountKwd, "Mounts IPFS to the filesystem"),
|
||||||
cmdkit.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"),
|
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."),
|
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)
|
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 {
|
switch routingOption {
|
||||||
case routingOptionSupernodeKwd:
|
case routingOptionSupernodeKwd:
|
||||||
re.SetError(errors.New("supernode routing was never fully implemented and has been removed"), cmdkit.ErrNormal)
|
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.
|
running IPFS on machines with public IPv4 addresses.
|
||||||
'test' - Reduces external interference of IPFS daemon, this
|
'test' - Reduces external interference of IPFS daemon, this
|
||||||
is useful when using the daemon in test environments.
|
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
|
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
|
located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
|
||||||
|
@ -197,6 +197,12 @@ Default: `true`
|
|||||||
- `Interval`
|
- `Interval`
|
||||||
A number of seconds to wait between discovery checks.
|
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`
|
## `Gateway`
|
||||||
Options for the HTTP gateway.
|
Options for the HTTP gateway.
|
||||||
|
@ -19,6 +19,7 @@ type Config struct {
|
|||||||
Addresses Addresses // local node's addresses
|
Addresses Addresses // local node's addresses
|
||||||
Mounts Mounts // local node's mount points
|
Mounts Mounts // local node's mount points
|
||||||
Discovery Discovery // local node's discovery mechanisms
|
Discovery Discovery // local node's discovery mechanisms
|
||||||
|
Routing Routing // local node's routing settings
|
||||||
Ipns Ipns // Ipns settings
|
Ipns Ipns // Ipns settings
|
||||||
Bootstrap []string // local nodes's bootstrap peer addresses
|
Bootstrap []string // local nodes's bootstrap peer addresses
|
||||||
Gateway Gateway // local node's gateway server options
|
Gateway Gateway // local node's gateway server options
|
||||||
|
@ -38,10 +38,16 @@ func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
|
|||||||
Datastore: datastore,
|
Datastore: datastore,
|
||||||
Bootstrap: BootstrapPeerStrings(bootstrapPeers),
|
Bootstrap: BootstrapPeerStrings(bootstrapPeers),
|
||||||
Identity: identity,
|
Identity: identity,
|
||||||
Discovery: Discovery{MDNS{
|
Discovery: Discovery{
|
||||||
Enabled: true,
|
MDNS: MDNS{
|
||||||
Interval: 10,
|
Enabled: true,
|
||||||
}},
|
Interval: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Routing: Routing{
|
||||||
|
Type: "dht",
|
||||||
|
},
|
||||||
|
|
||||||
// setup the node mount points.
|
// setup the node mount points.
|
||||||
Mounts: Mounts{
|
Mounts: Mounts{
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
// Transformer is a function which takes configuration and applies some filter to it
|
// Transformer is a function which takes configuration and applies some filter to it
|
||||||
type Transformer func(c *Config) error
|
type Transformer func(c *Config) error
|
||||||
|
|
||||||
@ -73,6 +75,15 @@ var Profiles = map[string]Transformer{
|
|||||||
c.Datastore.Spec = DefaultDatastoreConfig().Spec
|
c.Datastore.Spec = DefaultDatastoreConfig().Spec
|
||||||
return nil
|
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 {
|
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"
|
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_init_ipfs
|
||||||
|
|
||||||
test_launch_ipfs_daemon
|
test_launch_ipfs_daemon
|
||||||
|
Reference in New Issue
Block a user