move APIInfoEnvVars, RepoFlags, APIFlags under RepoType
This commit is contained in:
parent
acbfc879aa
commit
62e352ef88
@ -9,7 +9,6 @@ import (
|
|||||||
"github.com/filecoin-project/go-jsonrpc/auth"
|
"github.com/filecoin-project/go-jsonrpc/auth"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/api"
|
"github.com/filecoin-project/lotus/api"
|
||||||
cliutil "github.com/filecoin-project/lotus/cli/util"
|
|
||||||
"github.com/filecoin-project/lotus/node/repo"
|
"github.com/filecoin-project/lotus/node/repo"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -128,7 +127,7 @@ var AuthApiInfoToken = &cli.Command{
|
|||||||
|
|
||||||
// TODO: Log in audit log when it is implemented
|
// TODO: Log in audit log when it is implemented
|
||||||
|
|
||||||
currentEnv, _, _ := cliutil.EnvsForAPIInfos(t)
|
currentEnv, _, _ := t.APIInfoEnvVars()
|
||||||
fmt.Printf("%s=%s:%s\n", currentEnv, string(token), ainfo.Addr)
|
fmt.Printf("%s=%s:%s\n", currentEnv, string(token), ainfo.Addr)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
@ -28,63 +28,6 @@ const (
|
|||||||
metadataTraceContext = "traceContext"
|
metadataTraceContext = "traceContext"
|
||||||
)
|
)
|
||||||
|
|
||||||
// flagsForAPI returns flags passed on the command line with the listen address
|
|
||||||
// of the API server (only used by the tests), in the order of precedence they
|
|
||||||
// should be applied for the requested kind of node.
|
|
||||||
func flagsForAPI(t repo.RepoType) []string {
|
|
||||||
switch t.Type() {
|
|
||||||
case "FullNode":
|
|
||||||
return []string{"api-url"}
|
|
||||||
case "StorageMiner":
|
|
||||||
return []string{"miner-api-url"}
|
|
||||||
case "Worker":
|
|
||||||
return []string{"worker-api-url"}
|
|
||||||
case "Markets":
|
|
||||||
// support split markets-miner and monolith deployments.
|
|
||||||
return []string{"markets-api-url", "miner-api-url"}
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("Unknown repo type: %v", t))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func flagsForRepo(t repo.RepoType) []string {
|
|
||||||
switch t.Type() {
|
|
||||||
case "FullNode":
|
|
||||||
return []string{"repo"}
|
|
||||||
case "StorageMiner":
|
|
||||||
return []string{"miner-repo"}
|
|
||||||
case "Worker":
|
|
||||||
return []string{"worker-repo"}
|
|
||||||
case "Markets":
|
|
||||||
// support split markets-miner and monolith deployments.
|
|
||||||
return []string{"markets-repo", "miner-repo"}
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("Unknown repo type: %v", t))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnvsForAPIInfos returns the environment variables to use in order of precedence
|
|
||||||
// to determine the API endpoint of the specified node type.
|
|
||||||
//
|
|
||||||
// It returns the current variables and deprecated ones separately, so that
|
|
||||||
// the user can log a warning when deprecated ones are found to be in use.
|
|
||||||
func EnvsForAPIInfos(t repo.RepoType) (primary string, fallbacks []string, deprecated []string) {
|
|
||||||
switch t.Type() {
|
|
||||||
case "FullNode":
|
|
||||||
return "FULLNODE_API_INFO", nil, nil
|
|
||||||
case "StorageMiner":
|
|
||||||
// TODO remove deprecated deprecation period
|
|
||||||
return "MINER_API_INFO", nil, []string{"STORAGE_API_INFO"}
|
|
||||||
case "Worker":
|
|
||||||
return "WORKER_API_INFO", nil, nil
|
|
||||||
case "Markets":
|
|
||||||
// support split markets-miner and monolith deployments.
|
|
||||||
return "MARKETS_API_INFO", []string{"MINER_API_INFO"}, nil
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("Unknown repo type: %v", t))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetAPIInfo returns the API endpoint to use for the specified kind of repo.
|
// GetAPIInfo returns the API endpoint to use for the specified kind of repo.
|
||||||
//
|
//
|
||||||
// The order of precedence is as follows:
|
// The order of precedence is as follows:
|
||||||
@ -96,8 +39,7 @@ func EnvsForAPIInfos(t repo.RepoType) (primary string, fallbacks []string, depre
|
|||||||
func GetAPIInfo(ctx *cli.Context, t repo.RepoType) (APIInfo, error) {
|
func GetAPIInfo(ctx *cli.Context, t repo.RepoType) (APIInfo, error) {
|
||||||
// Check if there was a flag passed with the listen address of the API
|
// Check if there was a flag passed with the listen address of the API
|
||||||
// server (only used by the tests)
|
// server (only used by the tests)
|
||||||
apiFlags := flagsForAPI(t)
|
for _, f := range t.APIFlags() {
|
||||||
for _, f := range apiFlags {
|
|
||||||
if !ctx.IsSet(f) {
|
if !ctx.IsSet(f) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -111,7 +53,7 @@ func GetAPIInfo(ctx *cli.Context, t repo.RepoType) (APIInfo, error) {
|
|||||||
// Note: it is not correct/intuitive to prefer environment variables over
|
// Note: it is not correct/intuitive to prefer environment variables over
|
||||||
// CLI flags (repo flags below).
|
// CLI flags (repo flags below).
|
||||||
//
|
//
|
||||||
primaryEnv, fallbacksEnvs, deprecatedEnvs := EnvsForAPIInfos(t)
|
primaryEnv, fallbacksEnvs, deprecatedEnvs := t.APIInfoEnvVars()
|
||||||
env, ok := os.LookupEnv(primaryEnv)
|
env, ok := os.LookupEnv(primaryEnv)
|
||||||
if ok {
|
if ok {
|
||||||
return ParseApiInfo(env), nil
|
return ParseApiInfo(env), nil
|
||||||
@ -125,8 +67,7 @@ func GetAPIInfo(ctx *cli.Context, t repo.RepoType) (APIInfo, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repoFlags := flagsForRepo(t)
|
for _, f := range t.RepoFlags() {
|
||||||
for _, f := range repoFlags {
|
|
||||||
// cannot use ctx.IsSet because it ignores default values
|
// cannot use ctx.IsSet because it ignores default values
|
||||||
path := ctx.String(f)
|
path := ctx.String(f)
|
||||||
if path == "" {
|
if path == "" {
|
||||||
|
@ -59,6 +59,20 @@ func NewRepoTypeFromString(t string) RepoType {
|
|||||||
type RepoType interface {
|
type RepoType interface {
|
||||||
Type() string
|
Type() string
|
||||||
Config() interface{}
|
Config() interface{}
|
||||||
|
|
||||||
|
// APIFlags returns flags passed on the command line with the listen address
|
||||||
|
// of the API server (only used by the tests), in the order of precedence they
|
||||||
|
// should be applied for the requested kind of node.
|
||||||
|
APIFlags() []string
|
||||||
|
|
||||||
|
RepoFlags() []string
|
||||||
|
|
||||||
|
// APIInfoEnvVars returns the environment variables to use in order of precedence
|
||||||
|
// to determine the API endpoint of the specified node type.
|
||||||
|
//
|
||||||
|
// It returns the current variables and deprecated ones separately, so that
|
||||||
|
// the user can log a warning when deprecated ones are found to be in use.
|
||||||
|
APIInfoEnvVars() (string, []string, []string)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SupportsStagingDeals is a trait for services that support staging deals
|
// SupportsStagingDeals is a trait for services that support staging deals
|
||||||
@ -79,6 +93,18 @@ func (fullNode) Config() interface{} {
|
|||||||
return config.DefaultFullNode()
|
return config.DefaultFullNode()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (fullNode) APIFlags() []string {
|
||||||
|
return []string{"api-url"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fullNode) RepoFlags() []string {
|
||||||
|
return []string{"repo"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fullNode) APIInfoEnvVars() (primary string, fallbacks []string, deprecated []string) {
|
||||||
|
return "FULLNODE_API_INFO", nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
var StorageMiner storageMiner
|
var StorageMiner storageMiner
|
||||||
|
|
||||||
type storageMiner struct{}
|
type storageMiner struct{}
|
||||||
@ -93,10 +119,25 @@ func (storageMiner) Config() interface{} {
|
|||||||
return config.DefaultStorageMiner()
|
return config.DefaultStorageMiner()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (storageMiner) APIFlags() []string {
|
||||||
|
return []string{"miner-api-url"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageMiner) RepoFlags() []string {
|
||||||
|
return []string{"miner-repo"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageMiner) APIInfoEnvVars() (primary string, fallbacks []string, deprecated []string) {
|
||||||
|
// TODO remove deprecated deprecation period
|
||||||
|
return "MINER_API_INFO", nil, []string{"STORAGE_API_INFO"}
|
||||||
|
}
|
||||||
|
|
||||||
var Markets markets
|
var Markets markets
|
||||||
|
|
||||||
type markets struct{}
|
type markets struct{}
|
||||||
|
|
||||||
|
func (markets) SupportsStagingDeals() {}
|
||||||
|
|
||||||
func (markets) Type() string {
|
func (markets) Type() string {
|
||||||
return "Markets"
|
return "Markets"
|
||||||
}
|
}
|
||||||
@ -105,6 +146,21 @@ func (markets) Config() interface{} {
|
|||||||
return config.DefaultStorageMiner()
|
return config.DefaultStorageMiner()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (markets) APIFlags() []string {
|
||||||
|
// support split markets-miner and monolith deployments.
|
||||||
|
return []string{"markets-api-url", "miner-api-url"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (markets) RepoFlags() []string {
|
||||||
|
// support split markets-miner and monolith deployments.
|
||||||
|
return []string{"markets-repo", "miner-repo"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (markets) APIInfoEnvVars() (primary string, fallbacks []string, deprecated []string) {
|
||||||
|
// support split markets-miner and monolith deployments.
|
||||||
|
return "MARKETS_API_INFO", []string{"MINER_API_INFO"}, nil
|
||||||
|
}
|
||||||
|
|
||||||
type worker struct {
|
type worker struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +174,18 @@ func (worker) Config() interface{} {
|
|||||||
return &struct{}{}
|
return &struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (worker) APIFlags() []string {
|
||||||
|
return []string{"worker-api-url"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (worker) RepoFlags() []string {
|
||||||
|
return []string{"worker-repo"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (worker) APIInfoEnvVars() (primary string, fallbacks []string, deprecated []string) {
|
||||||
|
return "WORKER_API_INFO", nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
var Wallet wallet
|
var Wallet wallet
|
||||||
|
|
||||||
type wallet struct {
|
type wallet struct {
|
||||||
@ -131,6 +199,18 @@ func (wallet) Config() interface{} {
|
|||||||
return &struct{}{}
|
return &struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wallet) APIFlags() []string {
|
||||||
|
panic("not supported")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (wallet) RepoFlags() []string {
|
||||||
|
panic("not supported")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (wallet) APIInfoEnvVars() (primary string, fallbacks []string, deprecated []string) {
|
||||||
|
panic("not supported")
|
||||||
|
}
|
||||||
|
|
||||||
var log = logging.Logger("repo")
|
var log = logging.Logger("repo")
|
||||||
|
|
||||||
var ErrRepoExists = xerrors.New("repo exists")
|
var ErrRepoExists = xerrors.New("repo exists")
|
||||||
|
Loading…
Reference in New Issue
Block a user