From e53bf574b57b903aa05551d735a9c389c358fdd3 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Thu, 24 Dec 2020 13:20:20 +0300 Subject: [PATCH] [#279] container: Use new methods to work with container format Signed-off-by: Leonard Lyubich --- cmd/neofs-cli/modules/container.go | 6 ++++-- go.mod | 2 +- go.sum | 4 ++-- pkg/core/container/fmt.go | 3 +-- pkg/core/container/fmt_test.go | 12 +++++------- pkg/services/container/morph/executor.go | 11 +++++------ 6 files changed, 18 insertions(+), 20 deletions(-) diff --git a/cmd/neofs-cli/modules/container.go b/cmd/neofs-cli/modules/container.go index 188ecffa3..b86e27e94 100644 --- a/cmd/neofs-cli/modules/container.go +++ b/cmd/neofs-cli/modules/container.go @@ -138,7 +138,7 @@ It will be stored in sidechain when inner ring will accepts it.`, cnr.SetPlacementPolicy(placementPolicy) cnr.SetBasicACL(basicACL) cnr.SetAttributes(attributes) - cnr.SetNonce(nonce[:]) + cnr.SetNonceUUID(nonce) id, err := cli.PutContainer(ctx, cnr, client.WithTTL(getTTL())) if err != nil { @@ -674,9 +674,11 @@ func prettyPrintContainer(cnr *container.Container, jsonEncoding bool) { fmt.Printf("attribute: %s=%s\n", attribute.Key(), attribute.Value()) } - nonce, err := uuid.FromBytes(cnr.Nonce()) + nonce, err := cnr.NonceUUID() if err == nil { fmt.Println("nonce:", nonce) + } else { + fmt.Println("invalid nonce:", err) } fmt.Println("placement policy:") diff --git a/go.mod b/go.mod index 62b586c35..231f163d8 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/multiformats/go-multihash v0.0.13 // indirect github.com/nspcc-dev/hrw v1.0.9 github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b - github.com/nspcc-dev/neofs-api-go v1.21.1 + github.com/nspcc-dev/neofs-api-go v1.21.2-0.20201224095453-c4f7be19ea14 github.com/nspcc-dev/neofs-crypto v0.3.0 github.com/nspcc-dev/tzhash v1.4.0 github.com/panjf2000/ants/v2 v2.3.0 diff --git a/go.sum b/go.sum index 4bd103f2a..9c267e879 100644 --- a/go.sum +++ b/go.sum @@ -284,8 +284,8 @@ github.com/nspcc-dev/neo-go v0.73.1-pre.0.20200303142215-f5a1b928ce09/go.mod h1: github.com/nspcc-dev/neo-go v0.91.0/go.mod h1:G6HdOWvzQ6tlvFdvFSN/PgCzLPN/X/X4d5hTjFRUDcc= github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b h1:gk5bZgpWOehaDVKI5vBDkcjXTpRkKqcvIb1h/vHnBH4= github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b/go.mod h1:9s7LNp2lMgf0caH2t0sam4+WT2SIauXozwP0AdBqnEo= -github.com/nspcc-dev/neofs-api-go v1.21.1 h1:xZgq1oimbwW9WR+/14WfiapGZgsCN+bkJse8OYJdWBM= -github.com/nspcc-dev/neofs-api-go v1.21.1/go.mod h1:G7dqincfdjBrAbL5nxVp82emF05fSVEqe59ICsoRDI8= +github.com/nspcc-dev/neofs-api-go v1.21.2-0.20201224095453-c4f7be19ea14 h1:5dv4dX/62JHl6s0uSmgeNKtPRsiEy2eBTLBuD22pITI= +github.com/nspcc-dev/neofs-api-go v1.21.2-0.20201224095453-c4f7be19ea14/go.mod h1:G7dqincfdjBrAbL5nxVp82emF05fSVEqe59ICsoRDI8= github.com/nspcc-dev/neofs-crypto v0.2.0/go.mod h1:F/96fUzPM3wR+UGsPi3faVNmFlA9KAEAUQR7dMxZmNA= github.com/nspcc-dev/neofs-crypto v0.2.3/go.mod h1:8w16GEJbH6791ktVqHN9YRNH3s9BEEKYxGhlFnp0cDw= github.com/nspcc-dev/neofs-crypto v0.3.0 h1:zlr3pgoxuzrmGCxc5W8dGVfA9Rro8diFvVnBg0L4ifM= diff --git a/pkg/core/container/fmt.go b/pkg/core/container/fmt.go index 754049331..03de5e43a 100644 --- a/pkg/core/container/fmt.go +++ b/pkg/core/container/fmt.go @@ -1,7 +1,6 @@ package container import ( - "github.com/google/uuid" "github.com/nspcc-dev/neofs-api-go/pkg" "github.com/nspcc-dev/neofs-api-go/pkg/container" "github.com/nspcc-dev/neofs-api-go/pkg/owner" @@ -27,7 +26,7 @@ func CheckFormat(c *container.Container) error { return errors.Errorf("incorrect owner identifier: expected length %d != %d", owner.NEO3WalletSize, ln) } - if _, err := uuid.FromBytes(c.Nonce()); err != nil { + if _, err := c.NonceUUID(); err != nil { return errors.Wrap(err, "incorrect nonce") } diff --git a/pkg/core/container/fmt_test.go b/pkg/core/container/fmt_test.go index 61e568f9e..34581182a 100644 --- a/pkg/core/container/fmt_test.go +++ b/pkg/core/container/fmt_test.go @@ -31,16 +31,14 @@ func TestCheckFormat(t *testing.T) { c.SetOwnerID(owner.NewIDFromNeo3Wallet(wallet)) - c.SetNonce(nil) + // set incorrect nonce + cV2 := c.ToV2() + cV2.SetNonce([]byte{1, 2, 3}) + c = container.NewContainerFromV2(cV2) require.Error(t, CheckFormat(c)) - uid, err := uuid.NewRandom() - require.NoError(t, err) - - nonce, _ := uid.MarshalBinary() - - c.SetNonce(nonce) + c.SetNonceUUID(uuid.New()) require.NoError(t, CheckFormat(c)) } diff --git a/pkg/services/container/morph/executor.go b/pkg/services/container/morph/executor.go index 47ea3092e..675dda854 100644 --- a/pkg/services/container/morph/executor.go +++ b/pkg/services/container/morph/executor.go @@ -8,7 +8,6 @@ import ( "github.com/nspcc-dev/neofs-api-go/pkg/owner" "github.com/nspcc-dev/neofs-api-go/v2/container" "github.com/nspcc-dev/neofs-api-go/v2/refs" - containerCore "github.com/nspcc-dev/neofs-node/pkg/core/container" containerMorph "github.com/nspcc-dev/neofs-node/pkg/morph/client/container" "github.com/nspcc-dev/neofs-node/pkg/morph/client/container/wrapper" containerSvc "github.com/nspcc-dev/neofs-node/pkg/services/container" @@ -32,13 +31,13 @@ func NewExecutor(client *containerMorph.Client) containerSvc.ServiceExecutor { } func (s *morphExecutor) Put(ctx context.Context, body *container.PutRequestBody) (*container.PutResponseBody, error) { - cnr := containerSDK.NewContainerFromV2(body.GetContainer()) - sig := body.GetSignature() - - if err := containerCore.CheckFormat(cnr); err != nil { - return nil, errors.Wrapf(err, "incorrect container format") + cnr, err := containerSDK.NewVerifiedFromV2(body.GetContainer()) + if err != nil { + return nil, errors.Wrap(err, "invalid format of the container structure") } + sig := body.GetSignature() + cid, err := s.wrapper.Put(cnr, sig.GetKey(), sig.GetSign()) if err != nil { return nil, err