forked from TrueCloudLab/frostfs-node
[#393] cli: Add dedicated flag to indicate object expiration
Add `--expires-on` flag to `put` sub-command of `object` command that indicates object's expiration epoch. Set corresponding object attributes if flag value is set. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
cb9e6ea6fa
commit
2bb48642ee
1 changed files with 27 additions and 0 deletions
|
@ -19,6 +19,7 @@ import (
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
"github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/token"
|
"github.com/nspcc-dev/neofs-api-go/pkg/token"
|
||||||
|
objectV2 "github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -108,6 +109,10 @@ const (
|
||||||
rawFlagDesc = "Set raw request option"
|
rawFlagDesc = "Set raw request option"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const putExpiresOnFlag = "expires-on"
|
||||||
|
|
||||||
|
var putExpiredOn uint64
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.AddCommand(objectCmd)
|
rootCmd.AddCommand(objectCmd)
|
||||||
objectCmd.PersistentFlags().String("bearer", "", "File with signed JSON or binary encoded bearer token")
|
objectCmd.PersistentFlags().String("bearer", "", "File with signed JSON or binary encoded bearer token")
|
||||||
|
@ -121,6 +126,8 @@ func init() {
|
||||||
objectPutCmd.Flags().String("attributes", "", "User attributes in form of Key1=Value1,Key2=Value2")
|
objectPutCmd.Flags().String("attributes", "", "User attributes in form of Key1=Value1,Key2=Value2")
|
||||||
objectPutCmd.Flags().Bool("disable-filename", false, "Do not set well-known filename attribute")
|
objectPutCmd.Flags().Bool("disable-filename", false, "Do not set well-known filename attribute")
|
||||||
objectPutCmd.Flags().Bool("disable-timestamp", false, "Do not set well-known timestamp attribute")
|
objectPutCmd.Flags().Bool("disable-timestamp", false, "Do not set well-known timestamp attribute")
|
||||||
|
objectPutCmd.Flags().Uint64VarP(&putExpiredOn, putExpiresOnFlag, "e", 0,
|
||||||
|
"Last epoch in the life of the object")
|
||||||
|
|
||||||
objectCmd.AddCommand(objectDelCmd)
|
objectCmd.AddCommand(objectDelCmd)
|
||||||
objectDelCmd.Flags().String("cid", "", "Container ID")
|
objectDelCmd.Flags().String("cid", "", "Container ID")
|
||||||
|
@ -219,6 +226,26 @@ func putObject(cmd *cobra.Command, _ []string) error {
|
||||||
return fmt.Errorf("can't parse object attributes: %w", err)
|
return fmt.Errorf("can't parse object attributes: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
expiresOn, _ := cmd.Flags().GetUint64(putExpiresOnFlag)
|
||||||
|
if expiresOn > 0 {
|
||||||
|
var expAttr *object.Attribute
|
||||||
|
|
||||||
|
for _, a := range attrs {
|
||||||
|
if a.Key() == objectV2.SysAttributeExpEpoch {
|
||||||
|
expAttr = a
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if expAttr == nil {
|
||||||
|
expAttr = object.NewAttribute()
|
||||||
|
expAttr.SetKey(objectV2.SysAttributeExpEpoch)
|
||||||
|
attrs = append(attrs, expAttr)
|
||||||
|
}
|
||||||
|
|
||||||
|
expAttr.SetValue(strconv.FormatUint(expiresOn, 10))
|
||||||
|
}
|
||||||
|
|
||||||
obj := object.NewRaw()
|
obj := object.NewRaw()
|
||||||
obj.SetContainerID(cid)
|
obj.SetContainerID(cid)
|
||||||
obj.SetOwnerID(ownerID)
|
obj.SetOwnerID(ownerID)
|
||||||
|
|
Loading…
Reference in a new issue