Skip to content

Commit

Permalink
feat: unified run mode
Browse files Browse the repository at this point in the history
  • Loading branch information
ta0li committed Nov 24, 2022
1 parent 709ab8d commit fcd7e32
Show file tree
Hide file tree
Showing 10 changed files with 150 additions and 446 deletions.
10 changes: 2 additions & 8 deletions api/clients/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func NewMarketEvent(mctx metrics.MetricsCtx) (gwAPI.IMarketEvent, error) {
return stream, nil
}

var ClientsOpts = func(server bool, mode string, msgCfg *config.Messager, signerCfg *config.Signer) builder.Option {
var ClientsOpts = func(server bool, msgCfg *config.Messager, signerCfg *config.Signer) builder.Option {
opts := builder.Options(
builder.Override(new(IMixMessage), NewMixMsgClient),
builder.Override(new(signer.ISigner), signer.NewISignerClient(server)),
Expand All @@ -37,13 +37,7 @@ var ClientsOpts = func(server bool, mode string, msgCfg *config.Messager, signer
if server {
return builder.Options(opts,
builder.Override(new(v1api.FullNode), NodeClient),

builder.ApplyIf(
func(s *builder.Settings) bool {
return mode == "solo"
},
builder.Override(new(gwAPI.IMarketEvent), NewMarketEvent),
),
builder.Override(new(gwAPI.IMarketEvent), NewMarketEvent),
)
}

Expand Down
1 change: 1 addition & 0 deletions api/clients/storage_miner.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/ipfs/go-cid"
)

// MarketRequestEvent todo no use
type MarketRequestEvent interface {
IsUnsealed(ctx context.Context, miner address.Address, pieceCid cid.Cid, sector storage.SectorRef, offset types.PaddedByteIndex, size abi.PaddedPieceSize) (bool, error)
// SectorsUnsealPiece will Unseal a Sealed sector file for the given sector.
Expand Down
2 changes: 1 addition & 1 deletion cmd/market-client/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ func marketClient(cctx *cli.Context) error {

config.ConfigClientOpts(cfg),

clients2.ClientsOpts(false, "", &cfg.Messager, &cfg.Signer),
clients2.ClientsOpts(false, &cfg.Messager, &cfg.Signer),
models.DBOptions(false, nil),
network.NetworkOpts(false, cfg.SimultaneousTransfersForStorage, 0, cfg.SimultaneousTransfersForRetrieval),
paychmgr.PaychOpts,
Expand Down
44 changes: 13 additions & 31 deletions cmd/venus-market/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,31 @@ var (
Name: "node-url",
Usage: "url to connect to daemon service",
}
NodeTokenFlag = &cli.StringFlag{
Name: "node-token",
Usage: "node token",
}

AuthUrlFlag = &cli.StringFlag{
Name: "auth-url",
Usage: "url to connect to auth service",
}
AuthTokeFlag = &cli.StringFlag{
Name: "auth-token",
Usage: "token for connect venus components",
}

MessagerUrlFlag = &cli.StringFlag{
Name: "messager-url",
Usage: "url to connect messager service",
}
MessagerTokenFlag = &cli.StringFlag{
Name: "messager-token",
Usage: "messager token",
Hidden: true,

GatewayUrlFlag = &cli.StringFlag{
Name: "gateway-url",
Usage: "used to connect gateway service for sign",
}

ChainServiceTokenFlag = &cli.StringFlag{
Name: "cs-token",
Usage: "chain service token",
}

SignerTypeFlag = &cli.StringFlag{
Name: "signer-type",
Usage: "signer service type(lotusnode, wallet, gateway)",
Hidden: false,
Name: "signer-type",
Usage: "signer service type(lotusnode, wallet, gateway)",
Value: "wallet",
}
SignerUrlFlag = &cli.StringFlag{
Name: "signer-url",
Expand All @@ -74,24 +71,10 @@ var (
Usage: "auth token for connect signer service",
}

GatewayUrlFlag = &cli.StringFlag{
Name: "gateway-url",
Usage: "used to connect gateway service for sign",
}
GatewayTokenFlag = &cli.StringFlag{
Name: "gateway-token",
Usage: "used to connect gateway service for sign",
}

MysqlDsnFlag = &cli.StringFlag{
Name: "mysql-dsn",
Usage: "mysql connection string",
}

RetrievalPaymentAddress = &cli.StringFlag{
Name: "payment-addr",
Usage: "payment address for retrieval, eg. f01000",
}
)

func main() {
Expand All @@ -104,8 +87,7 @@ func main() {
RepoFlag,
},
Commands: []*cli.Command{
soloRunCmd,
poolRunCmd,
runCmd,
cli2.PiecesCmd,
cli2.RetrievalDealsCmd,
cli2.StorageDealsCmd,
Expand Down
120 changes: 107 additions & 13 deletions cmd/venus-market/pool-run.go → cmd/venus-market/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"fmt"
"os"

"github.com/gorilla/mux"
"github.com/urfave/cli/v2"
Expand All @@ -15,6 +16,7 @@ import (
"github.com/filecoin-project/venus-market/v2/api/clients"
"github.com/filecoin-project/venus-market/v2/api/impl"
cli2 "github.com/filecoin-project/venus-market/v2/cli"
"github.com/filecoin-project/venus-market/v2/cmd"
"github.com/filecoin-project/venus-market/v2/config"
"github.com/filecoin-project/venus-market/v2/dagstore"
"github.com/filecoin-project/venus-market/v2/fundmgr"
Expand All @@ -34,32 +36,124 @@ import (
"github.com/filecoin-project/venus/venus-shared/api/permission"
)

var poolRunCmd = &cli.Command{
Name: "pool-run",
Usage: "Run the market daemon in pool mode",
var runCmd = &cli.Command{
Name: "run",
Usage: "Run the market daemon",
Flags: []cli.Flag{
NodeUrlFlag,
NodeTokenFlag,
AuthUrlFlag,
AuthTokeFlag,
MessagerUrlFlag,
MessagerTokenFlag,
GatewayUrlFlag,
GatewayTokenFlag,
SignerTypeFlag,
SignerUrlFlag,
SignerTokenFlag,
MysqlDsnFlag,
RetrievalPaymentAddress,
},
Action: poolDaemon,
Action: runDaemon,
}

func poolDaemon(cctx *cli.Context) error {
func flagData(cctx *cli.Context, cfg *config.MarketConfig) error {
if cctx.IsSet(NodeUrlFlag.Name) {
cfg.Node.Url = cctx.String(NodeUrlFlag.Name)
}

if cctx.IsSet(AuthUrlFlag.Name) {
cfg.AuthNode.Url = cctx.String(AuthUrlFlag.Name)
}

if cctx.IsSet(MessagerUrlFlag.Name) {
cfg.Messager.Url = cctx.String(MessagerUrlFlag.Name)
}

// chain service token
if cctx.IsSet(ChainServiceTokenFlag.Name) {
csToken := cctx.String(ChainServiceTokenFlag.Name)
cfg.Node.Token = csToken
cfg.Messager.Token = csToken
cfg.AuthNode.Token = csToken
}

signerType := cctx.String(SignerTypeFlag.Name)
switch signerType {
case config.SignerTypeGateway:
if cctx.IsSet(GatewayUrlFlag.Name) {
cfg.Signer.Url = cctx.String(GatewayUrlFlag.Name)
}

if cctx.IsSet(ChainServiceTokenFlag.Name) {
cfg.Signer.Token = cctx.String(ChainServiceTokenFlag.Name)
}
case config.SignerTypeWallet:
if cctx.IsSet(GatewayUrlFlag.Name) {
cfg.Signer.Url = cctx.String(SignerUrlFlag.Name)
}

if cctx.IsSet(SignerTokenFlag.Name) {
cfg.Signer.Token = cctx.String(SignerTokenFlag.Name)
}
case config.SignerTypeLotusnode:
if cctx.IsSet(NodeUrlFlag.Name) {
cfg.Signer.Url = cctx.String(NodeUrlFlag.Name)
}
if cctx.IsSet(ChainServiceTokenFlag.Name) {
cfg.Signer.Token = cctx.String(ChainServiceTokenFlag.Name)
}
default:
return fmt.Errorf("unsupport signer type %s", signerType)
}
cfg.Signer.SignerType = signerType

if cctx.IsSet(MysqlDsnFlag.Name) {
cfg.Mysql.ConnectionString = cctx.String(MysqlDsnFlag.Name)
}

return nil
}

func prepare(cctx *cli.Context) (*config.MarketConfig, error) {
cfg := config.DefaultMarketConfig
cfg.HomeDir = cctx.String(RepoFlag.Name)
cfgPath, err := cfg.ConfigPath()
if err != nil {
return nil, err
}

mainLog.Info("load config from path ", cfgPath)
if _, err := os.Stat(cfgPath); os.IsNotExist(err) {
//create
err = flagData(cctx, cfg)
if err != nil {
return nil, fmt.Errorf("parser data from flag: %w", err)
}

err = config.SaveConfig(cfg)
if err != nil {
return nil, fmt.Errorf("save config to %s: %w", cfgPath, err)
}
} else if err == nil {
//loadConfig
err = config.LoadConfig(cfgPath, cfg)
if err != nil {
return nil, err
}

err = flagData(cctx, cfg)
if err != nil {
return nil, fmt.Errorf("parser data from flag: %w", err)
}
} else {
return nil, err
}

return cfg, cmd.FetchAndLoadBundles(cctx.Context, cfg.Node)
}

func runDaemon(cctx *cli.Context) error {
utils.SetupLogLevels()
cfg, err := prepare(cctx, config.SignerTypeGateway)

cfg, err := prepare(cctx)
if err != nil {
return fmt.Errorf("prepare pool run failed:%w", err)
return fmt.Errorf("prepare run failed: %w", err)
}

// Configuration sanity check
Expand Down Expand Up @@ -98,7 +192,7 @@ func poolDaemon(cctx *cli.Context) error {
minermgr.MinerMgrOpts(),

// clients
clients.ClientsOpts(true, "pool", &cfg.Messager, &cfg.Signer),
clients.ClientsOpts(true, &cfg.Messager, &cfg.Signer),
models.DBOptions(true, &cfg.Mysql),
network.NetworkOpts(true, cfg.SimultaneousTransfersForRetrieval, cfg.SimultaneousTransfersForStoragePerClient, cfg.SimultaneousTransfersForStorage),
piecestorage.PieceStorageOpts(&cfg.PieceStorage),
Expand Down
Loading

0 comments on commit fcd7e32

Please sign in to comment.