object

package
v0.46.10 Latest Latest
Warning

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

Go to latest
Published: Sep 22, 2025 License: GPL-3.0 Imports: 38 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LogServiceError added in v0.46.7

func LogServiceError(ctx context.Context, l *logger.Logger, req string, node network.AddressGroup, err error)

LogServiceError writes error message of object service to provided logger.

func NewLocalPlacement added in v0.46.7

func NewLocalPlacement(b placement.Builder, s netmap.AnnouncedKeys) placement.Builder

func NewRemotePlacementBuilder added in v0.46.7

func NewRemotePlacementBuilder(b placement.Builder, s netmap.AnnouncedKeys) placement.Builder

NewRemotePlacementBuilder creates, initializes and returns placement builder that excludes local node from any placement vector.

Types

type AdjustIOTag added in v0.45.0

type AdjustIOTag interface {
	AdjustIncomingTag(ctx context.Context, requestSignPublicKey []byte) context.Context
}

type ClientConstructor added in v0.40.0

type ClientConstructor interface {
	Get(clientcore.NodeInfo) (clientcore.MultiAddressClient, error)
}

type Common

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

Common is an Object API ServiceServer which encapsulates logic spread to all object operations.

If underlying NodeState.IsMaintenance returns true, all operations are immediately failed with apistatus.NodeUnderMaintenance.

func (*Common) Delete

func (*Common) Get

func (x *Common) Get(req *objectV2.GetRequest, stream GetObjectStream) error

func (*Common) GetRange

func (x *Common) GetRange(req *objectV2.GetRangeRequest, stream GetObjectRangeStream) error

func (*Common) GetRangeHash

func (*Common) Head

func (*Common) Init

func (x *Common) Init(state NodeState, nextHandler ServiceServer)

Init initializes the Common instance.

func (*Common) Patch added in v0.43.0

func (x *Common) Patch(ctx context.Context) (PatchObjectStream, error)

func (*Common) Put

func (x *Common) Put(ctx context.Context) (PutObjectStream, error)

func (*Common) PutSingle added in v0.37.0

func (*Common) Search

func (x *Common) Search(req *objectV2.SearchRequest, stream SearchStream) error

type CommonPrm added in v0.46.7

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

func CommonPrmFromV2 added in v0.46.7

func CommonPrmFromV2(req interface {
	GetMetaHeader() *session.RequestMetaHeader
},
) (*CommonPrm, error)

func (*CommonPrm) BearerToken added in v0.46.7

func (p *CommonPrm) BearerToken() *bearer.Token

func (*CommonPrm) ForgetTokens added in v0.46.7

func (p *CommonPrm) ForgetTokens() func()

ForgetTokens forgets all the tokens read from the request's meta information before.

func (*CommonPrm) LocalOnly added in v0.46.7

func (p *CommonPrm) LocalOnly() bool

func (*CommonPrm) NetmapEpoch added in v0.46.7

func (p *CommonPrm) NetmapEpoch() uint64

func (*CommonPrm) NetmapLookupDepth added in v0.46.7

func (p *CommonPrm) NetmapLookupDepth() uint64

func (*CommonPrm) SessionToken added in v0.46.7

func (p *CommonPrm) SessionToken() *sessionsdk.Object

func (*CommonPrm) SetNetmapLookupDepth added in v0.46.7

func (p *CommonPrm) SetNetmapLookupDepth(v uint64)

func (*CommonPrm) TTL added in v0.46.7

func (p *CommonPrm) TTL() uint32

TTL returns TTL for new requests.

func (*CommonPrm) WithLocalOnly added in v0.46.7

func (p *CommonPrm) WithLocalOnly(v bool) *CommonPrm

func (*CommonPrm) XHeaders added in v0.46.7

func (p *CommonPrm) XHeaders() []string

XHeaders returns X-Headers for new requests.

type GetObjectRangeStream

type GetObjectRangeStream interface {
	services.ServerStream
	Send(*object.GetRangeResponse) error
}

GetObjectRangeStream is an interface of FrostFS API v2 compatible payload range streamer.

type GetObjectStream

type GetObjectStream interface {
	services.ServerStream
	Send(*object.GetResponse) error
}

GetObjectStream is an interface of FrostFS API v2 compatible object streamer.

type KeyStorage added in v0.46.7

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

KeyStorage represents private key storage of the local node.

func NewKeyStorage added in v0.46.7

func NewKeyStorage(localKey *ecdsa.PrivateKey, tokenStore SessionSource, net netmap.State) *KeyStorage

NewKeyStorage creates, initializes and returns new KeyStorage instance.

func (*KeyStorage) GetKey added in v0.46.7

func (s *KeyStorage) GetKey(info *SessionInfo) (*ecdsa.PrivateKey, error)

GetKey fetches private key depending on the SessionInfo.

If info is not `nil`, searches for dynamic session token through the underlying token storage. Returns apistatus.SessionTokenNotFound if token storage does not contain information about provided dynamic session.

If info is `nil`, returns node's private key.

type MetricCollector

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

func NewMetricCollector

func NewMetricCollector(next ServiceServer, register MetricRegister, enabled bool) *MetricCollector

func (MetricCollector) Delete

func (*MetricCollector) Disable

func (m *MetricCollector) Disable()

func (*MetricCollector) Enable

func (m *MetricCollector) Enable()

func (MetricCollector) Get

func (m MetricCollector) Get(req *object.GetRequest, stream GetObjectStream) (err error)

func (MetricCollector) GetRange

func (MetricCollector) GetRangeHash

func (MetricCollector) Head

func (MetricCollector) Patch added in v0.43.0

func (MetricCollector) Put

func (MetricCollector) PutSingle added in v0.37.0

func (MetricCollector) Search

func (m MetricCollector) Search(req *object.SearchRequest, stream SearchStream) error

type MetricRegister

type MetricRegister interface {
	AddRequestDuration(string, time.Duration, bool, string)
	AddPayloadSize(string, int)
}

type NodeState

type NodeState interface {
	// IsMaintenance checks if node is under maintenance. Node MUST NOT serve
	// local object operations. Node MUST respond with apistatus.NodeUnderMaintenance
	// error if IsMaintenance returns true.
	IsMaintenance() bool
}

NodeState is storage node state processed by Object service.

type PatchObjectStream added in v0.43.0

type PatchObjectStream interface {
	Send(context.Context, *object.PatchRequest) error
	CloseAndRecv(context.Context) (*object.PatchResponse, error)
}

PatchObjectStream is an interface of FrostFS API v2 compatible patch streamer.

type PutObjectStream

type PutObjectStream interface {
	Send(context.Context, *object.PutRequest) error
	CloseAndRecv(context.Context) (*object.PutResponse, error)
}

PutObjectStream is an interface of FrostFS API v2 compatible client's object streamer.

type RemoteReader added in v0.40.0

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

RemoteReader represents utility for getting the object from a remote host.

func NewRemoteReader added in v0.40.0

func NewRemoteReader(keyStorage *KeyStorage, cache ClientConstructor) *RemoteReader

NewRemoteReader creates, initializes and returns new RemoteHeader instance.

func (*RemoteReader) Get added in v0.40.0

func (*RemoteReader) Head added in v0.40.0

Head requests object header from the remote node.

type RemoteRequestPrm added in v0.40.0

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

RemoteRequestPrm groups remote operation parameters.

func (*RemoteRequestPrm) WithNodeInfo added in v0.40.0

func (p *RemoteRequestPrm) WithNodeInfo(v netmap.NodeInfo) *RemoteRequestPrm

WithNodeInfo sets information about the remote node.

func (*RemoteRequestPrm) WithObjectAddress added in v0.40.0

func (p *RemoteRequestPrm) WithObjectAddress(v oid.Address) *RemoteRequestPrm

WithObjectAddress sets object address.

func (*RemoteRequestPrm) WithRaw added in v0.40.0

func (p *RemoteRequestPrm) WithRaw(v bool) *RemoteRequestPrm

type ResponseService

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

func NewResponseService

func NewResponseService(objSvc ServiceServer, respSvc *response.Service) *ResponseService

NewResponseService returns object service instance that passes internal service call to response service.

func (*ResponseService) Delete

func (*ResponseService) Get

func (s *ResponseService) Get(req *object.GetRequest, stream GetObjectStream) error

func (*ResponseService) GetRange

func (*ResponseService) GetRangeHash

func (*ResponseService) Head

func (*ResponseService) Patch added in v0.43.0

func (*ResponseService) Put

func (*ResponseService) PutSingle added in v0.37.0

func (*ResponseService) Search

func (s *ResponseService) Search(req *object.SearchRequest, stream SearchStream) error

type SearchStream

type SearchStream interface {
	services.ServerStream
	Send(*object.SearchResponse) error
}

SearchStream is an interface of FrostFS API v2 compatible search streamer.

type ServiceServer

ServiceServer is an interface of utility serving v2 Object service.

func NewAuditService added in v0.42.0

func NewAuditService(next ServiceServer, log *logger.Logger, enabled *atomic.Bool) ServiceServer

func NewQoSObjectService added in v0.45.0

func NewQoSObjectService(next ServiceServer, adjIOTag AdjustIOTag) ServiceServer

type SessionInfo added in v0.46.7

type SessionInfo struct {
	// Session unique identifier.
	ID uuid.UUID

	// Session issuer.
	Owner user.ID
}

SessionInfo groups information about FrostFS Object session which is reflected in KeyStorage.

type SessionSource added in v0.46.7

type SessionSource interface {
	// Get must return non-expired private token that
	// corresponds with passed owner and tokenID. If
	// token has not been created, has been expired
	// of it is impossible to get information about the
	// token Get must return nil.
	Get(owner user.ID, tokenID []byte) *storage.PrivateToken
}

SessionSource is an interface tha provides access to node's actual (not expired) session tokens.

type SignService

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

func NewSignService

func NewSignService(key *ecdsa.PrivateKey, svc ServiceServer) *SignService

func (*SignService) Delete

func (*SignService) Get

func (s *SignService) Get(req *object.GetRequest, stream GetObjectStream) error

func (*SignService) GetRange

func (s *SignService) GetRange(req *object.GetRangeRequest, stream GetObjectRangeStream) error

func (*SignService) GetRangeHash

func (*SignService) Head

func (*SignService) Patch added in v0.43.0

func (*SignService) Put

func (*SignService) PutSingle added in v0.37.0

func (*SignService) Search

func (s *SignService) Search(req *object.SearchRequest, stream SearchStream) error

type TransportSplitter

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

func NewTransportSplitter

func NewTransportSplitter(size, amount uint64, next ServiceServer) *TransportSplitter

func (TransportSplitter) Delete

func (*TransportSplitter) Get

func (TransportSplitter) GetRange

func (TransportSplitter) GetRangeHash

func (TransportSplitter) Head

func (TransportSplitter) Patch added in v0.43.0

func (TransportSplitter) Put

func (TransportSplitter) PutSingle added in v0.37.0

func (TransportSplitter) Search

func (c TransportSplitter) Search(req *object.SearchRequest, stream SearchStream) error

type TraverserGenerator added in v0.46.7

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

TraverserGenerator represents tool that generates container traverser for the particular need.

func NewTraverserGenerator added in v0.46.7

func NewTraverserGenerator(nmSrc netmap.Source, cnrSrc container.Source, netmapKeys netmap.AnnouncedKeys) *TraverserGenerator

NewTraverserGenerator creates, initializes and returns new TraverserGenerator instance.

func (*TraverserGenerator) GenerateTraverser added in v0.46.7

func (g *TraverserGenerator) GenerateTraverser(ctx context.Context, idCnr cid.ID, idObj *oid.ID, epoch uint64) (*placement.Traverser, *container.Container, error)

GenerateTraverser generates placement Traverser for provided object address using epoch-th network map.

func (*TraverserGenerator) WithTraverseOptions added in v0.46.7

func (g *TraverserGenerator) WithTraverseOptions(opts ...placement.Option) *TraverserGenerator

WithTraverseOptions returns TraverseGenerator that additionally applies provided options.

Directories

Path Synopsis
common
v2
get
v2
client
Package internal provides functionality for FrostFS Node Object service communication with FrostFS network.
Package internal provides functionality for FrostFS Node Object service communication with FrostFS network.
put
v2
v2

Jump to

Keyboard shortcuts

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