forked from TrueCloudLab/frostfs-node
[#1402] cli: Support storage group expiration
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
cfca88fc5c
commit
12d41918e6
2 changed files with 20 additions and 0 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"errors"
|
"errors"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
internalclient "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/client"
|
internalclient "github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/client"
|
||||||
"github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/common"
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/common"
|
||||||
|
@ -42,6 +43,9 @@ func initSGPutCmd() {
|
||||||
|
|
||||||
flags.StringSliceVarP(&sgMembers, sgMembersFlag, "m", nil, "ID list of storage group members")
|
flags.StringSliceVarP(&sgMembers, sgMembersFlag, "m", nil, "ID list of storage group members")
|
||||||
_ = sgPutCmd.MarkFlagRequired(sgMembersFlag)
|
_ = sgPutCmd.MarkFlagRequired(sgMembersFlag)
|
||||||
|
|
||||||
|
flags.Uint64(sgLifetimeFlag, 0, "Storage group lifetime in epochs")
|
||||||
|
_ = sgPutCmd.MarkFlagRequired(sgLifetimeFlag)
|
||||||
}
|
}
|
||||||
|
|
||||||
func putSG(cmd *cobra.Command, _ []string) {
|
func putSG(cmd *cobra.Command, _ []string) {
|
||||||
|
@ -53,6 +57,10 @@ func putSG(cmd *cobra.Command, _ []string) {
|
||||||
var cnr cid.ID
|
var cnr cid.ID
|
||||||
readCID(cmd, &cnr)
|
readCID(cmd, &cnr)
|
||||||
|
|
||||||
|
lifetimeStr := cmd.Flag(sgLifetimeFlag).Value.String()
|
||||||
|
lifetime, err := strconv.ParseUint(lifetimeStr, 10, 64)
|
||||||
|
common.ExitOnErr(cmd, "could not parse lifetime: %w", err)
|
||||||
|
|
||||||
members := make([]oidSDK.ID, len(sgMembers))
|
members := make([]oidSDK.ID, len(sgMembers))
|
||||||
|
|
||||||
for i := range sgMembers {
|
for i := range sgMembers {
|
||||||
|
@ -78,6 +86,16 @@ func putSG(cmd *cobra.Command, _ []string) {
|
||||||
}, cnr, members)
|
}, cnr, members)
|
||||||
common.ExitOnErr(cmd, "could not collect storage group members: %w", err)
|
common.ExitOnErr(cmd, "could not collect storage group members: %w", err)
|
||||||
|
|
||||||
|
cli := internalclient.GetSDKClientByFlag(cmd, pk, commonflags.RPC)
|
||||||
|
|
||||||
|
var netInfoPrm internalclient.NetworkInfoPrm
|
||||||
|
netInfoPrm.SetClient(cli)
|
||||||
|
|
||||||
|
ni, err := internalclient.NetworkInfo(netInfoPrm)
|
||||||
|
common.ExitOnErr(cmd, "can't fetch network info: %w", err)
|
||||||
|
|
||||||
|
sg.SetExpirationEpoch(ni.NetworkInfo().CurrentEpoch() + lifetime)
|
||||||
|
|
||||||
obj := object.New()
|
obj := object.New()
|
||||||
obj.SetContainerID(cnr)
|
obj.SetContainerID(cnr)
|
||||||
obj.SetOwnerID(&ownerID)
|
obj.SetOwnerID(&ownerID)
|
||||||
|
|
|
@ -25,6 +25,8 @@ const (
|
||||||
cidFlag = "cid"
|
cidFlag = "cid"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const sgLifetimeFlag = "lifetime"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
storageGroupChildCommands := []*cobra.Command{
|
storageGroupChildCommands := []*cobra.Command{
|
||||||
sgPutCmd,
|
sgPutCmd,
|
||||||
|
|
Loading…
Reference in a new issue