[#155] Update neofs-api-go with refactored pkg/netmap

Refactored pkg/netmap package provides JSON converters for
NodeInfo and PlacementPolicy structures, that has been used
by client applications.

It also updates Node structure itself so it is a part of
grpc <-> v2 <-> pkg conversion chain.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2020-11-05 18:51:43 +03:00 committed by Alex Vanin
parent 9f8eb0fd51
commit 65be09d3db
16 changed files with 100 additions and 125 deletions

View file

@ -5,8 +5,7 @@ import (
"fmt"
"strings"
sdknm "github.com/nspcc-dev/neofs-api-go/pkg/netmap"
"github.com/nspcc-dev/neofs-api-go/v2/netmap"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
)
var (
@ -48,10 +47,10 @@ func Parse(s string) (*netmap.PlacementPolicy, error) {
seenSelectors := map[string]bool{}
ss := make([]*netmap.Selector, 0, len(q.Selectors))
for _, qs := range q.Selectors {
if qs.Filter != sdknm.MainFilterName && !seenFilters[qs.Filter] {
if qs.Filter != netmap.MainFilterName && !seenFilters[qs.Filter] {
return nil, fmt.Errorf("%w: '%s'", ErrUnknownFilter, qs.Filter)
}
s := new(netmap.Selector)
s := netmap.NewSelector()
switch len(qs.Bucket) {
case 1: // only bucket
s.SetAttribute(qs.Bucket[0])
@ -71,7 +70,7 @@ func Parse(s string) (*netmap.PlacementPolicy, error) {
rs := make([]*netmap.Replica, 0, len(q.Replicas))
for _, qr := range q.Replicas {
r := new(netmap.Replica)
r := netmap.NewReplica()
if qr.Selector != "" {
if !seenSelectors[qr.Selector] {
return nil, fmt.Errorf("%w: '%s'", ErrUnknownSelector, qr.Selector)
@ -86,21 +85,22 @@ func Parse(s string) (*netmap.PlacementPolicy, error) {
}
p := new(netmap.PlacementPolicy)
p.SetFilters(fs)
p.SetSelectors(ss)
p.SetReplicas(rs)
p.SetFilters(fs...)
p.SetSelectors(ss...)
p.SetReplicas(rs...)
p.SetContainerBackupFactor(q.CBF)
return p, nil
}
func clauseFromString(s string) netmap.Clause {
switch strings.ToUpper(s) {
case "SAME":
return netmap.Same
return netmap.ClauseSame
case "DISTINCT":
return netmap.Distinct
return netmap.ClauseDistinct
default:
return netmap.UnspecifiedClause
return 0
}
}
@ -117,9 +117,9 @@ func filterFromOrChain(expr *orChain, seen map[string]bool) (*netmap.Filter, err
return fs[0], nil
}
f := new(netmap.Filter)
f.SetOp(netmap.OR)
f.SetFilters(fs)
f := netmap.NewFilter()
f.SetOperation(netmap.OpOR)
f.SetInnerFilters(fs...)
return f, nil
}
@ -131,7 +131,7 @@ func filterFromAndChain(expr *andChain, seen map[string]bool) (*netmap.Filter, e
if fe.Expr != nil {
f, err = filterFromSimpleExpr(fe.Expr, seen)
} else {
f = new(netmap.Filter)
f = netmap.NewFilter()
f.SetName(fe.Reference)
}
if err != nil {
@ -143,28 +143,28 @@ func filterFromAndChain(expr *andChain, seen map[string]bool) (*netmap.Filter, e
return fs[0], nil
}
f := new(netmap.Filter)
f.SetOp(netmap.AND)
f.SetFilters(fs)
f := netmap.NewFilter()
f.SetOperation(netmap.OpAND)
f.SetInnerFilters(fs...)
return f, nil
}
func filterFromSimpleExpr(se *simpleExpr, seen map[string]bool) (*netmap.Filter, error) {
f := new(netmap.Filter)
f := netmap.NewFilter()
f.SetKey(se.Key)
switch se.Op {
case "EQ":
f.SetOp(netmap.EQ)
f.SetOperation(netmap.OpEQ)
case "NE":
f.SetOp(netmap.NE)
f.SetOperation(netmap.OpNE)
case "GE":
f.SetOp(netmap.GE)
f.SetOperation(netmap.OpGE)
case "GT":
f.SetOp(netmap.GT)
f.SetOperation(netmap.OpGT)
case "LE":
f.SetOp(netmap.LE)
f.SetOperation(netmap.OpLE)
case "LT":
f.SetOp(netmap.LT)
f.SetOperation(netmap.OpLT)
default:
return nil, fmt.Errorf("%w: '%s'", ErrUnknownOp, se.Op)
}