From 9c32e7665c9ed20d0a34a77f16af57081da474f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E9=A1=B5=E7=B4=A0=E4=B9=A6?= <2931107265@qq.com> Date: Thu, 17 Nov 2022 15:45:39 +0800 Subject: [PATCH] feat: add any cmds of storage-market --- api/impl/venus_market.go | 16 +-- cli/market.go | 204 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 198 insertions(+), 22 deletions(-) diff --git a/api/impl/venus_market.go b/api/impl/venus_market.go index 8e5ada63..c6d8157e 100644 --- a/api/impl/venus_market.go +++ b/api/impl/venus_market.go @@ -468,26 +468,26 @@ func (m *MarketNodeImpl) DealsSetMaxStartDelay(ctx context.Context, mAddr addres return m.SetMaxDealStartDelayFunc(mAddr, duration) } -func (m *MarketNodeImpl) MarketDataTransferPath(ctx context.Context, mAddr address.Address) (string, error) { - return m.TransferPathFunc(mAddr) +func (m *MarketNodeImpl) DealsPublishMsgPeriod(ctx context.Context, mAddr address.Address) (time.Duration, error) { + return m.PublishMsgPeriodConfigFunc(mAddr) } -func (m *MarketNodeImpl) MarketDataSetTransferPath(ctx context.Context, mAddr address.Address, path string) error { +func (m *MarketNodeImpl) DealsSetPublishMsgPeriod(ctx context.Context, mAddr address.Address, duration time.Duration) error { if err := m.permissionVerify(ctx, mAddr); err != nil { return err } - return m.SetTransferPathFunc(mAddr, path) + return m.SetPublishMsgPeriodConfigFunc(mAddr, duration) } -func (m *MarketNodeImpl) DealsPublishMsgPeriod(ctx context.Context, mAddr address.Address) (time.Duration, error) { - return m.PublishMsgPeriodConfigFunc(mAddr) +func (m *MarketNodeImpl) MarketDataTransferPath(ctx context.Context, mAddr address.Address) (string, error) { + return m.TransferPathFunc(mAddr) } -func (m *MarketNodeImpl) DealsSetPublishMsgPeriod(ctx context.Context, mAddr address.Address, duration time.Duration) error { +func (m *MarketNodeImpl) MarketDataSetTransferPath(ctx context.Context, mAddr address.Address, path string) error { if err := m.permissionVerify(ctx, mAddr); err != nil { return err } - return m.SetPublishMsgPeriodConfigFunc(mAddr, duration) + return m.SetTransferPathFunc(mAddr, path) } func (m *MarketNodeImpl) MarketMaxDealsPerPublishMsg(ctx context.Context, mAddr address.Address) (uint64, error) { diff --git a/cli/market.go b/cli/market.go index f7bda407..18a60193 100644 --- a/cli/market.go +++ b/cli/market.go @@ -39,6 +39,9 @@ import ( var storageDealSelectionCmd = &cli.Command{ Name: "selection", Usage: "Configure acceptance criteria for storage deal proposals", + Flags: []cli.Flag{ + minerFlag, + }, Subcommands: []*cli.Command{ storageDealSelectionShowCmd, storageDealSelectionResetCmd, @@ -49,9 +52,6 @@ var storageDealSelectionCmd = &cli.Command{ var storageDealSelectionShowCmd = &cli.Command{ Name: "list", Usage: "List storage deal proposal selection criteria", - Flags: []cli.Flag{ - minerFlag, - }, Action: func(cctx *cli.Context) error { mAddr, err := shouldAddress(cctx.String("miner"), false, false) if err != nil { @@ -74,8 +74,20 @@ var storageDealSelectionShowCmd = &cli.Command{ return err } + verifiedOk, err := smapi.DealsConsiderVerifiedStorageDeals(DaemonContext(cctx), mAddr) + if err != nil { + return err + } + + unverifiedOk, err := smapi.DealsConsiderUnverifiedStorageDeals(DaemonContext(cctx), mAddr) + if err != nil { + return err + } + fmt.Printf("considering online storage deals: %t\n", onlineOk) fmt.Printf("considering offline storage deals: %t\n", offlineOk) + fmt.Printf("considering verified storage deals: %t\n", verifiedOk) + fmt.Printf("considering unverified storage deals: %t\n", unverifiedOk) return nil }, @@ -84,9 +96,6 @@ var storageDealSelectionShowCmd = &cli.Command{ var storageDealSelectionResetCmd = &cli.Command{ Name: "reset", Usage: "Reset storage deal proposal selection criteria to default values", - Flags: []cli.Flag{ - minerFlag, - }, Action: func(cctx *cli.Context) error { mAddr, err := shouldAddress(cctx.String("miner"), false, false) if err != nil { @@ -139,7 +148,6 @@ var storageDealSelectionRejectCmd = &cli.Command{ &cli.BoolFlag{ Name: "unverified", }, - minerFlag, }, Action: func(cctx *cli.Context) error { mAddr, err := shouldAddress(cctx.String("miner"), false, false) @@ -356,7 +364,9 @@ var StorageDealsCmd = &cli.Command{ setBlocklistCmd, getBlocklistCmd, resetBlocklistCmd, - setSealDurationCmd, + expectedSealDurationCmd, + maxDealStartDelayCmd, + dealsPublishMsgPeriodCmd, dealsPendingPublish, }, } @@ -787,9 +797,110 @@ var resetBlocklistCmd = &cli.Command{ }, } -var setSealDurationCmd = &cli.Command{ +var expectedSealDurationCmd = &cli.Command{ + Name: "seal-duration", + Usage: "Configure the expected time, that you expect sealing sectors to take. Deals that start before this duration will be rejected.", + Flags: []cli.Flag{ + minerFlag, + }, + Subcommands: []*cli.Command{ + expectedSealDurationGetCmd, + expectedSealDurationSetCmd, + }, +} + +var expectedSealDurationGetCmd = &cli.Command{ + Name: "get", + Action: func(cctx *cli.Context) error { + mAddr, err := shouldAddress(cctx.String("miner"), false, false) + if err != nil { + return fmt.Errorf("invalid miner address: %w", err) + } + + marketApi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + + ctx := ReqContext(cctx) + t, err := marketApi.SectorGetExpectedSealDuration(ctx, mAddr) + if err != nil { + return err + } + fmt.Println("seal-duration: ", t.String()) + return nil + }, +} + +var expectedSealDurationSetCmd = &cli.Command{ Name: "set-seal-duration", - Usage: "Set the expected time, in minutes, that you expect sealing sectors to take. Deals that start before this duration will be rejected.", + Usage: "eg. '1m','30s',...", + ArgsUsage: "", + Action: func(cctx *cli.Context) error { + mAddr, err := shouldAddress(cctx.String("miner"), false, false) + if err != nil { + return fmt.Errorf("invalid miner address: %w", err) + } + + marketApi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + ctx := ReqContext(cctx) + if cctx.Args().Len() != 1 { + return fmt.Errorf("must pass duration") + } + + d, err := time.ParseDuration(cctx.Args().Get(0)) + if err != nil { + return fmt.Errorf("could not parse duration: %w", err) + } + + return marketApi.SectorSetExpectedSealDuration(ctx, mAddr, d) + }, +} + +var maxDealStartDelayCmd = &cli.Command{ + Name: "max-start-delay", + Usage: "Configure the maximum amount of time proposed deal StartEpoch can be in future.", + Flags: []cli.Flag{ + minerFlag, + }, + Subcommands: []*cli.Command{ + maxDealStartDelayGetCmd, + maxDealStartDelaySetCmd, + }, +} + +var maxDealStartDelayGetCmd = &cli.Command{ + Name: "get", + Action: func(cctx *cli.Context) error { + mAddr, err := shouldAddress(cctx.String("miner"), false, false) + if err != nil { + return fmt.Errorf("invalid miner address: %w", err) + } + + marketApi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + + ctx := ReqContext(cctx) + t, err := marketApi.DealsMaxStartDelay(ctx, mAddr) + if err != nil { + return err + } + fmt.Println("max start delay: ", t.String()) + return nil + }, +} + +var maxDealStartDelaySetCmd = &cli.Command{ + Name: "set", + Usage: "eg. '1m','30s',...", ArgsUsage: "", Flags: []cli.Flag{ minerFlag, @@ -807,17 +918,82 @@ var setSealDurationCmd = &cli.Command{ defer closer() ctx := ReqContext(cctx) if cctx.Args().Len() != 1 { - return fmt.Errorf("must pass duration in minutes") + return fmt.Errorf("must pass duration") } - hs, err := strconv.ParseUint(cctx.Args().Get(0), 10, 64) + delay, err := time.ParseDuration(cctx.Args().Get(0)) if err != nil { return fmt.Errorf("could not parse duration: %w", err) } - delay := hs * uint64(time.Minute) + return marketApi.DealsSetMaxStartDelay(ctx, mAddr, delay) + }, +} + +var dealsPublishMsgPeriodCmd = &cli.Command{ + Name: "max-start-delay", + Usage: "Configure the the amount of time to wait for more deals to be ready to publish before publishing them all as a batch.", + Flags: []cli.Flag{ + minerFlag, + }, + Subcommands: []*cli.Command{ + dealsPublishMsgPeriodGetCmd, + dealsPublishMsgPeriodSetCmd, + }, +} + +var dealsPublishMsgPeriodGetCmd = &cli.Command{ + Name: "get", + Action: func(cctx *cli.Context) error { + mAddr, err := shouldAddress(cctx.String("miner"), false, false) + if err != nil { + return fmt.Errorf("invalid miner address: %w", err) + } + + marketApi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + + ctx := ReqContext(cctx) + t, err := marketApi.DealsPublishMsgPeriod(ctx, mAddr) + if err != nil { + return err + } + fmt.Println("publish msg period: ", t.String()) + return nil + }, +} + +var dealsPublishMsgPeriodSetCmd = &cli.Command{ + Name: "set", + Usage: "eg. '1m','30s',...", + ArgsUsage: "", + Flags: []cli.Flag{ + minerFlag, + }, + Action: func(cctx *cli.Context) error { + mAddr, err := shouldAddress(cctx.String("miner"), false, false) + if err != nil { + return fmt.Errorf("invalid miner address: %w", err) + } + + marketApi, closer, err := NewMarketNode(cctx) + if err != nil { + return err + } + defer closer() + ctx := ReqContext(cctx) + if cctx.Args().Len() != 1 { + return fmt.Errorf("must pass duration") + } - return marketApi.SectorSetExpectedSealDuration(ctx, mAddr, time.Duration(delay)) + period, err := time.ParseDuration(cctx.Args().Get(0)) + if err != nil { + return fmt.Errorf("could not parse duration: %w", err) + } + return marketApi.DealsSetPublishMsgPeriod(ctx, mAddr, period) }, }