Skip to content

Commit

Permalink
Merge pull request ipfs-force-community#21 from dtynn/dtynn/feat/seal…
Browse files Browse the repository at this point in the history
…er_integration

Dtynn/feat/sealer integration
  • Loading branch information
dtynn authored Aug 9, 2021
2 parents 78d7e81 + 3af8c7a commit ce1d1fa
Show file tree
Hide file tree
Showing 42 changed files with 959 additions and 251 deletions.
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
build-all:
all: build-sealer build-worker

build-sealer:
rm -rf ./dist/bin/venus-sealer
mkdir -p ./dist/bin/
$(MAKE) -C ./venus-sealer/ build-all
mv ./venus-sealer/venus-sealer ./dist/bin/

build-worker:
cargo build --release --manifest-path=./venus-worker/Cargo.toml

claen:
$(MAKE) -C ./venus-sealer/ clean

Expand Down
32 changes: 9 additions & 23 deletions venus-sealer/cmd/venus-sealer/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,19 @@ import (
"context"
"fmt"

"github.com/dtynn/dix"
"github.com/urfave/cli/v2"

"github.com/dtynn/dix"
"github.com/dtynn/venus-cluster/venus-sealer/cmd/venus-sealer/internal"
"github.com/dtynn/venus-cluster/venus-sealer/dep"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/confmgr"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/homedir"
"github.com/dtynn/venus-cluster/venus-sealer/sealer"
"github.com/dtynn/venus-cluster/venus-sealer/sealer/api"
)

var daemonCmd = &cli.Command{
Name: "daemon",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "home",
Value: "~/.venus-sealer",
},
},
Name: "daemon",
Flags: []cli.Flag{},
Subcommands: []*cli.Command{
daemonInitCmd,
daemonRunCmd,
Expand All @@ -31,13 +26,9 @@ var daemonCmd = &cli.Command{
var daemonInitCmd = &cli.Command{
Name: "init",
Action: func(cctx *cli.Context) error {
home, err := homedir.Open(cctx.String("home"))
home, err := internal.HomeFromCLICtx(cctx)
if err != nil {
return fmt.Errorf("open home: %w", err)
}

if err := home.Init(); err != nil {
return fmt.Errorf("init home: %w", err)
return err
}

cfgmgr, err := confmgr.NewLocal(home.Dir())
Expand All @@ -64,19 +55,14 @@ var daemonRunCmd = &cli.Command{
},
},
Action: func(cctx *cli.Context) error {
home, err := homedir.Open(cctx.String("home"))
if err != nil {
return fmt.Errorf("open home: %s", err)
}

gctx, gcancel := newSigContext(context.Background())
gctx, gcancel := internal.NewSigContext(context.Background())
defer gcancel()

var node api.SealerAPI
stopper, err := dix.New(
cctx.Context,
gctx,
internal.DepsFromCLICtx(cctx),
dix.Override(new(dep.GlobalContext), gctx),
dix.Override(new(*homedir.Home), home),
dep.Product(),
dep.Sealer(&node),
)
Expand Down
112 changes: 112 additions & 0 deletions venus-sealer/cmd/venus-sealer/internal/global.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package internal

import (
"context"
"fmt"
"os/signal"
"strconv"
"syscall"

"github.com/dtynn/dix"
"github.com/filecoin-project/go-address"
"github.com/urfave/cli/v2"

"github.com/dtynn/venus-cluster/venus-sealer/dep"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/chain"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/homedir"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/logging"
"github.com/dtynn/venus-cluster/venus-sealer/pkg/messager"
)

var Log = logging.New("sealer")

var HomeFlag = &cli.StringFlag{
Name: "home",
Value: "~/.venus-sealer",
}

var NetFlag = &cli.StringFlag{
Name: "net",
Value: "mainnet",
}

type stopper = func()

func NewSigContext(parent context.Context) (context.Context, context.CancelFunc) {
return signal.NotifyContext(parent, syscall.SIGABRT, syscall.SIGTERM, syscall.SIGINT)
}

func DepsFromCLICtx(cctx *cli.Context) dix.Option {
return dix.Options(
dix.Override(new(*cli.Context), cctx),
dix.Override(new(*homedir.Home), HomeFromCLICtx),
)
}

func HomeFromCLICtx(cctx *cli.Context) (*homedir.Home, error) {
home, err := homedir.Open(cctx.String(HomeFlag.Name))
if err != nil {
return nil, fmt.Errorf("open home: %w", err)
}

if err := home.Init(); err != nil {
return nil, fmt.Errorf("init home: %w", err)
}

return home, nil
}

type API struct {
Chain chain.API
Messager messager.API
}

func extractAPI(cctx *cli.Context) (*API, context.Context, stopper, error) {
logging.SetupForSub("sealer")

gctx, gcancel := NewSigContext(cctx.Context)

var capi chain.API
var mapi messager.API

stopper, err := dix.New(
gctx,
DepsFromCLICtx(cctx),
dix.Override(new(dep.GlobalContext), gctx),
dep.API(&capi, &mapi),
)

if err != nil {
gcancel()
return nil, nil, nil, fmt.Errorf("construct sealer api: %w", err)
}

return &API{
Chain: capi,
Messager: mapi,
}, gctx, func() {
stopper(cctx.Context)
gcancel()
}, nil
}

func RPCCallError(method string, err error) error {
return fmt.Errorf("rpc %s: %w", method, err)
}

var ErrEmptyAddressString = fmt.Errorf("empty address string")

func ShouldAddress(s string, checkEmpty bool, allowActor bool) (address.Address, error) {
if checkEmpty && s == "" {
return address.Undef, ErrEmptyAddressString
}

if allowActor {
id, err := strconv.ParseUint(s, 10, 64)
if err == nil {
return address.NewIDAddress(id)
}
}

return address.NewFromString(s)
}
51 changes: 51 additions & 0 deletions venus-sealer/cmd/venus-sealer/internal/run.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package internal

import (
"errors"
"fmt"
"os"

"github.com/urfave/cli/v2"
)

type PrintHelpErr struct {
Ctx *cli.Context
Err error
}

func (e *PrintHelpErr) Error() string {
return e.Err.Error()
}

func (e *PrintHelpErr) Unwrap() error {
return e.Err
}

func (e *PrintHelpErr) Is(o error) bool {
_, ok := o.(*PrintHelpErr)
return ok
}

func ShowHelp(cctx *cli.Context, err error) error {
return &PrintHelpErr{
Ctx: cctx,
Err: err,
}
}

func ShowHelpf(cctx *cli.Context, format string, args ...interface{}) error {
return ShowHelp(cctx, fmt.Errorf(format, args...))
}

func RunApp(app *cli.App) {
if err := app.Run(os.Args); err != nil {
var phe *PrintHelpErr
if errors.As(err, &phe) {
_ = cli.ShowCommandHelp(phe.Ctx, phe.Ctx.Command.Name)
fmt.Fprintf(os.Stderr, "ERROR: %+v\n", err)
} else {
Log.Errorf("%+v", err)
}
os.Exit(1)
}
}
11 changes: 11 additions & 0 deletions venus-sealer/cmd/venus-sealer/internal/util.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package internal

import "github.com/urfave/cli/v2"

var UtilCmd = &cli.Command{
Name: "util",
Subcommands: []*cli.Command{
utilChainCmd,
utilMinerCmd,
},
}
33 changes: 33 additions & 0 deletions venus-sealer/cmd/venus-sealer/internal/util_chain.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package internal

import (
"github.com/urfave/cli/v2"
)

var utilChainCmd = &cli.Command{
Name: "chain",
Subcommands: []*cli.Command{
utilChainHeadCmd,
},
}

var utilChainHeadCmd = &cli.Command{
Name: "head",
Action: func(cctx *cli.Context) error {
api, gctx, stop, err := extractAPI(cctx)
if err != nil {
return err
}

defer stop()

head, err := api.Chain.ChainHead(gctx)
if err != nil {
return err
}

Log.Infof("ts: %s", head.Key())

return nil
},
}
Loading

0 comments on commit ce1d1fa

Please sign in to comment.