forked from TrueCloudLab/frostfs-node
[#1377] oid, cid: Upgrade SDK package
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
f65898a354
commit
f15e6e888f
118 changed files with 1455 additions and 886 deletions
|
@ -171,7 +171,7 @@ func restoreContainers(cmd *cobra.Command, _ []string) error {
|
|||
return fmt.Errorf("%w: %v", errInvalidContainerResponse, err)
|
||||
}
|
||||
if len(old.Value) != 0 {
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
id.SetSHA256(hv)
|
||||
cmd.Printf("Container %s is already deployed.\n", id)
|
||||
continue
|
||||
|
@ -314,7 +314,7 @@ func getCIDFilterFunc(cmd *cobra.Command) (func([]byte) bool, error) {
|
|||
}
|
||||
|
||||
for i := range rawIDs {
|
||||
err := cid.New().Parse(rawIDs[i])
|
||||
err := new(cid.ID).DecodeString(rawIDs[i])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("can't parse CID %s: %w", rawIDs[i], err)
|
||||
}
|
||||
|
@ -324,9 +324,9 @@ func getCIDFilterFunc(cmd *cobra.Command) (func([]byte) bool, error) {
|
|||
var v [32]byte
|
||||
copy(v[:], rawID)
|
||||
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
id.SetSHA256(v)
|
||||
idStr := id.String()
|
||||
idStr := id.EncodeToString()
|
||||
n := sort.Search(len(rawIDs), func(i int) bool { return rawIDs[i] >= idStr })
|
||||
return n < len(rawIDs) && rawIDs[n] == idStr
|
||||
}, nil
|
||||
|
|
|
@ -420,12 +420,13 @@ func (x DeleteObjectRes) TombstoneAddress() *addressSDK.Address {
|
|||
func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
|
||||
var delPrm client.PrmObjectDelete
|
||||
|
||||
if id := prm.objAddr.ContainerID(); id != nil {
|
||||
delPrm.FromContainer(*id)
|
||||
cnr, ok := prm.objAddr.ContainerID()
|
||||
if ok {
|
||||
delPrm.FromContainer(cnr)
|
||||
}
|
||||
|
||||
if id := prm.objAddr.ObjectID(); id != nil {
|
||||
delPrm.ByID(*id)
|
||||
if id, ok := prm.objAddr.ObjectID(); ok {
|
||||
delPrm.ByID(id)
|
||||
}
|
||||
|
||||
if prm.sessionToken != nil {
|
||||
|
@ -450,8 +451,8 @@ func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
|
|||
}
|
||||
|
||||
var addr addressSDK.Address
|
||||
addr.SetObjectID(&id)
|
||||
addr.SetContainerID(prm.objAddr.ContainerID())
|
||||
addr.SetObjectID(id)
|
||||
addr.SetContainerID(cnr)
|
||||
|
||||
return &DeleteObjectRes{
|
||||
addrTombstone: &addr,
|
||||
|
@ -492,12 +493,12 @@ func (x GetObjectRes) Header() *object.Object {
|
|||
func GetObject(prm GetObjectPrm) (*GetObjectRes, error) {
|
||||
var getPrm client.PrmObjectGet
|
||||
|
||||
if id := prm.objAddr.ContainerID(); id != nil {
|
||||
getPrm.FromContainer(*id)
|
||||
if id, ok := prm.objAddr.ContainerID(); ok {
|
||||
getPrm.FromContainer(id)
|
||||
}
|
||||
|
||||
if id := prm.objAddr.ObjectID(); id != nil {
|
||||
getPrm.ByID(*id)
|
||||
if id, ok := prm.objAddr.ObjectID(); ok {
|
||||
getPrm.ByID(id)
|
||||
}
|
||||
|
||||
if prm.sessionToken != nil {
|
||||
|
@ -574,12 +575,12 @@ func (x HeadObjectRes) Header() *object.Object {
|
|||
func HeadObject(prm HeadObjectPrm) (*HeadObjectRes, error) {
|
||||
var cliPrm client.PrmObjectHead
|
||||
|
||||
if id := prm.objAddr.ContainerID(); id != nil {
|
||||
cliPrm.FromContainer(*id)
|
||||
if id, ok := prm.objAddr.ContainerID(); ok {
|
||||
cliPrm.FromContainer(id)
|
||||
}
|
||||
|
||||
if id := prm.objAddr.ObjectID(); id != nil {
|
||||
cliPrm.ByID(*id)
|
||||
if id, ok := prm.objAddr.ObjectID(); ok {
|
||||
cliPrm.ByID(id)
|
||||
}
|
||||
|
||||
if prm.sessionToken != nil {
|
||||
|
@ -739,12 +740,12 @@ func (x HashPayloadRangesRes) HashList() [][]byte {
|
|||
func HashPayloadRanges(prm HashPayloadRangesPrm) (*HashPayloadRangesRes, error) {
|
||||
var cliPrm client.PrmObjectHash
|
||||
|
||||
if id := prm.objAddr.ContainerID(); id != nil {
|
||||
cliPrm.FromContainer(*id)
|
||||
if id, ok := prm.objAddr.ContainerID(); ok {
|
||||
cliPrm.FromContainer(id)
|
||||
}
|
||||
|
||||
if id := prm.objAddr.ObjectID(); id != nil {
|
||||
cliPrm.ByID(*id)
|
||||
if id, ok := prm.objAddr.ObjectID(); ok {
|
||||
cliPrm.ByID(id)
|
||||
}
|
||||
|
||||
if prm.local {
|
||||
|
@ -813,12 +814,12 @@ type PayloadRangeRes struct{}
|
|||
func PayloadRange(prm PayloadRangePrm) (*PayloadRangeRes, error) {
|
||||
var cliPrm client.PrmObjectRange
|
||||
|
||||
if id := prm.objAddr.ContainerID(); id != nil {
|
||||
cliPrm.FromContainer(*id)
|
||||
if id, ok := prm.objAddr.ContainerID(); ok {
|
||||
cliPrm.FromContainer(id)
|
||||
}
|
||||
|
||||
if id := prm.objAddr.ObjectID(); id != nil {
|
||||
cliPrm.ByID(*id)
|
||||
if id, ok := prm.objAddr.ObjectID(); ok {
|
||||
cliPrm.ByID(id)
|
||||
}
|
||||
|
||||
if prm.sessionToken != nil {
|
||||
|
|
|
@ -65,10 +65,10 @@ func createEACL(cmd *cobra.Command, _ []string) {
|
|||
outArg, _ := cmd.Flags().GetString("out")
|
||||
cidArg, _ := cmd.Flags().GetString("cid")
|
||||
|
||||
var containerID *cid.ID
|
||||
var containerID cid.ID
|
||||
if cidArg != "" {
|
||||
containerID = cid.New()
|
||||
if err := containerID.Parse(cidArg); err != nil {
|
||||
var containerID cid.ID
|
||||
if err := containerID.DecodeString(cidArg); err != nil {
|
||||
cmd.PrintErrf("invalid container ID: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@ var listContainerObjectsCmd = &cobra.Command{
|
|||
var prm internalclient.SearchObjectsPrm
|
||||
|
||||
sessionObjectCtxAddress := addressSDK.NewAddress()
|
||||
sessionObjectCtxAddress.SetContainerID(id)
|
||||
sessionObjectCtxAddress.SetContainerID(*id)
|
||||
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
|
||||
prepareObjectPrm(cmd, &prm)
|
||||
prm.SetContainerID(id)
|
||||
|
@ -413,7 +413,7 @@ Container ID in EACL table will be substituted with ID from the CLI.`,
|
|||
tok, err := getSessionToken(sessionTokenPath)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
eaclTable.SetCID(id)
|
||||
eaclTable.SetCID(*id)
|
||||
eaclTable.SetSessionToken(tok)
|
||||
|
||||
var (
|
||||
|
@ -712,14 +712,14 @@ func parseContainerID(idStr string) (*cid.ID, error) {
|
|||
return nil, errors.New("container ID is not set")
|
||||
}
|
||||
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
|
||||
err := id.Parse(idStr)
|
||||
err := id.DecodeString(idStr)
|
||||
if err != nil {
|
||||
return nil, errors.New("can't decode container ID value")
|
||||
}
|
||||
|
||||
return id, nil
|
||||
return &id, nil
|
||||
}
|
||||
|
||||
func prettyPrintContainer(cmd *cobra.Command, cnr *container.Container, jsonEncoding bool) {
|
||||
|
|
|
@ -20,7 +20,7 @@ var cmdObjectLock = &cobra.Command{
|
|||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var cnr cid.ID
|
||||
|
||||
err := cnr.Parse(args[0])
|
||||
err := cnr.DecodeString(args[0])
|
||||
exitOnErr(cmd, errf("Incorrect container arg: %v", err))
|
||||
|
||||
argsList := args[1:]
|
||||
|
@ -28,7 +28,7 @@ var cmdObjectLock = &cobra.Command{
|
|||
lockList := make([]oid.ID, len(argsList))
|
||||
|
||||
for i := range argsList {
|
||||
err = lockList[i].Parse(argsList[i])
|
||||
err = lockList[i].DecodeString(argsList[i])
|
||||
exitOnErr(cmd, errf(fmt.Sprintf("Incorrect object arg #%d: %%v", i+1), err))
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ var cmdObjectLock = &cobra.Command{
|
|||
lock.WriteMembers(lockList)
|
||||
|
||||
obj := object.New()
|
||||
obj.SetContainerID(&cnr)
|
||||
obj.SetContainerID(cnr)
|
||||
obj.SetOwnerID(idOwner)
|
||||
obj.SetType(object.TypeLock)
|
||||
obj.SetPayload(lock.Marshal())
|
||||
|
|
|
@ -423,7 +423,7 @@ func putObject(cmd *cobra.Command, _ []string) {
|
|||
|
||||
ownerID, err := getOwnerID(key)
|
||||
exitOnErr(cmd, err)
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
filename := cmd.Flag("file").Value.String()
|
||||
|
@ -457,7 +457,7 @@ func putObject(cmd *cobra.Command, _ []string) {
|
|||
}
|
||||
|
||||
obj := object.New()
|
||||
obj.SetContainerID(cid)
|
||||
obj.SetContainerID(*cnr)
|
||||
obj.SetOwnerID(ownerID)
|
||||
obj.SetAttributes(attrs...)
|
||||
|
||||
|
@ -471,7 +471,7 @@ func putObject(cmd *cobra.Command, _ []string) {
|
|||
var prm internalclient.PutObjectPrm
|
||||
|
||||
sessionObjectCtxAddress := addressSDK.NewAddress()
|
||||
sessionObjectCtxAddress.SetContainerID(cid)
|
||||
sessionObjectCtxAddress.SetContainerID(*cnr)
|
||||
prepareSessionPrmWithOwner(cmd, sessionObjectCtxAddress, key, ownerID, &prm)
|
||||
prepareObjectPrm(cmd, &prm)
|
||||
prm.SetHeader(obj)
|
||||
|
@ -501,7 +501,7 @@ func putObject(cmd *cobra.Command, _ []string) {
|
|||
p.Finish()
|
||||
}
|
||||
cmd.Printf("[%s] Object successfully stored\n", filename)
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cid)
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cnr)
|
||||
}
|
||||
|
||||
func deleteObject(cmd *cobra.Command, _ []string) {
|
||||
|
@ -520,7 +520,25 @@ func deleteObject(cmd *cobra.Command, _ []string) {
|
|||
tombstoneAddr := res.TombstoneAddress()
|
||||
|
||||
cmd.Println("Object removed successfully.")
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", tombstoneAddr.ObjectID(), tombstoneAddr.ContainerID())
|
||||
|
||||
const strEmpty = "<empty>"
|
||||
var strID, strCnr string
|
||||
|
||||
id, ok := tombstoneAddr.ObjectID()
|
||||
if ok {
|
||||
strID = id.String()
|
||||
} else {
|
||||
strID = strEmpty
|
||||
}
|
||||
|
||||
cnr, ok := tombstoneAddr.ContainerID()
|
||||
if ok {
|
||||
strCnr = cnr.String()
|
||||
} else {
|
||||
strCnr = strEmpty
|
||||
}
|
||||
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", strID, strCnr)
|
||||
}
|
||||
|
||||
func getObject(cmd *cobra.Command, _ []string) {
|
||||
|
@ -616,7 +634,7 @@ func getObjectHeader(cmd *cobra.Command, _ []string) {
|
|||
}
|
||||
|
||||
func searchObject(cmd *cobra.Command, _ []string) {
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
sf, err := parseSearchFilters(cmd)
|
||||
|
@ -625,10 +643,10 @@ func searchObject(cmd *cobra.Command, _ []string) {
|
|||
var prm internalclient.SearchObjectsPrm
|
||||
|
||||
sessionObjectCtxAddress := addressSDK.NewAddress()
|
||||
sessionObjectCtxAddress.SetContainerID(cid)
|
||||
sessionObjectCtxAddress.SetContainerID(*cnr)
|
||||
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
|
||||
prepareObjectPrm(cmd, &prm)
|
||||
prm.SetContainerID(cid)
|
||||
prm.SetContainerID(cnr)
|
||||
prm.SetFilters(sf)
|
||||
|
||||
res, err := internalclient.SearchObjects(prm)
|
||||
|
@ -783,8 +801,8 @@ func parseSearchFilters(cmd *cobra.Command) (object.SearchFilters, error) {
|
|||
|
||||
oid, _ := cmd.Flags().GetString(searchOIDFlag)
|
||||
if oid != "" {
|
||||
id := oidSDK.NewID()
|
||||
if err := id.Parse(oid); err != nil {
|
||||
var id oidSDK.ID
|
||||
if err := id.DecodeString(oid); err != nil {
|
||||
return nil, fmt.Errorf("could not parse object ID: %w", err)
|
||||
}
|
||||
|
||||
|
@ -869,29 +887,29 @@ func parseObjectNotifications(cmd *cobra.Command) (*object.NotificationInfo, err
|
|||
}
|
||||
|
||||
func getCID(cmd *cobra.Command) (*cid.ID, error) {
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
|
||||
err := id.Parse(cmd.Flag("cid").Value.String())
|
||||
err := id.DecodeString(cmd.Flag("cid").Value.String())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse container ID: %w", err)
|
||||
}
|
||||
|
||||
return id, nil
|
||||
return &id, nil
|
||||
}
|
||||
|
||||
func getOID(cmd *cobra.Command) (*oidSDK.ID, error) {
|
||||
oid := oidSDK.NewID()
|
||||
var oid oidSDK.ID
|
||||
|
||||
err := oid.Parse(cmd.Flag("oid").Value.String())
|
||||
err := oid.DecodeString(cmd.Flag("oid").Value.String())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse object ID: %w", err)
|
||||
}
|
||||
|
||||
return oid, nil
|
||||
return &oid, nil
|
||||
}
|
||||
|
||||
func getObjectAddress(cmd *cobra.Command) (*addressSDK.Address, error) {
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -901,8 +919,8 @@ func getObjectAddress(cmd *cobra.Command) (*addressSDK.Address, error) {
|
|||
}
|
||||
|
||||
objAddr := addressSDK.NewAddress()
|
||||
objAddr.SetContainerID(cid)
|
||||
objAddr.SetObjectID(oid)
|
||||
objAddr.SetContainerID(*cnr)
|
||||
objAddr.SetObjectID(*oid)
|
||||
return objAddr, nil
|
||||
}
|
||||
|
||||
|
@ -977,9 +995,35 @@ func printChecksum(cmd *cobra.Command, name string, recv func() (checksum.Checks
|
|||
cmd.Printf("%s: %s\n", name, strVal)
|
||||
}
|
||||
|
||||
func printObjectID(cmd *cobra.Command, recv func() (oidSDK.ID, bool)) {
|
||||
var strID string
|
||||
|
||||
id, ok := recv()
|
||||
if ok {
|
||||
strID = id.String()
|
||||
} else {
|
||||
strID = "<empty>"
|
||||
}
|
||||
|
||||
cmd.Printf("ID: %s\n", strID)
|
||||
}
|
||||
|
||||
func printContainerID(cmd *cobra.Command, recv func() (cid.ID, bool)) {
|
||||
var strID string
|
||||
|
||||
id, ok := recv()
|
||||
if ok {
|
||||
strID = id.String()
|
||||
} else {
|
||||
strID = "<empty>"
|
||||
}
|
||||
|
||||
cmd.Printf("CID: %s\n", strID)
|
||||
}
|
||||
|
||||
func printHeader(cmd *cobra.Command, obj *object.Object) error {
|
||||
cmd.Printf("ID: %s\n", obj.ID())
|
||||
cmd.Printf("CID: %s\n", obj.ContainerID())
|
||||
printObjectID(cmd, obj.ID)
|
||||
printContainerID(cmd, obj.ContainerID)
|
||||
cmd.Printf("Owner: %s\n", obj.OwnerID())
|
||||
cmd.Printf("CreatedAt: %d\n", obj.CreationEpoch())
|
||||
cmd.Printf("Size: %d\n", obj.PayloadSize())
|
||||
|
@ -1007,11 +1051,11 @@ func printSplitHeader(cmd *cobra.Command, obj *object.Object) error {
|
|||
cmd.Printf("Split ID: %s\n", splitID)
|
||||
}
|
||||
|
||||
if oid := obj.ParentID(); oid != nil {
|
||||
if oid, ok := obj.ParentID(); ok {
|
||||
cmd.Printf("Split ParentID: %s\n", oid)
|
||||
}
|
||||
|
||||
if prev := obj.PreviousID(); prev != nil {
|
||||
if prev, ok := obj.PreviousID(); ok {
|
||||
cmd.Printf("Split PreviousID: %s\n", prev)
|
||||
}
|
||||
|
||||
|
@ -1165,10 +1209,10 @@ func marshalSplitInfo(cmd *cobra.Command, info *object.SplitInfo) ([]byte, error
|
|||
if splitID := info.SplitID(); splitID != nil {
|
||||
b.WriteString("Split ID: " + splitID.String() + "\n")
|
||||
}
|
||||
if link := info.Link(); link != nil {
|
||||
if link, ok := info.Link(); ok {
|
||||
b.WriteString("Linking object: " + link.String() + "\n")
|
||||
}
|
||||
if last := info.LastPart(); last != nil {
|
||||
if last, ok := info.LastPart(); ok {
|
||||
b.WriteString("Last object: " + last.String() + "\n")
|
||||
}
|
||||
return b.Bytes(), nil
|
||||
|
|
|
@ -167,13 +167,13 @@ func putSG(cmd *cobra.Command, _ []string) {
|
|||
ownerID, err := getOwnerID(key)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
members := make([]oidSDK.ID, len(sgMembers))
|
||||
|
||||
for i := range sgMembers {
|
||||
err = members[i].Parse(sgMembers[i])
|
||||
err = members[i].DecodeString(sgMembers[i])
|
||||
exitOnErr(cmd, errf("could not parse object ID: %w", err))
|
||||
}
|
||||
|
||||
|
@ -183,7 +183,7 @@ func putSG(cmd *cobra.Command, _ []string) {
|
|||
)
|
||||
|
||||
sessionObjectCtxAddress := addressSDK.NewAddress()
|
||||
sessionObjectCtxAddress.SetContainerID(cid)
|
||||
sessionObjectCtxAddress.SetContainerID(*cnr)
|
||||
prepareSessionPrmWithOwner(cmd, sessionObjectCtxAddress, key, ownerID, &putPrm)
|
||||
prepareObjectPrm(cmd, &headPrm, &putPrm)
|
||||
|
||||
|
@ -194,14 +194,14 @@ func putSG(cmd *cobra.Command, _ []string) {
|
|||
key: key,
|
||||
ownerID: ownerID,
|
||||
prm: headPrm,
|
||||
}, cid, members)
|
||||
}, cnr, members)
|
||||
exitOnErr(cmd, errf("could not collect storage group members: %w", err))
|
||||
|
||||
sgContent, err := sg.Marshal()
|
||||
exitOnErr(cmd, errf("could not marshal storage group: %w", err))
|
||||
|
||||
obj := object.New()
|
||||
obj.SetContainerID(cid)
|
||||
obj.SetContainerID(*cnr)
|
||||
obj.SetOwnerID(ownerID)
|
||||
obj.SetType(object.TypeStorageGroup)
|
||||
|
||||
|
@ -212,29 +212,29 @@ func putSG(cmd *cobra.Command, _ []string) {
|
|||
exitOnErr(cmd, errf("rpc error: %w", err))
|
||||
|
||||
cmd.Println("Storage group successfully stored")
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cid)
|
||||
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cnr)
|
||||
}
|
||||
|
||||
func getSGID() (*oidSDK.ID, error) {
|
||||
oid := oidSDK.NewID()
|
||||
err := oid.Parse(sgID)
|
||||
var oid oidSDK.ID
|
||||
err := oid.DecodeString(sgID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse storage group ID: %w", err)
|
||||
}
|
||||
|
||||
return oid, nil
|
||||
return &oid, nil
|
||||
}
|
||||
|
||||
func getSG(cmd *cobra.Command, _ []string) {
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
id, err := getSGID()
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
addr := addressSDK.NewAddress()
|
||||
addr.SetContainerID(cid)
|
||||
addr.SetObjectID(id)
|
||||
addr.SetContainerID(*cnr)
|
||||
addr.SetObjectID(*id)
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
|
||||
|
@ -267,16 +267,16 @@ func getSG(cmd *cobra.Command, _ []string) {
|
|||
}
|
||||
|
||||
func listSG(cmd *cobra.Command, _ []string) {
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
var prm internalclient.SearchObjectsPrm
|
||||
|
||||
sessionObjectCtxAddress := addressSDK.NewAddress()
|
||||
sessionObjectCtxAddress.SetContainerID(cid)
|
||||
sessionObjectCtxAddress.SetContainerID(*cnr)
|
||||
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
|
||||
prepareObjectPrm(cmd, &prm)
|
||||
prm.SetContainerID(cid)
|
||||
prm.SetContainerID(cnr)
|
||||
prm.SetFilters(storagegroup.SearchQuery())
|
||||
|
||||
res, err := internalclient.SearchObjects(prm)
|
||||
|
@ -292,15 +292,15 @@ func listSG(cmd *cobra.Command, _ []string) {
|
|||
}
|
||||
|
||||
func delSG(cmd *cobra.Command, _ []string) {
|
||||
cid, err := getCID(cmd)
|
||||
cnr, err := getCID(cmd)
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
id, err := getSGID()
|
||||
exitOnErr(cmd, err)
|
||||
|
||||
addr := addressSDK.NewAddress()
|
||||
addr.SetContainerID(cid)
|
||||
addr.SetObjectID(id)
|
||||
addr.SetContainerID(*cnr)
|
||||
addr.SetObjectID(*id)
|
||||
|
||||
var prm internalclient.DeleteObjectPrm
|
||||
|
||||
|
@ -313,6 +313,15 @@ func delSG(cmd *cobra.Command, _ []string) {
|
|||
|
||||
tombstone := res.TombstoneAddress()
|
||||
|
||||
var strID string
|
||||
|
||||
idTomb, ok := tombstone.ObjectID()
|
||||
if ok {
|
||||
strID = idTomb.String()
|
||||
} else {
|
||||
strID = "<empty>"
|
||||
}
|
||||
|
||||
cmd.Println("Storage group removed successfully.")
|
||||
cmd.Printf(" Tombstone: %s\n", tombstone.ObjectID())
|
||||
cmd.Printf(" Tombstone: %s\n", strID)
|
||||
}
|
||||
|
|
|
@ -7,8 +7,10 @@ import (
|
|||
common "github.com/nspcc-dev/neofs-node/cmd/neofs-lens/internal"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobovnicza"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/writecache"
|
||||
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/object"
|
||||
addressSDK "github.com/nspcc-dev/neofs-sdk-go/object/address"
|
||||
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -91,6 +93,32 @@ func objectInspectCmd(cmd *cobra.Command, _ []string) {
|
|||
printObjectInfo(cmd, res.Object())
|
||||
}
|
||||
|
||||
func printContainerID(cmd *cobra.Command, recv func() (cid.ID, bool)) {
|
||||
var val string
|
||||
|
||||
id, ok := recv()
|
||||
if ok {
|
||||
val = id.String()
|
||||
} else {
|
||||
val = "<empty>"
|
||||
}
|
||||
|
||||
cmd.Println("CID:", val)
|
||||
}
|
||||
|
||||
func printObjectID(cmd *cobra.Command, recv func() (oid.ID, bool)) {
|
||||
var val string
|
||||
|
||||
id, ok := recv()
|
||||
if ok {
|
||||
val = id.String()
|
||||
} else {
|
||||
val = "<empty>"
|
||||
}
|
||||
|
||||
cmd.Println("ID:", val)
|
||||
}
|
||||
|
||||
func printObjectInfo(cmd *cobra.Command, data []byte) {
|
||||
obj := object.New()
|
||||
err := obj.Unmarshal(data)
|
||||
|
@ -99,8 +127,8 @@ func printObjectInfo(cmd *cobra.Command, data []byte) {
|
|||
if vHeader {
|
||||
cmd.Println("Version:", obj.Version())
|
||||
cmd.Println("Type:", obj.Type())
|
||||
cmd.Println("CID:", obj.ContainerID())
|
||||
cmd.Println("ID:", obj.ID())
|
||||
printContainerID(cmd, obj.ContainerID)
|
||||
printObjectID(cmd, obj.ID)
|
||||
cmd.Println("Owner:", obj.OwnerID())
|
||||
cmd.Println("CreatedAt:", obj.CreationEpoch())
|
||||
cmd.Println("PayloadSize:", obj.PayloadSize())
|
||||
|
|
|
@ -134,14 +134,14 @@ func newCachedContainerStorage(v container.Source) *ttlContainerStorage {
|
|||
)
|
||||
|
||||
lruCnrCache := newNetworkTTLCache(containerCacheSize, containerCacheTTL, func(key interface{}) (interface{}, error) {
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
|
||||
err := id.Parse(key.(string))
|
||||
err := id.DecodeString(key.(string))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return v.Get(id)
|
||||
return v.Get(&id)
|
||||
})
|
||||
|
||||
return (*ttlContainerStorage)(lruCnrCache)
|
||||
|
@ -167,14 +167,14 @@ func newCachedEACLStorage(v eacl.Source) *ttlEACLStorage {
|
|||
)
|
||||
|
||||
lruCnrCache := newNetworkTTLCache(eaclCacheSize, eaclCacheTTL, func(key interface{}) (interface{}, error) {
|
||||
id := cid.New()
|
||||
var id cid.ID
|
||||
|
||||
err := id.Parse(key.(string))
|
||||
err := id.DecodeString(key.(string))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return v.GetEACL(id)
|
||||
return v.GetEACL(&id)
|
||||
})
|
||||
|
||||
return (*ttlEACLStorage)(lruCnrCache)
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"bytes"
|
||||
"context"
|
||||
"crypto/ecdsa"
|
||||
"crypto/sha256"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
@ -214,9 +215,14 @@ type morphLoadWriter struct {
|
|||
}
|
||||
|
||||
func (w *morphLoadWriter) Put(a containerSDK.UsedSpaceAnnouncement) error {
|
||||
cnr, ok := a.ContainerID()
|
||||
if !ok {
|
||||
return errors.New("missing container ID in load announcement")
|
||||
}
|
||||
|
||||
w.log.Debug("save used space announcement in contract",
|
||||
zap.Uint64("epoch", a.Epoch()),
|
||||
zap.Stringer("cid", a.ContainerID()),
|
||||
zap.Stringer("cid", cnr),
|
||||
zap.Uint64("size", a.UsedSpace()),
|
||||
)
|
||||
|
||||
|
@ -343,8 +349,8 @@ func (l *loadPlacementBuilder) BuildPlacement(epoch uint64, cid *cid.ID) ([]netm
|
|||
return placement, nil
|
||||
}
|
||||
|
||||
func (l *loadPlacementBuilder) buildPlacement(epoch uint64, cid *cid.ID) (netmap.ContainerNodes, *netmap.Netmap, error) {
|
||||
cnr, err := l.cnrSrc.Get(cid)
|
||||
func (l *loadPlacementBuilder) buildPlacement(epoch uint64, idCnr *cid.ID) (netmap.ContainerNodes, *netmap.Netmap, error) {
|
||||
cnr, err := l.cnrSrc.Get(idCnr)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
@ -354,7 +360,10 @@ func (l *loadPlacementBuilder) buildPlacement(epoch uint64, cid *cid.ID) (netmap
|
|||
return nil, nil, fmt.Errorf("could not get network map: %w", err)
|
||||
}
|
||||
|
||||
cnrNodes, err := nm.GetContainerNodes(cnr.PlacementPolicy(), cid.ToV2().GetValue())
|
||||
binCnr := make([]byte, sha256.Size)
|
||||
idCnr.Encode(binCnr)
|
||||
|
||||
cnrNodes, err := nm.GetContainerNodes(cnr.PlacementPolicy(), binCnr)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("could not build container nodes: %w", err)
|
||||
}
|
||||
|
@ -391,7 +400,7 @@ func (d *localStorageLoad) Iterate(f loadcontroller.UsedSpaceFilter, h loadcontr
|
|||
)
|
||||
|
||||
a := containerSDK.NewAnnouncement()
|
||||
a.SetContainerID(idList[i])
|
||||
a.SetContainerID(*idList[i])
|
||||
a.SetUsedSpace(sz)
|
||||
|
||||
if f != nil && !f(*a) {
|
||||
|
@ -516,7 +525,12 @@ func (l *loadPlacementBuilder) isNodeFromContainerKey(epoch uint64, cid *cid.ID,
|
|||
|
||||
func (c *usedSpaceService) processLoadValue(_ context.Context, a containerSDK.UsedSpaceAnnouncement,
|
||||
route []loadroute.ServerInfo, w loadcontroller.Writer) error {
|
||||
fromCnr, err := c.loadPlacementBuilder.isNodeFromContainerKey(a.Epoch(), a.ContainerID(), route[0].PublicKey())
|
||||
cnr, ok := a.ContainerID()
|
||||
if !ok {
|
||||
return errors.New("missing container ID in load announcement")
|
||||
}
|
||||
|
||||
fromCnr, err := c.loadPlacementBuilder.isNodeFromContainerKey(a.Epoch(), &cnr, route[0].PublicKey())
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not verify that the sender belongs to the container: %w", err)
|
||||
} else if !fromCnr {
|
||||
|
@ -591,7 +605,8 @@ func (m morphContainerWriter) PutEACL(table *eaclSDK.Table) error {
|
|||
}
|
||||
|
||||
if m.cacheEnabled {
|
||||
m.eacls.InvalidateEACL(table.CID())
|
||||
id, _ := table.CID()
|
||||
m.eacls.InvalidateEACL(&id)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue