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/lotus/api"
|
||||
cliutil "github.com/filecoin-project/lotus/cli/util"
|
||||
"github.com/filecoin-project/lotus/node/repo"
|
||||
)
|
||||
|
||||
@ -128,7 +127,7 @@ var AuthApiInfoToken = &cli.Command{
|
||||
|
||||
// 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)
|
||||
return nil
|
||||
},
|
||||
|
@ -28,63 +28,6 @@ const (
|
||||
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.
|
||||
//
|
||||
// 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) {
|
||||
// Check if there was a flag passed with the listen address of the API
|
||||
// server (only used by the tests)
|
||||
apiFlags := flagsForAPI(t)
|
||||
for _, f := range apiFlags {
|
||||
for _, f := range t.APIFlags() {
|
||||
if !ctx.IsSet(f) {
|
||||
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
|
||||
// CLI flags (repo flags below).
|
||||
//
|
||||
primaryEnv, fallbacksEnvs, deprecatedEnvs := EnvsForAPIInfos(t)
|
||||
primaryEnv, fallbacksEnvs, deprecatedEnvs := t.APIInfoEnvVars()
|
||||
env, ok := os.LookupEnv(primaryEnv)
|
||||
if ok {
|
||||
return ParseApiInfo(env), nil
|
||||
@ -125,8 +67,7 @@ func GetAPIInfo(ctx *cli.Context, t repo.RepoType) (APIInfo, error) {
|
||||
}
|
||||
}
|
||||
|
||||
repoFlags := flagsForRepo(t)
|
||||
for _, f := range repoFlags {
|
||||
for _, f := range t.RepoFlags() {
|
||||
// cannot use ctx.IsSet because it ignores default values
|
||||
path := ctx.String(f)
|
||||
if path == "" {
|
||||
|
@ -59,6 +59,20 @@ func NewRepoTypeFromString(t string) RepoType {
|
||||
type RepoType interface {
|
||||
Type() string
|
||||
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
|
||||
@ -79,6 +93,18 @@ func (fullNode) Config() interface{} {
|
||||
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
|
||||
|
||||
type storageMiner struct{}
|
||||
@ -93,10 +119,25 @@ func (storageMiner) Config() interface{} {
|
||||
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
|
||||
|
||||
type markets struct{}
|
||||
|
||||
func (markets) SupportsStagingDeals() {}
|
||||
|
||||
func (markets) Type() string {
|
||||
return "Markets"
|
||||
}
|
||||
@ -105,6 +146,21 @@ func (markets) Config() interface{} {
|
||||
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 {
|
||||
}
|
||||
|
||||
@ -118,6 +174,18 @@ func (worker) Config() interface{} {
|
||||
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
|
||||
|
||||
type wallet struct {
|
||||
@ -131,6 +199,18 @@ func (wallet) Config() interface{} {
|
||||
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 ErrRepoExists = xerrors.New("repo exists")
|
||||
|
Loading…
Reference in New Issue
Block a user