[#227] netmap: Clarify some fields of PlacementPolicy

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-06-15 16:40:50 +03:00 committed by LeL
parent d648b86776
commit d51a324147

View file

@ -34,11 +34,11 @@ type PlacementPolicy struct {
replicas []netmap.Replica replicas []netmap.Replica
} }
func (p *PlacementPolicy) readFromV2(m netmap.PlacementPolicy) error { func (p *PlacementPolicy) readFromV2(m netmap.PlacementPolicy, checkFieldPresence bool) error {
p.backupFactor = m.GetContainerBackupFactor()
p.filters = m.GetFilters()
p.selectors = m.GetSelectors()
p.replicas = m.GetReplicas() p.replicas = m.GetReplicas()
if checkFieldPresence && len(p.replicas) == 0 {
return errors.New("missing replicas")
}
subnetV2 := m.GetSubnetID() subnetV2 := m.GetSubnetID()
if subnetV2 != nil { if subnetV2 != nil {
@ -50,6 +50,10 @@ func (p *PlacementPolicy) readFromV2(m netmap.PlacementPolicy) error {
p.subnet = subnetid.ID{} p.subnet = subnetid.ID{}
} }
p.backupFactor = m.GetContainerBackupFactor()
p.selectors = m.GetSelectors()
p.filters = m.GetFilters()
return nil return nil
} }
@ -62,7 +66,7 @@ func (p *PlacementPolicy) UnmarshalJSON(data []byte) error {
return err return err
} }
return p.readFromV2(m) return p.readFromV2(m, false)
} }
// ReadFromV2 reads PlacementPolicy from the netmap.PlacementPolicy message. // ReadFromV2 reads PlacementPolicy from the netmap.PlacementPolicy message.
@ -70,7 +74,7 @@ func (p *PlacementPolicy) UnmarshalJSON(data []byte) error {
// //
// See also WriteToV2. // See also WriteToV2.
func (p *PlacementPolicy) ReadFromV2(m netmap.PlacementPolicy) error { func (p *PlacementPolicy) ReadFromV2(m netmap.PlacementPolicy) error {
return p.readFromV2(m) return p.readFromV2(m, true)
} }
// WriteToV2 writes PlacementPolicy to the session.Token message. // WriteToV2 writes PlacementPolicy to the session.Token message.
@ -129,8 +133,6 @@ func (r *ReplicaDescriptor) SetSelectorName(s string) {
// AddReplicas adds a bunch object replica's characteristics. // AddReplicas adds a bunch object replica's characteristics.
// //
// Zero PlacementPolicy does not declare replicas ???.
//
// See also IterateReplicas. // See also IterateReplicas.
func (p *PlacementPolicy) AddReplicas(rs ...ReplicaDescriptor) { func (p *PlacementPolicy) AddReplicas(rs ...ReplicaDescriptor) {
off := len(p.replicas) off := len(p.replicas)
@ -144,7 +146,8 @@ func (p *PlacementPolicy) AddReplicas(rs ...ReplicaDescriptor) {
// NumberOfReplicas returns number of replica descriptors set using AddReplicas. // NumberOfReplicas returns number of replica descriptors set using AddReplicas.
// //
// Zero PlacementPolicy has no replicas. // Zero PlacementPolicy has no replicas which is incorrect according to the
// NeoFS API protocol.
func (p PlacementPolicy) NumberOfReplicas() int { func (p PlacementPolicy) NumberOfReplicas() int {
return len(p.replicas) return len(p.replicas)
} }
@ -187,7 +190,7 @@ func (s *Selector) SetNumberOfNodes(num uint32) {
// SelectByBucketAttribute sets attribute of the bucket to select nodes from. // SelectByBucketAttribute sets attribute of the bucket to select nodes from.
// //
// Zero Selector ???. // Zero Selector has empty attribute.
func (s *Selector) SelectByBucketAttribute(bucket string) { func (s *Selector) SelectByBucketAttribute(bucket string) {
s.m.SetAttribute(bucket) s.m.SetAttribute(bucket)
} }
@ -212,9 +215,11 @@ func (s *Selector) SelectDistinct() {
s.m.SetClause(netmap.Distinct) s.m.SetClause(netmap.Distinct)
} }
// SetFilterName sets name of filter to reference to select from ???. // SetFilterName sets reference to pre-filtering nodes for selection.
// //
// Zero Selector ???. // Zero Selector has no filtering reference.
//
// See also Filter.SetName.
func (s *Selector) SetFilterName(f string) { func (s *Selector) SetFilterName(f string) {
s.m.SetFilter(f) s.m.SetFilter(f)
} }
@ -222,7 +227,7 @@ func (s *Selector) SetFilterName(f string) {
// AddSelectors adds a Selector bunch to form the subset of the nodes // AddSelectors adds a Selector bunch to form the subset of the nodes
// to store container objects. // to store container objects.
// //
// Zero PlacementPolicy does not declare replicas ???. // Zero PlacementPolicy does not declare selectors.
func (p *PlacementPolicy) AddSelectors(ss ...Selector) { func (p *PlacementPolicy) AddSelectors(ss ...Selector) {
off := len(p.selectors) off := len(p.selectors)
@ -332,7 +337,7 @@ func (x *Filter) LogicalAND(filters ...Filter) {
// AddFilters adds a Filter bunch that will be applied when selecting nodes. // AddFilters adds a Filter bunch that will be applied when selecting nodes.
// //
// Zero PlacementPolicy has no filters ???. // Zero PlacementPolicy has no filters.
func (p *PlacementPolicy) AddFilters(fs ...Filter) { func (p *PlacementPolicy) AddFilters(fs ...Filter) {
off := len(p.filters) off := len(p.filters)