placement

package
v0.44.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 25, 2024 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildObjectPlacement

func BuildObjectPlacement(nm *netmapSDK.NetMap, cnrNodes [][]netmapSDK.NodeInfo, id *oid.ID) ([][]netmapSDK.NodeInfo, error)

func FlattenNodes

func FlattenNodes(ns [][]netmapSDK.NodeInfo) []netmapSDK.NodeInfo

FlattenNodes appends each row to the flat list.

Types

type Builder

type Builder interface {
	// BuildPlacement returns the list of placement vectors
	// for object according to the placement policy.
	//
	// Must return all container nodes if object identifier
	// is nil.
	BuildPlacement(cid.ID, *oid.ID, netmap.PlacementPolicy) ([][]netmap.NodeInfo, error)
}

Builder is an interface of the object placement vector builder.

func NewNetworkMapBuilder

func NewNetworkMapBuilder(nm *netmapSDK.NetMap) Builder

func NewNetworkMapSourceBuilder

func NewNetworkMapSourceBuilder(nmSrc netmap.Source) Builder

type ContainerNodesCache added in v0.42.0

type ContainerNodesCache struct {
	// contains filtered or unexported fields
}

ContainerNodesCache caches results of ContainerNodes() invocation between epochs.

func NewContainerNodesCache added in v0.42.0

func NewContainerNodesCache(size int) *ContainerNodesCache

NewContainerNodesCache creates new cache which saves the result of the ContainerNodes() invocations. If size is <= 0, defaultContainerCacheSize (10) is used.

func (*ContainerNodesCache) ContainerNodes added in v0.42.0

ContainerNodes returns the result of nm.ContainerNodes(), possibly from the cache.

type Metric added in v0.44.0

type Metric interface {
	CalculateValue(*netmap.NodeInfo, *netmap.NodeInfo) int
}

func NewAttributeMetric added in v0.44.0

func NewAttributeMetric(attr string) Metric

func ParseMetric added in v0.44.0

func ParseMetric(raw string) (Metric, error)

type Node

type Node struct {
	// contains filtered or unexported fields
}

Node is a descriptor of storage node with information required for intra-container communication.

func NewNode added in v0.38.0

func NewNode(addresses network.AddressGroup, externalAddresses network.AddressGroup, key []byte) Node

NewNode creates new Node.

func (Node) Addresses

func (x Node) Addresses() network.AddressGroup

Addresses returns group of network addresses.

func (Node) ExternalAddresses

func (x Node) ExternalAddresses() network.AddressGroup

ExternalAddresses returns group of network addresses.

func (Node) PublicKey

func (x Node) PublicKey() []byte

PublicKey returns public key in a binary format. Should not be mutated.

type NodeState added in v0.44.0

type NodeState interface {
	// LocalNodeInfo return current node state in FrostFS API v2 NodeInfo structure.
	LocalNodeInfo() *netmap.NodeInfo
}

type Option

type Option func(*cfg)

Option represents placement traverser option.

func ForContainer

func ForContainer(cnr container.Container) Option

ForContainer is a traversal container setting option.

func ForObject

func ForObject(id oid.ID) Option

ForObject is a processing object setting option.

func ResetSuccessAfter added in v0.42.14

func ResetSuccessAfter() Option

ResetSuccessAfter resets flat success number setting option.

func SuccessAfter

func SuccessAfter(v uint32) Option

SuccessAfter is a flat success number setting option.

Option has no effect if the number is not positive.

func UseBuilder

func UseBuilder(b Builder) Option

UseBuilder is a placement builder setting option.

Overlaps UseNetworkMap option.

func WithCopyNumbers added in v0.37.0

func WithCopyNumbers(v []uint32) Option

func WithNodeState added in v0.44.0

func WithNodeState(s NodeState) Option

WithNodeState provide state of the current node.

func WithPriorityMetrics added in v0.44.0

func WithPriorityMetrics(m []Metric) Option

WithPriorityMetrics use provided priority metrics to sort nodes.

func WithoutSuccessTracking

func WithoutSuccessTracking() Option

WithoutSuccessTracking disables success tracking in traversal.

type Traverser

type Traverser struct {
	// contains filtered or unexported fields
}

Traverser represents utility for controlling traversal of object placement vectors.

func NewTraverser

func NewTraverser(opts ...Option) (*Traverser, error)

NewTraverser creates, initializes with options and returns Traverser instance.

func (*Traverser) Next

func (t *Traverser) Next() []Node

Next returns next unprocessed address of the object placement.

Returns nil if no nodes left or traversal operation succeeded.

func (*Traverser) SubmitSuccess

func (t *Traverser) SubmitSuccess()

SubmitSuccess writes single succeeded node operation.

func (*Traverser) Success

func (t *Traverser) Success() bool

Success returns true if traversal operation succeeded.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL