Add max-storage flags to storage attach commands

This commit is contained in:
Łukasz Magiera 2021-03-08 20:57:42 +01:00
parent 1c4c9f262a
commit 7c7b107e97
2 changed files with 36 additions and 8 deletions

View File

@ -6,6 +6,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/docker/go-units"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/mitchellh/go-homedir" "github.com/mitchellh/go-homedir"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
@ -46,6 +47,10 @@ var storageAttachCmd = &cli.Command{
Name: "store", Name: "store",
Usage: "(for init) use path for long-term storage", Usage: "(for init) use path for long-term storage",
}, },
&cli.StringFlag{
Name: "max-storage",
Usage: "(for init) limit storage space for sectors (expensive for very large paths!)",
},
}, },
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
nodeApi, closer, err := lcli.GetWorkerAPI(cctx) nodeApi, closer, err := lcli.GetWorkerAPI(cctx)
@ -79,11 +84,20 @@ var storageAttachCmd = &cli.Command{
return err return err
} }
var maxStor int64
if cctx.IsSet("max-storage") {
maxStor, err = units.RAMInBytes(cctx.String("max-storage"))
if err != nil {
return xerrors.Errorf("parsing max-storage: %w", err)
}
}
cfg := &stores.LocalStorageMeta{ cfg := &stores.LocalStorageMeta{
ID: stores.ID(uuid.New().String()), ID: stores.ID(uuid.New().String()),
Weight: cctx.Uint64("weight"), Weight: cctx.Uint64("weight"),
CanSeal: cctx.Bool("seal"), CanSeal: cctx.Bool("seal"),
CanStore: cctx.Bool("store"), CanStore: cctx.Bool("store"),
MaxStorage: uint64(maxStor),
} }
if !(cfg.CanStore || cfg.CanSeal) { if !(cfg.CanStore || cfg.CanSeal) {

View File

@ -12,6 +12,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/docker/go-units"
"github.com/fatih/color" "github.com/fatih/color"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/mitchellh/go-homedir" "github.com/mitchellh/go-homedir"
@ -88,6 +89,10 @@ over time
Name: "store", Name: "store",
Usage: "(for init) use path for long-term storage", Usage: "(for init) use path for long-term storage",
}, },
&cli.StringFlag{
Name: "max-storage",
Usage: "(for init) limit storage space for sectors (expensive for very large paths!)",
},
}, },
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx) nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
@ -121,11 +126,20 @@ over time
return err return err
} }
var maxStor int64
if cctx.IsSet("max-storage") {
maxStor, err = units.RAMInBytes(cctx.String("max-storage"))
if err != nil {
return xerrors.Errorf("parsing max-storage: %w", err)
}
}
cfg := &stores.LocalStorageMeta{ cfg := &stores.LocalStorageMeta{
ID: stores.ID(uuid.New().String()), ID: stores.ID(uuid.New().String()),
Weight: cctx.Uint64("weight"), Weight: cctx.Uint64("weight"),
CanSeal: cctx.Bool("seal"), CanSeal: cctx.Bool("seal"),
CanStore: cctx.Bool("store"), CanStore: cctx.Bool("store"),
MaxStorage: uint64(maxStor),
} }
if !(cfg.CanStore || cfg.CanSeal) { if !(cfg.CanStore || cfg.CanSeal) {