[#404] *: Regenerate code after language fixes

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-06-15 20:30:22 +03:00 committed by fyrchik
parent 454b5c0ed7
commit f9a91e5f33
25 changed files with 350 additions and 225 deletions

View file

@ -162,7 +162,7 @@ func (x *BalanceResponse) GetVerifyHeader() *grpc.ResponseVerificationHeader {
return nil return nil
} }
// To indicate the account for which the balance is requested, it's identifier // To indicate the account for which the balance is requested, its identifier
// is used. It can be any existing account in NeoFS sidechain `Balance` smart // is used. It can be any existing account in NeoFS sidechain `Balance` smart
// contract. If omitted, client implementation MUST set it to the request's // contract. If omitted, client implementation MUST set it to the request's
// signer `OwnerID`. // signer `OwnerID`.
@ -216,7 +216,7 @@ func (x *BalanceRequest_Body) GetOwnerId() *grpc1.OwnerID {
} }
// The amount of funds in GAS token for the `OwnerID`'s account requested. // The amount of funds in GAS token for the `OwnerID`'s account requested.
// Balance is `Decimal` format to avoid precision issues with rounding. // Balance is given in the `Decimal` format to avoid precision issues with rounding.
type BalanceResponse_Body struct { type BalanceResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: accounting/grpc/service.proto
package accounting package accounting

View file

@ -32,7 +32,7 @@ type Decimal struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Number in smallest Token fractions. // Number in the smallest Token fractions.
Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
// Precision value indicating how many smallest fractions can be in one // Precision value indicating how many smallest fractions can be in one
// integer. // integer.

30
acl/grpc/types.pb.go generated
View file

@ -29,10 +29,10 @@ const (
Role_ROLE_UNSPECIFIED Role = 0 Role_ROLE_UNSPECIFIED Role = 0
// User target rule is applied if sender is the owner of the container // User target rule is applied if sender is the owner of the container
Role_USER Role = 1 Role_USER Role = 1
// System target rule is applied if sender is the storage node within the // System target rule is applied if sender is a storage node within the
// container or inner ring node // container or an inner ring node
Role_SYSTEM Role = 2 Role_SYSTEM Role = 2
// Others target rule is applied if sender is not user nor system target // Others target rule is applied if sender is neither a user nor a system target
Role_OTHERS Role = 3 Role_OTHERS Role = 3
) )
@ -394,16 +394,16 @@ func (x *EACLRecord) GetTargets() []*EACLRecord_Target {
return nil return nil
} }
// Extended ACL rules table. Defined a list of ACL rules additionally to Basic // Extended ACL rules table. A list of ACL rules defined additionally to Basic
// ACL. Extended ACL rules can be attached to the container and can be updated // ACL. Extended ACL rules can be attached to a container and can be updated
// or may be defined in `BearerToken` structure. Please see the corresponding // or may be defined in `BearerToken` structure. Please see the corresponding
// NeoFS Technical Specification's section for detailed description. // NeoFS Technical Specification section for detailed description.
type EACLTable struct { type EACLTable struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// eACL format version. Effectively the version of API library used to create // eACL format version. Effectively, the version of API library used to create
// eACL Table. // eACL Table.
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Identifier of the container that should use given access control rules // Identifier of the container that should use given access control rules
@ -472,8 +472,8 @@ func (x *EACLTable) GetRecords() []*EACLRecord {
// used in the similar use cases, like providing authorisation to externally // used in the similar use cases, like providing authorisation to externally
// authenticated party. // authenticated party.
// //
// BearerToken can be issued only by container's owner and must be signed using // BearerToken can be issued only by the container's owner and must be signed using
// the key associated with container's `OwnerID`. // the key associated with the container's `OwnerID`.
type BearerToken struct { type BearerToken struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -531,7 +531,7 @@ func (x *BearerToken) GetSignature() *grpc.Signature {
return nil return nil
} }
// Filter to check particular properties of the request or object. // Filter to check particular properties of the request or the object.
// //
// By default `key` field refers to the corresponding object's `Attribute`. // By default `key` field refers to the corresponding object's `Attribute`.
// Some Object's header fields can also be accessed by adding `$Object:` // Some Object's header fields can also be accessed by adding `$Object:`
@ -695,17 +695,19 @@ func (x *EACLRecord_Target) GetKeys() [][]byte {
return nil return nil
} }
// Bearer Token body structure contains Extended ACL table issued by container // Bearer Token body structure contains Extended ACL table issued by the container
// owner with additional information preventing token's abuse. // owner with additional information preventing token abuse.
type BearerToken_Body struct { type BearerToken_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Table of Extended ACL rules to use instead of the ones attached to the // Table of Extended ACL rules to use instead of the ones attached to the
// container // container. If it contains `container_id` field, bearer token is only
// valid for this specific container. Otherwise, any container of the same owner
// is allowed.
EaclTable *EACLTable `protobuf:"bytes,1,opt,name=eacl_table,json=eaclTable,proto3" json:"eacl_table,omitempty"` EaclTable *EACLTable `protobuf:"bytes,1,opt,name=eacl_table,json=eaclTable,proto3" json:"eacl_table,omitempty"`
// `OwnerID` to whom the token was issued. Must match the request // `OwnerID` defines to whom the token was issued. It must match the request
// originator's `OwnerID`. If empty, any token bearer will be accepted. // originator's `OwnerID`. If empty, any token bearer will be accepted.
OwnerId *grpc.OwnerID `protobuf:"bytes,2,opt,name=owner_id,json=ownerID,proto3" json:"owner_id,omitempty"` OwnerId *grpc.OwnerID `protobuf:"bytes,2,opt,name=owner_id,json=ownerID,proto3" json:"owner_id,omitempty"`
// Token expiration and valid time period parameters // Token expiration and valid time period parameters

View file

@ -28,7 +28,7 @@ type DataAuditResult struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Data Audit Result format version. Effectively the version of API library // Data Audit Result format version. Effectively, the version of API library
// used to report DataAuditResult structure. // used to report DataAuditResult structure.
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Epoch number when the Data Audit was conducted // Epoch number when the Data Audit was conducted
@ -47,14 +47,14 @@ type DataAuditResult struct {
PassSg []*grpc.ObjectID `protobuf:"bytes,8,rep,name=pass_sg,json=passSG,proto3" json:"pass_sg,omitempty"` PassSg []*grpc.ObjectID `protobuf:"bytes,8,rep,name=pass_sg,json=passSG,proto3" json:"pass_sg,omitempty"`
// List of Storage Groups that failed audit PoR stage // List of Storage Groups that failed audit PoR stage
FailSg []*grpc.ObjectID `protobuf:"bytes,9,rep,name=fail_sg,json=failSG,proto3" json:"fail_sg,omitempty"` FailSg []*grpc.ObjectID `protobuf:"bytes,9,rep,name=fail_sg,json=failSG,proto3" json:"fail_sg,omitempty"`
// Number of sampled objects under audit placed in an optimal way according to // Number of sampled objects under the audit placed in an optimal way according to
// the containers placement policy when checking PoP // the containers placement policy when checking PoP
Hit uint32 `protobuf:"varint,10,opt,name=hit,proto3" json:"hit,omitempty"` Hit uint32 `protobuf:"varint,10,opt,name=hit,proto3" json:"hit,omitempty"`
// Number of sampled objects under audit placed in suboptimal way according to // Number of sampled objects under the audit placed in suboptimal way according to
// the containers placement policy, but still at a satisfactory level when // the containers placement policy, but still at a satisfactory level when
// checking PoP // checking PoP
Miss uint32 `protobuf:"varint,11,opt,name=miss,proto3" json:"miss,omitempty"` Miss uint32 `protobuf:"varint,11,opt,name=miss,proto3" json:"miss,omitempty"`
// Number of sampled objects under audit stored in a way not confirming // Number of sampled objects under the audit stored inconsistently with the
// placement policy or not found at all when checking PoP // placement policy or not found at all when checking PoP
Fail uint32 `protobuf:"varint,12,opt,name=fail,proto3" json:"fail,omitempty"` Fail uint32 `protobuf:"varint,12,opt,name=fail,proto3" json:"fail,omitempty"`
// List of storage node public keys that passed at least one PDP // List of storage node public keys that passed at least one PDP

View file

@ -1069,7 +1069,7 @@ func (x *PutRequest_Body) GetSignature() *grpc1.SignatureRFC6979 {
// Container put response body contains information about the newly registered // Container put response body contains information about the newly registered
// container as seen by `Container` smart contract. `ContainerID` can be // container as seen by `Container` smart contract. `ContainerID` can be
// calculated beforehand from the container structure and compared to the one // calculated beforehand from the container structure and compared to the one
// returned here to make sure everything was done as expected. // returned here to make sure everything has been done as expected.
type PutResponse_Body struct { type PutResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -1118,8 +1118,8 @@ func (x *PutResponse_Body) GetContainerId() *grpc1.ContainerID {
return nil return nil
} }
// Container removal request body has a signed `ContainerID` as a proof of // Container removal request body has signed `ContainerID` as a proof of
// container owner's intent. The signature will be verified by `Container` // the container owner's intent. The signature will be verified by `Container`
// smart contract, so signing algorithm must be supported by NeoVM. // smart contract, so signing algorithm must be supported by NeoVM.
type DeleteRequest_Body struct { type DeleteRequest_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -1268,7 +1268,7 @@ func (x *GetRequest_Body) GetContainerId() *grpc1.ContainerID {
} }
// Get container response body does not have container structure signature. It // Get container response body does not have container structure signature. It
// was already verified on container creation. // has been already verified upon container creation.
type GetResponse_Body struct { type GetResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -1278,7 +1278,7 @@ type GetResponse_Body struct {
Container *Container `protobuf:"bytes,1,opt,name=container,proto3" json:"container,omitempty"` Container *Container `protobuf:"bytes,1,opt,name=container,proto3" json:"container,omitempty"`
// Signature of a stable-marshalled container according to RFC-6979. // Signature of a stable-marshalled container according to RFC-6979.
Signature *grpc1.SignatureRFC6979 `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` Signature *grpc1.SignatureRFC6979 `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
// Session token if the container was created within a session // Session token if the container has been created within the session
SessionToken *grpc.SessionToken `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` SessionToken *grpc.SessionToken `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"`
} }
@ -1440,7 +1440,7 @@ type SetExtendedACLRequest_Body struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Extended ACL table to set for container // Extended ACL table to set for the container
Eacl *grpc2.EACLTable `protobuf:"bytes,1,opt,name=eacl,proto3" json:"eacl,omitempty"` Eacl *grpc2.EACLTable `protobuf:"bytes,1,opt,name=eacl,proto3" json:"eacl,omitempty"`
// Signature of stable-marshalled Extended ACL table according to RFC-6979. // Signature of stable-marshalled Extended ACL table according to RFC-6979.
Signature *grpc1.SignatureRFC6979 `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` Signature *grpc1.SignatureRFC6979 `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
@ -1493,7 +1493,7 @@ func (x *SetExtendedACLRequest_Body) GetSignature() *grpc1.SignatureRFC6979 {
} }
// `SetExtendedACLResponse` has an empty body because the operation is // `SetExtendedACLResponse` has an empty body because the operation is
// asynchronous and update should be reflected in `Container` smart contract's // asynchronous and the update should be reflected in `Container` smart contract's
// storage after next block is issued in sidechain. // storage after next block is issued in sidechain.
type SetExtendedACLResponse_Body struct { type SetExtendedACLResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -1582,9 +1582,9 @@ func (x *GetExtendedACLRequest_Body) GetContainerId() *grpc1.ContainerID {
return nil return nil
} }
// Get Extended ACL Response body can be empty if the requested container did // Get Extended ACL Response body can be empty if the requested container does
// not have Extended ACL Table attached or Extended ACL was not allowed at // not have Extended ACL Table attached or Extended ACL has not been allowed at
// container creation. // the time of container creation.
type GetExtendedACLResponse_Body struct { type GetExtendedACLResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -1657,8 +1657,8 @@ type AnnounceUsedSpaceRequest_Body struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// List of announcements. If nodes share several containers, then // List of announcements. If nodes share several containers,
// announcements transferred in a batch. // announcements are transferred in a batch.
Announcements []*AnnounceUsedSpaceRequest_Body_Announcement `protobuf:"bytes,1,rep,name=announcements,proto3" json:"announcements,omitempty"` Announcements []*AnnounceUsedSpaceRequest_Body_Announcement `protobuf:"bytes,1,rep,name=announcements,proto3" json:"announcements,omitempty"`
} }
@ -1701,17 +1701,17 @@ func (x *AnnounceUsedSpaceRequest_Body) GetAnnouncements() []*AnnounceUsedSpaceR
return nil return nil
} }
// Announcement contains used space information about single container. // Announcement contains used space information for a single container.
type AnnounceUsedSpaceRequest_Body_Announcement struct { type AnnounceUsedSpaceRequest_Body_Announcement struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Epoch number for which container size estimation was produced. // Epoch number for which the container size estimation was produced.
Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
// Identifier of the container. // Identifier of the container.
ContainerId *grpc1.ContainerID `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` ContainerId *grpc1.ContainerID `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
// Used space is a sum of object payload sizes of specified // Used space is a sum of object payload sizes of a specified
// container, stored in the node. It must not include inhumed objects. // container, stored in the node. It must not include inhumed objects.
UsedSpace uint64 `protobuf:"varint,3,opt,name=used_space,json=usedSpace,proto3" json:"used_space,omitempty"` UsedSpace uint64 `protobuf:"varint,3,opt,name=used_space,json=usedSpace,proto3" json:"used_space,omitempty"`
} }

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: container/grpc/service.proto
package container package container
@ -24,7 +20,7 @@ const _ = grpc.SupportPackageIsVersion7
type ContainerServiceClient interface { type ContainerServiceClient interface {
// `Put` invokes `Container` smart contract's `Put` method and returns // `Put` invokes `Container` smart contract's `Put` method and returns
// response immediately. After a new block is issued in sidechain, request is // response immediately. After a new block is issued in sidechain, request is
// verified by Inner Ring nodes. After one more block in sidechain, container // verified by Inner Ring nodes. After one more block in sidechain, the container
// is added into smart contract storage. // is added into smart contract storage.
// //
// Statuses: // Statuses:
@ -34,7 +30,7 @@ type ContainerServiceClient interface {
Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error)
// `Delete` invokes `Container` smart contract's `Delete` method and returns // `Delete` invokes `Container` smart contract's `Delete` method and returns
// response immediately. After a new block is issued in sidechain, request is // response immediately. After a new block is issued in sidechain, request is
// verified by Inner Ring nodes. After one more block in sidechain, container // verified by Inner Ring nodes. After one more block in sidechain, the container
// is added into smart contract storage. // is added into smart contract storage.
// //
// Statuses: // Statuses:
@ -59,7 +55,7 @@ type ContainerServiceClient interface {
// - Common failures (SECTION_FAILURE_COMMON). // - Common failures (SECTION_FAILURE_COMMON).
List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
// Invokes 'SetEACL' method of 'Container` smart contract and returns response // Invokes 'SetEACL' method of 'Container` smart contract and returns response
// immediately. After one more block in sidechain, Extended ACL changes are // immediately. After one more block in sidechain, changes in an Extended ACL are
// added into smart contract storage. // added into smart contract storage.
// //
// Statuses: // Statuses:
@ -77,7 +73,7 @@ type ContainerServiceClient interface {
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \ // - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
// container not found. // container not found.
GetExtendedACL(ctx context.Context, in *GetExtendedACLRequest, opts ...grpc.CallOption) (*GetExtendedACLResponse, error) GetExtendedACL(ctx context.Context, in *GetExtendedACLRequest, opts ...grpc.CallOption) (*GetExtendedACLResponse, error)
// Announce container used space values for P2P synchronization. // Announces the space values used by the container for P2P synchronization.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -163,7 +159,7 @@ func (c *containerServiceClient) AnnounceUsedSpace(ctx context.Context, in *Anno
type ContainerServiceServer interface { type ContainerServiceServer interface {
// `Put` invokes `Container` smart contract's `Put` method and returns // `Put` invokes `Container` smart contract's `Put` method and returns
// response immediately. After a new block is issued in sidechain, request is // response immediately. After a new block is issued in sidechain, request is
// verified by Inner Ring nodes. After one more block in sidechain, container // verified by Inner Ring nodes. After one more block in sidechain, the container
// is added into smart contract storage. // is added into smart contract storage.
// //
// Statuses: // Statuses:
@ -173,7 +169,7 @@ type ContainerServiceServer interface {
Put(context.Context, *PutRequest) (*PutResponse, error) Put(context.Context, *PutRequest) (*PutResponse, error)
// `Delete` invokes `Container` smart contract's `Delete` method and returns // `Delete` invokes `Container` smart contract's `Delete` method and returns
// response immediately. After a new block is issued in sidechain, request is // response immediately. After a new block is issued in sidechain, request is
// verified by Inner Ring nodes. After one more block in sidechain, container // verified by Inner Ring nodes. After one more block in sidechain, the container
// is added into smart contract storage. // is added into smart contract storage.
// //
// Statuses: // Statuses:
@ -198,7 +194,7 @@ type ContainerServiceServer interface {
// - Common failures (SECTION_FAILURE_COMMON). // - Common failures (SECTION_FAILURE_COMMON).
List(context.Context, *ListRequest) (*ListResponse, error) List(context.Context, *ListRequest) (*ListResponse, error)
// Invokes 'SetEACL' method of 'Container` smart contract and returns response // Invokes 'SetEACL' method of 'Container` smart contract and returns response
// immediately. After one more block in sidechain, Extended ACL changes are // immediately. After one more block in sidechain, changes in an Extended ACL are
// added into smart contract storage. // added into smart contract storage.
// //
// Statuses: // Statuses:
@ -216,7 +212,7 @@ type ContainerServiceServer interface {
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \ // - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
// container not found. // container not found.
GetExtendedACL(context.Context, *GetExtendedACLRequest) (*GetExtendedACLResponse, error) GetExtendedACL(context.Context, *GetExtendedACLRequest) (*GetExtendedACLResponse, error)
// Announce container used space values for P2P synchronization. // Announces the space values used by the container for P2P synchronization.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \

View file

@ -24,22 +24,22 @@ const (
// Container is a structure that defines object placement behaviour. Objects can // Container is a structure that defines object placement behaviour. Objects can
// be stored only within containers. They define placement rule, attributes and // be stored only within containers. They define placement rule, attributes and
// access control information. ID of the container is a 32 byte long SHA256 hash // access control information. An ID of a container is a 32 byte long SHA256 hash
// of stable-marshalled container message. // of stable-marshalled container message.
type Container struct { type Container struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Container format version. Effectively the version of API library used to // Container format version. Effectively, the version of API library used to
// create container. // create the container.
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Identifier of the container owner // Identifier of the container owner
OwnerId *grpc.OwnerID `protobuf:"bytes,2,opt,name=owner_id,json=ownerID,proto3" json:"owner_id,omitempty"` OwnerId *grpc.OwnerID `protobuf:"bytes,2,opt,name=owner_id,json=ownerID,proto3" json:"owner_id,omitempty"`
// Nonce is a 16 byte UUIDv4, used to avoid collisions of `ContainerID`s // Nonce is a 16 byte UUIDv4, used to avoid collisions of `ContainerID`s
Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
// `BasicACL` contains access control rules for owner, system, others groups // `BasicACL` contains access control rules for the owner, system and others groups,
// and permission bits for `BearerToken` and `Extended ACL` // as well as permission bits for `BearerToken` and `Extended ACL`
BasicAcl uint32 `protobuf:"varint,4,opt,name=basic_acl,json=basicACL,proto3" json:"basic_acl,omitempty"` BasicAcl uint32 `protobuf:"varint,4,opt,name=basic_acl,json=basicACL,proto3" json:"basic_acl,omitempty"`
// Attributes represent immutable container's meta data // Attributes represent immutable container's meta data
Attributes []*Container_Attribute `protobuf:"bytes,5,rep,name=attributes,proto3" json:"attributes,omitempty"` Attributes []*Container_Attribute `protobuf:"bytes,5,rep,name=attributes,proto3" json:"attributes,omitempty"`
@ -122,8 +122,8 @@ func (x *Container) GetPlacementPolicy() *grpc1.PlacementPolicy {
} }
// `Attribute` is a user-defined Key-Value metadata pair attached to the // `Attribute` is a user-defined Key-Value metadata pair attached to the
// container. Container attributes are immutable. They are set at container // container. Container attributes are immutable. They are set at the moment of
// creation and can never be added or updated. // container creation and can never be added or updated.
// //
// Key name must be a container-unique valid UTF-8 string. Value can't be // Key name must be a container-unique valid UTF-8 string. Value can't be
// empty. Containers with duplicated attribute names or attributes with empty // empty. Containers with duplicated attribute names or attributes with empty
@ -132,14 +132,20 @@ func (x *Container) GetPlacementPolicy() *grpc1.PlacementPolicy {
// There are some "well-known" attributes affecting system behaviour: // There are some "well-known" attributes affecting system behaviour:
// //
// * __NEOFS__SUBNET \ // * __NEOFS__SUBNET \
// String ID of container's storage subnet. Container can be attached to // String ID of a container's storage subnet. Any container can be attached to
// only one subnet. // one subnet only.
// * __NEOFS__NAME \ // * __NEOFS__NAME \
// String of human-friendly container name registered as the domain in // String of a human-friendly container name registered as a domain in
// NNS contract. // NNS contract.
// * __NEOFS__ZONE \ // * __NEOFS__ZONE \
// String of zone for `__NEOFS__NAME`. Used as TLD of domain name in NNS // String of a zone for `__NEOFS__NAME`. Used as a TLD of a domain name in NNS
// contract. If zone is not specified, use default zone: `container`. // contract. If no zone is specified, use default zone: `container`.
// * __NEOFS__DISABLE_HOMOMORPHIC_HASHING \
// Disables homomorphic hashing for the container if the value equals "true" string.
// Any other values are interpreted as missing attribute. Container could be
// accepted in a NeoFS network only if the global network hashing configuration
// value corresponds with that attribute's value. After container inclusion, network
// setting is ignored.
// //
// And some well-known attributes used by applications only: // And some well-known attributes used by applications only:
// //

5
lock/grpc/types.pb.go generated
View file

@ -21,9 +21,10 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
// Lock objects protects a list of objects from being deleted. Lifetime of the // Lock objects protects a list of objects from being deleted. The lifetime of a
// lock object is limited similar to regular objects in // lock object is limited similar to regular objects in
// `__NEOFS__EXPIRATION_EPOCH` attribute. // `__NEOFS__EXPIRATION_EPOCH` attribute. Lock object MUST have expiration epoch.
// It is impossible to delete a lock object via ObjectService.Delete RPC call.
type Lock struct { type Lock struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

View file

@ -22,7 +22,7 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
// Get NodeInfo structure from the particular node directly // Get NodeInfo structure directly from a particular node
type LocalNodeInfoRequest struct { type LocalNodeInfoRequest struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -162,7 +162,7 @@ func (x *LocalNodeInfoResponse) GetVerifyHeader() *grpc.ResponseVerificationHead
return nil return nil
} }
// Get NetworkInfo structure with the network view from particular node. // Get NetworkInfo structure with the network view from a particular node.
type NetworkInfoRequest struct { type NetworkInfoRequest struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: netmap/grpc/service.proto
package netmap package netmap
@ -22,11 +18,11 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type NetmapServiceClient interface { type NetmapServiceClient interface {
// Get NodeInfo structure from the particular node directly. Node information // Get NodeInfo structure from the particular node directly.
// can be taken from `Netmap` smart contract, but in some cases the one may // Node information can be taken from `Netmap` smart contract. In some cases, though,
// want to get recent information directly, or to talk to the node not yet // one may want to get recent information directly or to talk to the node not yet
// present in `Network Map` to find out what API version can be used for // present in the `Network Map` to find out what API version can be used for
// further communication. Can also be used to check if node is up and running. // further communication. This can be also used to check if a node is up and running.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): // - **OK** (0, SECTION_SUCCESS):
@ -72,11 +68,11 @@ func (c *netmapServiceClient) NetworkInfo(ctx context.Context, in *NetworkInfoRe
// All implementations should embed UnimplementedNetmapServiceServer // All implementations should embed UnimplementedNetmapServiceServer
// for forward compatibility // for forward compatibility
type NetmapServiceServer interface { type NetmapServiceServer interface {
// Get NodeInfo structure from the particular node directly. Node information // Get NodeInfo structure from the particular node directly.
// can be taken from `Netmap` smart contract, but in some cases the one may // Node information can be taken from `Netmap` smart contract. In some cases, though,
// want to get recent information directly, or to talk to the node not yet // one may want to get recent information directly or to talk to the node not yet
// present in `Network Map` to find out what API version can be used for // present in the `Network Map` to find out what API version can be used for
// further communication. Can also be used to check if node is up and running. // further communication. This can be also used to check if a node is up and running.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): // - **OK** (0, SECTION_SUCCESS):

View file

@ -104,7 +104,7 @@ func (Operation) EnumDescriptor() ([]byte, []int) {
type Clause int32 type Clause int32
const ( const (
// No modifier defined. Will select nodes from bucket randomly. // No modifier defined. Nodes will be selected from the bucket randomly
Clause_CLAUSE_UNSPECIFIED Clause = 0 Clause_CLAUSE_UNSPECIFIED Clause = 0
// SAME will select only nodes having the same value of bucket attribute // SAME will select only nodes having the same value of bucket attribute
Clause_SAME Clause = 1 Clause_SAME Clause = 1
@ -206,14 +206,14 @@ func (NodeInfo_State) EnumDescriptor() ([]byte, []int) {
return file_netmap_grpc_types_proto_rawDescGZIP(), []int{4, 0} return file_netmap_grpc_types_proto_rawDescGZIP(), []int{4, 0}
} }
// Filter will return the subset of nodes from `NetworkMap` or another filter's // This filter will return the subset of nodes from `NetworkMap` or another filter's
// results, that will satisfy filter's conditions. // results that will satisfy filter's conditions.
type Filter struct { type Filter struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Name of the filter or a reference to the named filter. '*' means // Name of the filter or a reference to a named filter. '*' means
// application to the whole unfiltered NetworkMap. At top level it's used as a // application to the whole unfiltered NetworkMap. At top level it's used as a
// filter name. At lower levels it's considered to be a reference to another // filter name. At lower levels it's considered to be a reference to another
// named filter // named filter
@ -309,7 +309,7 @@ type Selector struct {
Count uint32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` Count uint32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
// Selector modifier showing how to form a bucket // Selector modifier showing how to form a bucket
Clause Clause `protobuf:"varint,3,opt,name=clause,proto3,enum=neo.fs.v2.netmap.Clause" json:"clause,omitempty"` Clause Clause `protobuf:"varint,3,opt,name=clause,proto3,enum=neo.fs.v2.netmap.Clause" json:"clause,omitempty"`
// Attribute bucket to select from // Bucket attribute to select from
Attribute string `protobuf:"bytes,4,opt,name=attribute,proto3" json:"attribute,omitempty"` Attribute string `protobuf:"bytes,4,opt,name=attribute,proto3" json:"attribute,omitempty"`
// Filter reference to select from // Filter reference to select from
Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
@ -383,7 +383,7 @@ func (x *Selector) GetFilter() string {
} }
// Number of object replicas in a set of nodes from the defined selector. If no // Number of object replicas in a set of nodes from the defined selector. If no
// selector set the root bucket containing all possible nodes will be used by // selector set, the root bucket containing all possible nodes will be used by
// default. // default.
type Replica struct { type Replica struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -805,7 +805,7 @@ func (x *NetworkInfo) GetNetworkConfig() *NetworkConfig {
// automatically from `UN-LOCODE` attribute. // automatically from `UN-LOCODE` attribute.
// //
// For detailed description of each well-known attribute please see the // For detailed description of each well-known attribute please see the
// corresponding section in NeoFS Technical specification. // corresponding section in NeoFS Technical Specification.
type NodeInfo_Attribute struct { type NodeInfo_Attribute struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

View file

@ -513,12 +513,12 @@ func (x *HeadRequest) GetVerifyHeader() *grpc.RequestVerificationHeader {
return nil return nil
} }
// Tuple of full object header and signature of `ObjectID`. \ // Tuple of a full object header and signature of an `ObjectID`. \
// Signed `ObjectID` is present to verify full header's authenticity through the // Signed `ObjectID` is present to verify full header's authenticity through the
// following steps: // following steps:
// //
// 1. Calculate `SHA-256` of marshalled `Header` structure // 1. Calculate `SHA-256` of the marshalled `Header` structure
// 2. Check if the resulting hash matched `ObjectID` // 2. Check if the resulting hash matches `ObjectID`
// 3. Check if `ObjectID` signature in `signature` field is correct // 3. Check if `ObjectID` signature in `signature` field is correct
type HeaderWithSignature struct { type HeaderWithSignature struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -1898,13 +1898,13 @@ func (x *SearchRequest_Body) GetFilters() []*SearchRequest_Body_Filter {
return nil return nil
} }
// Filter structure checks if object header field or attribute content // Filter structure checks if the object header field or the attribute content
// matches a value. // matches a value.
// //
// If no filters set, search request will return all objects of the // If no filters are set, search request will return all objects of the
// container, including Regular object, Tombstones and Storage Group // container, including Regular object, Tombstones and Storage Group
// objects. Most human users expect to get only object they can directly // objects. Most human users expect to get only object they can directly
// work with. In that case the `$Object:ROOT` filter should be used. // work with. In that case, `$Object:ROOT` filter should be used.
// //
// By default `key` field refers to the corresponding object's `Attribute`. // By default `key` field refers to the corresponding object's `Attribute`.
// Some Object's header fields can also be accessed by adding `$Object:` // Some Object's header fields can also be accessed by adding `$Object:`
@ -1937,10 +1937,10 @@ func (x *SearchRequest_Body) GetFilters() []*SearchRequest_Body_Filter {
// properties: // properties:
// //
// * $Object:ROOT \ // * $Object:ROOT \
// Returns only `REGULAR` type objects that are not split or are the top // Returns only `REGULAR` type objects that are not split or that are the top
// level root objects in a split hierarchy. This includes objects not // level root objects in a split hierarchy. This includes objects not
// present physically, like large objects split into smaller objects // present physically, like large objects split into smaller objects
// without separate top-level root object. Other type objects like // without a separate top-level root object. Objects of other types like
// StorageGroups and Tombstones will not be shown. This filter may be // StorageGroups and Tombstones will not be shown. This filter may be
// useful for listing objects like `ls` command of some virtual file // useful for listing objects like `ls` command of some virtual file
// system. This filter is activated if the `key` exists, disregarding the // system. This filter is activated if the `key` exists, disregarding the

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: object/grpc/service.proto
package object package object
@ -23,11 +19,22 @@ const _ = grpc.SupportPackageIsVersion7
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type ObjectServiceClient interface { type ObjectServiceClient interface {
// Receive full object structure, including Headers and payload. Response uses // Receive full object structure, including Headers and payload. Response uses
// gRPC stream. First response message carries object with requested address. // gRPC stream. First response message carries the object with the requested address.
// Chunk messages are parts of the object's payload if it is needed. All // Chunk messages are parts of the object's payload if it is needed. All
// messages, except the first one, carry payload chunks. Requested object can // messages, except the first one, carry payload chunks. The requested object can
// be restored by concatenation of object message payload and all chunks // be restored by concatenation of object message payload and all chunks
// keeping receiving order. // keeping the receiving order.
//
// Extended headers can change `Get` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or
// the latest one otherwise) of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -49,7 +56,14 @@ type ObjectServiceClient interface {
// SHOULD be set. Session token SHOULD be obtained before `PUT` operation (see // SHOULD be set. Session token SHOULD be obtained before `PUT` operation (see
// session package). Chunk messages are considered by server as a part of an // session package). Chunk messages are considered by server as a part of an
// object payload. All messages, except first one, SHOULD be payload chunks. // object payload. All messages, except first one, SHOULD be payload chunks.
// Chunk messages SHOULD be sent in direct order of fragmentation. // Chunk messages SHOULD be sent in the direct order of fragmentation.
//
// Extended headers can change `Put` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -74,6 +88,13 @@ type ObjectServiceClient interface {
// Delete the object from a container. There is no immediate removal // Delete the object from a container. There is no immediate removal
// guarantee. Object will be marked for removal and deleted eventually. // guarantee. Object will be marked for removal and deleted eventually.
// //
// Extended headers can change `Delete` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// object has been successfully marked to be removed from the container; // object has been successfully marked to be removed from the container;
@ -89,7 +110,14 @@ type ObjectServiceClient interface {
Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
// Returns the object Headers without data payload. By default full header is // Returns the object Headers without data payload. By default full header is
// returned. If `main_only` request field is set, the short header with only // returned. If `main_only` request field is set, the short header with only
// the very minimal information would be returned instead. // the very minimal information will be returned instead.
//
// Extended headers can change `Head` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -110,6 +138,13 @@ type ObjectServiceClient interface {
// Header's filed values. Please see the corresponding NeoFS Technical // Header's filed values. Please see the corresponding NeoFS Technical
// Specification section for more details. // Specification section for more details.
// //
// Extended headers can change `Search` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// objects have been successfully selected; // objects have been successfully selected;
@ -123,9 +158,19 @@ type ObjectServiceClient interface {
Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (ObjectService_SearchClient, error) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (ObjectService_SearchClient, error)
// Get byte range of data payload. Range is set as an (offset, length) tuple. // Get byte range of data payload. Range is set as an (offset, length) tuple.
// Like in `Get` method, the response uses gRPC stream. Requested range can be // Like in `Get` method, the response uses gRPC stream. Requested range can be
// restored by concatenation of all received payload chunks keeping receiving // restored by concatenation of all received payload chunks keeping the receiving
// order. // order.
// //
// Extended headers can change `GetRange` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// data range of the object payload has been successfully read; // data range of the object payload has been successfully read;
@ -140,11 +185,23 @@ type ObjectServiceClient interface {
// provided session token has expired; // provided session token has expired;
// - **OBJECT_ALREADY_REMOVED** (2052, SECTION_OBJECT): \ // - **OBJECT_ALREADY_REMOVED** (2052, SECTION_OBJECT): \
// the requested object has been marked as deleted. // the requested object has been marked as deleted.
// - **OUT_OF_RANGE** (2053, SECTION_OBJECT): \
// the requested range is out of bounds.
GetRange(ctx context.Context, in *GetRangeRequest, opts ...grpc.CallOption) (ObjectService_GetRangeClient, error) GetRange(ctx context.Context, in *GetRangeRequest, opts ...grpc.CallOption) (ObjectService_GetRangeClient, error)
// Returns homomorphic or regular hash of object's payload range after // Returns homomorphic or regular hash of object's payload range after
// applying XOR operation with the provided `salt`. Ranges are set of (offset, // applying XOR operation with the provided `salt`. Ranges are set of (offset,
// length) tuples. Hashes order in response corresponds to ranges order in // length) tuples. Hashes order in response corresponds to the ranges order in
// request. Note that hash is calculated for XORed data. // the request. Note that hash is calculated for XORed data.
//
// Extended headers can change `GetRangeHash` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -156,6 +213,8 @@ type ObjectServiceClient interface {
// access to operation RANGEHASH of the object is denied; // access to operation RANGEHASH of the object is denied;
// - **OBJECT_NOT_FOUND** (2049, SECTION_OBJECT): \ // - **OBJECT_NOT_FOUND** (2049, SECTION_OBJECT): \
// object not found in container; // object not found in container;
// - **OUT_OF_RANGE** (2053, SECTION_OBJECT): \
// the requested range is out of bounds.
// - **TOKEN_EXPIRED** (4097, SECTION_SESSION): \ // - **TOKEN_EXPIRED** (4097, SECTION_SESSION): \
// provided session token has expired. // provided session token has expired.
GetRangeHash(ctx context.Context, in *GetRangeHashRequest, opts ...grpc.CallOption) (*GetRangeHashResponse, error) GetRangeHash(ctx context.Context, in *GetRangeHashRequest, opts ...grpc.CallOption) (*GetRangeHashResponse, error)
@ -331,11 +390,22 @@ func (c *objectServiceClient) GetRangeHash(ctx context.Context, in *GetRangeHash
// for forward compatibility // for forward compatibility
type ObjectServiceServer interface { type ObjectServiceServer interface {
// Receive full object structure, including Headers and payload. Response uses // Receive full object structure, including Headers and payload. Response uses
// gRPC stream. First response message carries object with requested address. // gRPC stream. First response message carries the object with the requested address.
// Chunk messages are parts of the object's payload if it is needed. All // Chunk messages are parts of the object's payload if it is needed. All
// messages, except the first one, carry payload chunks. Requested object can // messages, except the first one, carry payload chunks. The requested object can
// be restored by concatenation of object message payload and all chunks // be restored by concatenation of object message payload and all chunks
// keeping receiving order. // keeping the receiving order.
//
// Extended headers can change `Get` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or
// the latest one otherwise) of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -357,7 +427,14 @@ type ObjectServiceServer interface {
// SHOULD be set. Session token SHOULD be obtained before `PUT` operation (see // SHOULD be set. Session token SHOULD be obtained before `PUT` operation (see
// session package). Chunk messages are considered by server as a part of an // session package). Chunk messages are considered by server as a part of an
// object payload. All messages, except first one, SHOULD be payload chunks. // object payload. All messages, except first one, SHOULD be payload chunks.
// Chunk messages SHOULD be sent in direct order of fragmentation. // Chunk messages SHOULD be sent in the direct order of fragmentation.
//
// Extended headers can change `Put` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -382,6 +459,13 @@ type ObjectServiceServer interface {
// Delete the object from a container. There is no immediate removal // Delete the object from a container. There is no immediate removal
// guarantee. Object will be marked for removal and deleted eventually. // guarantee. Object will be marked for removal and deleted eventually.
// //
// Extended headers can change `Delete` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// object has been successfully marked to be removed from the container; // object has been successfully marked to be removed from the container;
@ -397,7 +481,14 @@ type ObjectServiceServer interface {
Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error)
// Returns the object Headers without data payload. By default full header is // Returns the object Headers without data payload. By default full header is
// returned. If `main_only` request field is set, the short header with only // returned. If `main_only` request field is set, the short header with only
// the very minimal information would be returned instead. // the very minimal information will be returned instead.
//
// Extended headers can change `Head` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -418,6 +509,13 @@ type ObjectServiceServer interface {
// Header's filed values. Please see the corresponding NeoFS Technical // Header's filed values. Please see the corresponding NeoFS Technical
// Specification section for more details. // Specification section for more details.
// //
// Extended headers can change `Search` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// objects have been successfully selected; // objects have been successfully selected;
@ -431,9 +529,19 @@ type ObjectServiceServer interface {
Search(*SearchRequest, ObjectService_SearchServer) error Search(*SearchRequest, ObjectService_SearchServer) error
// Get byte range of data payload. Range is set as an (offset, length) tuple. // Get byte range of data payload. Range is set as an (offset, length) tuple.
// Like in `Get` method, the response uses gRPC stream. Requested range can be // Like in `Get` method, the response uses gRPC stream. Requested range can be
// restored by concatenation of all received payload chunks keeping receiving // restored by concatenation of all received payload chunks keeping the receiving
// order. // order.
// //
// Extended headers can change `GetRange` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
//
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
// data range of the object payload has been successfully read; // data range of the object payload has been successfully read;
@ -448,11 +556,23 @@ type ObjectServiceServer interface {
// provided session token has expired; // provided session token has expired;
// - **OBJECT_ALREADY_REMOVED** (2052, SECTION_OBJECT): \ // - **OBJECT_ALREADY_REMOVED** (2052, SECTION_OBJECT): \
// the requested object has been marked as deleted. // the requested object has been marked as deleted.
// - **OUT_OF_RANGE** (2053, SECTION_OBJECT): \
// the requested range is out of bounds.
GetRange(*GetRangeRequest, ObjectService_GetRangeServer) error GetRange(*GetRangeRequest, ObjectService_GetRangeServer) error
// Returns homomorphic or regular hash of object's payload range after // Returns homomorphic or regular hash of object's payload range after
// applying XOR operation with the provided `salt`. Ranges are set of (offset, // applying XOR operation with the provided `salt`. Ranges are set of (offset,
// length) tuples. Hashes order in response corresponds to ranges order in // length) tuples. Hashes order in response corresponds to the ranges order in
// request. Note that hash is calculated for XORed data. // the request. Note that hash is calculated for XORed data.
//
// Extended headers can change `GetRangeHash` behaviour:
// * __NEOFS__NETMAP_EPOCH \
// Will use the requsted version of Network Map for object placement
// calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
// Please refer to detailed `XHeader` description.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): \ // - **OK** (0, SECTION_SUCCESS): \
@ -464,6 +584,8 @@ type ObjectServiceServer interface {
// access to operation RANGEHASH of the object is denied; // access to operation RANGEHASH of the object is denied;
// - **OBJECT_NOT_FOUND** (2049, SECTION_OBJECT): \ // - **OBJECT_NOT_FOUND** (2049, SECTION_OBJECT): \
// object not found in container; // object not found in container;
// - **OUT_OF_RANGE** (2053, SECTION_OBJECT): \
// the requested range is out of bounds.
// - **TOKEN_EXPIRED** (4097, SECTION_SESSION): \ // - **TOKEN_EXPIRED** (4097, SECTION_SESSION): \
// provided session token has expired. // provided session token has expired.
GetRangeHash(context.Context, *GetRangeHashRequest) (*GetRangeHashResponse, error) GetRangeHash(context.Context, *GetRangeHashRequest) (*GetRangeHashResponse, error)

View file

@ -23,7 +23,7 @@ const (
) )
// Type of the object payload content. Only `REGULAR` type objects can be split, // Type of the object payload content. Only `REGULAR` type objects can be split,
// hence `TOMBSTONE`, `STORAGE_GROUP` and `LOCK` payload is limited by maximal // hence `TOMBSTONE`, `STORAGE_GROUP` and `LOCK` payload is limited by the maximum
// object size. // object size.
// //
// String presentation of object type is the same as definition: // String presentation of object type is the same as definition:
@ -154,7 +154,7 @@ type ShortHeader struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Object format version. Effectively the version of API library used to // Object format version. Effectively, the version of API library used to
// create particular object. // create particular object.
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Epoch when the object was created // Epoch when the object was created
@ -259,7 +259,7 @@ type Header struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Object format version. Effectively the version of API library used to // Object format version. Effectively, the version of API library used to
// create particular object // create particular object
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Object's container // Object's container
@ -396,8 +396,8 @@ func (x *Header) GetSplit() *Header_Split {
} }
// Object structure. Object is immutable and content-addressed. It means // Object structure. Object is immutable and content-addressed. It means
// `ObjectID` will change if header or payload changes. It's calculated as a // `ObjectID` will change if the header or the payload changes. It's calculated as a
// hash of header field, which contains hash of object's payload. // hash of header field which contains hash of the object's payload.
// //
// For non-regular object types payload format depends on object type specified // For non-regular object types payload format depends on object type specified
// in the header. // in the header.
@ -476,10 +476,10 @@ func (x *Object) GetPayload() []byte {
return nil return nil
} }
// Meta information of split hierarchy for object assembly. With last part // Meta information of split hierarchy for object assembly. With the last part
// one can traverse linked list of split hierarchy back to first part and // one can traverse linked list of split hierarchy back to the first part and
// assemble original object. With linking object one can assembly object // assemble the original object. With a linking object one can assemble an object
// straight away from the object parts. // right from the object parts.
type SplitInfo struct { type SplitInfo struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -487,11 +487,11 @@ type SplitInfo struct {
// 16 byte UUID used to identify the split object hierarchy parts. // 16 byte UUID used to identify the split object hierarchy parts.
SplitId []byte `protobuf:"bytes,1,opt,name=split_id,json=splitId,proto3" json:"split_id,omitempty"` SplitId []byte `protobuf:"bytes,1,opt,name=split_id,json=splitId,proto3" json:"split_id,omitempty"`
// Identifier of the last object in split hierarchy parts. It contains // The identifier of the last object in split hierarchy parts. It contains
// split header with original object header. // split header with the original object header.
LastPart *grpc.ObjectID `protobuf:"bytes,2,opt,name=last_part,json=lastPart,proto3" json:"last_part,omitempty"` LastPart *grpc.ObjectID `protobuf:"bytes,2,opt,name=last_part,json=lastPart,proto3" json:"last_part,omitempty"`
// Identifier of linking object for split hierarchy parts. It contains // The identifier of a linking object for split hierarchy parts. It contains
// split header with original object header and sorted list of // split header with the original object header and a sorted list of
// object parts. // object parts.
Link *grpc.ObjectID `protobuf:"bytes,3,opt,name=link,proto3" json:"link,omitempty"` Link *grpc.ObjectID `protobuf:"bytes,3,opt,name=link,proto3" json:"link,omitempty"`
} }
@ -549,10 +549,10 @@ func (x *SplitInfo) GetLink() *grpc.ObjectID {
return nil return nil
} }
// `Attribute` is a user-defined Key-Value metadata pair attached to the // `Attribute` is a user-defined Key-Value metadata pair attached to an
// object. // object.
// //
// Key name must be a object-unique valid UTF-8 string. Value can't be empty. // Key name must be an object-unique valid UTF-8 string. Value can't be empty.
// Objects with duplicated attribute names or attributes with empty values // Objects with duplicated attribute names or attributes with empty values
// will be considered invalid. // will be considered invalid.
// //
@ -583,7 +583,7 @@ func (x *SplitInfo) GetLink() *grpc.ObjectID {
// MIME Content Type of object's payload // MIME Content Type of object's payload
// //
// For detailed description of each well-known attribute please see the // For detailed description of each well-known attribute please see the
// corresponding section in NeoFS Technical specification. // corresponding section in NeoFS Technical Specification.
type Header_Attribute struct { type Header_Attribute struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

24
refs/grpc/types.pb.go generated
View file

@ -124,7 +124,7 @@ func (ChecksumType) EnumDescriptor() ([]byte, []int) {
// Objects in NeoFS are addressed by their ContainerID and ObjectID. // Objects in NeoFS are addressed by their ContainerID and ObjectID.
// //
// String presentation of `Address` is the concatenation of string encoded // String presentation of `Address` is a concatenation of string encoded
// `ContainerID` and `ObjectID` delimited by '/' character. // `ContainerID` and `ObjectID` delimited by '/' character.
type Address struct { type Address struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -184,17 +184,17 @@ func (x *Address) GetObjectId() *ObjectID {
} }
// NeoFS Object unique identifier. Objects are immutable and content-addressed. // NeoFS Object unique identifier. Objects are immutable and content-addressed.
// It means `ObjectID` will change if `header` or `payload` changes. // It means `ObjectID` will change if the `header` or the `payload` changes.
// //
// `ObjectID` is a 32 byte long // `ObjectID` is a 32 byte long
// [SHA256](https://csrc.nist.gov/publications/detail/fips/180/4/final) hash of // [SHA256](https://csrc.nist.gov/publications/detail/fips/180/4/final) hash of
// object's `header` field, which, in it's turn, contains hash of object's // the object's `header` field, which, in it's turn, contains the hash of the object's
// payload. // payload.
// //
// String presentation is // String presentation is a
// [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string. // [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string.
// //
// JSON value will be the data encoded as a string using standard base64 // JSON value will be data encoded as a string using standard base64
// encoding with paddings. Either // encoding with paddings. Either
// [standard](https://tools.ietf.org/html/rfc4648#section-4) or // [standard](https://tools.ietf.org/html/rfc4648#section-4) or
// [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding // [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding
@ -254,10 +254,10 @@ func (x *ObjectID) GetValue() []byte {
// [SHA256](https://csrc.nist.gov/publications/detail/fips/180/4/final) hash of // [SHA256](https://csrc.nist.gov/publications/detail/fips/180/4/final) hash of
// stable-marshalled container message. // stable-marshalled container message.
// //
// String presentation is // String presentation is a
// [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string. // [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string.
// //
// JSON value will be the data encoded as a string using standard base64 // JSON value will be data encoded as a string using standard base64
// encoding with paddings. Either // encoding with paddings. Either
// [standard](https://tools.ietf.org/html/rfc4648#section-4) or // [standard](https://tools.ietf.org/html/rfc4648#section-4) or
// [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding // [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding
@ -317,10 +317,10 @@ func (x *ContainerID) GetValue() []byte {
// `OwnerID` is a 25 bytes sequence starting with Neo version prefix byte // `OwnerID` is a 25 bytes sequence starting with Neo version prefix byte
// followed by 20 bytes of ScrptHash and 4 bytes of checksum. // followed by 20 bytes of ScrptHash and 4 bytes of checksum.
// //
// String presentation is [Base58 // String presentation is a [Base58
// Check](https://en.bitcoin.it/wiki/Base58Check_encoding) Encoded string. // Check](https://en.bitcoin.it/wiki/Base58Check_encoding) Encoded string.
// //
// JSON value will be the data encoded as a string using standard base64 // JSON value will be data encoded as a string using standard base64
// encoding with paddings. Either // encoding with paddings. Either
// [standard](https://tools.ietf.org/html/rfc4648#section-4) or // [standard](https://tools.ietf.org/html/rfc4648#section-4) or
// [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding // [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding
@ -377,7 +377,7 @@ func (x *OwnerID) GetValue() []byte {
// //
// String representation of a value is base-10 integer. // String representation of a value is base-10 integer.
// //
// JSON representation is an object containing single `value` number field. // JSON representation is an object containing a single `value` number field.
type SubnetID struct { type SubnetID struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -429,7 +429,7 @@ func (x *SubnetID) GetValue() uint32 {
// API version used by a node. // API version used by a node.
// //
// String presentation is a Semantic Versioning 2.0.0 compatible version string // String presentation is a Semantic Versioning 2.0.0 compatible version string
// with 'v' prefix. I.e. `vX.Y`, where `X` - major number, `Y` - minor number. // with 'v' prefix. i.e. `vX.Y`, where `X` is the major number, `Y` is the minor number.
type Version struct { type Version struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -613,7 +613,7 @@ func (x *SignatureRFC6979) GetSign() []byte {
} }
// Checksum message. // Checksum message.
// Depending on checksum algorithm type the string presentation may vary: // Depending on checksum algorithm type, the string presentation may vary:
// //
// * TZ \ // * TZ \
// Hex encoded string without `0x` prefix // Hex encoded string without `0x` prefix

View file

@ -91,7 +91,7 @@ func (x *AnnounceLocalTrustRequest) GetVerifyHeader() *grpc.RequestVerificationH
return nil return nil
} }
// Node's local trust information announce response. // Node's local trust information announcement response.
type AnnounceLocalTrustResponse struct { type AnnounceLocalTrustResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -231,7 +231,7 @@ func (x *AnnounceIntermediateResultRequest) GetVerifyHeader() *grpc.RequestVerif
return nil return nil
} }
// Intermediate global trust information announce response. // Intermediate global trust information announcement response.
type AnnounceIntermediateResultResponse struct { type AnnounceIntermediateResultResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -311,7 +311,7 @@ type AnnounceLocalTrustRequest_Body struct {
Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
// List of normalized local trust values to other NeoFS nodes. The value // List of normalized local trust values to other NeoFS nodes. The value
// is calculated according to EigenTrust++ algorithm and must be a // is calculated according to EigenTrust++ algorithm and must be a
// floating point number in the [0;1] range. // floating point number in [0;1] range.
Trusts []*Trust `protobuf:"bytes,2,rep,name=trusts,proto3" json:"trusts,omitempty"` Trusts []*Trust `protobuf:"bytes,2,rep,name=trusts,proto3" json:"trusts,omitempty"`
} }
@ -361,9 +361,9 @@ func (x *AnnounceLocalTrustRequest_Body) GetTrusts() []*Trust {
return nil return nil
} }
// Response to the node's local trust information announce has an empty body // Response to the node's local trust information announcement has an empty body
// because the trust exchange operation is asynchronous. If Trust information // because the trust exchange operation is asynchronous. If Trust information
// will not pass sanity checks it is silently ignored. // does not pass sanity checks, it is silently ignored.
type AnnounceLocalTrustResponse_Body struct { type AnnounceLocalTrustResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -469,9 +469,9 @@ func (x *AnnounceIntermediateResultRequest_Body) GetTrust() *PeerToPeerTrust {
return nil return nil
} }
// Response to the node's intermediate global trust information announce has // Response to the node's intermediate global trust information announcement has
// an empty body because the trust exchange operation is asynchronous. If // an empty body because the trust exchange operation is asynchronous. If
// Trust information will not pass sanity checks it is silently ignored. // Trust information does not pass sanity checks, it is silently ignored.
type AnnounceIntermediateResultResponse_Body struct { type AnnounceIntermediateResultResponse_Body struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: reputation/grpc/service.proto
package reputation package reputation
@ -29,7 +25,7 @@ type ReputationServiceClient interface {
// local trust has been successfully announced; // local trust has been successfully announced;
// - Common failures (SECTION_FAILURE_COMMON). // - Common failures (SECTION_FAILURE_COMMON).
AnnounceLocalTrust(ctx context.Context, in *AnnounceLocalTrustRequest, opts ...grpc.CallOption) (*AnnounceLocalTrustResponse, error) AnnounceLocalTrust(ctx context.Context, in *AnnounceLocalTrustRequest, opts ...grpc.CallOption) (*AnnounceLocalTrustResponse, error)
// Announces the intermediate result of the iterative algorithm for // Announce the intermediate result of the iterative algorithm for
// calculating the global reputation of the node in NeoFS network. // calculating the global reputation of the node in NeoFS network.
// //
// Statuses: // Statuses:
@ -76,7 +72,7 @@ type ReputationServiceServer interface {
// local trust has been successfully announced; // local trust has been successfully announced;
// - Common failures (SECTION_FAILURE_COMMON). // - Common failures (SECTION_FAILURE_COMMON).
AnnounceLocalTrust(context.Context, *AnnounceLocalTrustRequest) (*AnnounceLocalTrustResponse, error) AnnounceLocalTrust(context.Context, *AnnounceLocalTrustRequest) (*AnnounceLocalTrustResponse, error)
// Announces the intermediate result of the iterative algorithm for // Announce the intermediate result of the iterative algorithm for
// calculating the global reputation of the node in NeoFS network. // calculating the global reputation of the node in NeoFS network.
// //
// Statuses: // Statuses:

View file

@ -21,13 +21,13 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
// NeoFS unique peer identifier is 33 byte long compressed public key of the // NeoFS unique peer identifier is a 33 byte long compressed public key of the
// node, the same as the one stored in the network map. // node, the same as the one stored in the network map.
// //
// String presentation is // String presentation is a
// [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string. // [base58](https://tools.ietf.org/html/draft-msporny-base58-02) encoded string.
// //
// JSON value will be the data encoded as a string using standard base64 // JSON value will be data encoded as a string using standard base64
// encoding with paddings. Either // encoding with paddings. Either
// [standard](https://tools.ietf.org/html/rfc4648#section-4) or // [standard](https://tools.ietf.org/html/rfc4648#section-4) or
// [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding // [URL-safe](https://tools.ietf.org/html/rfc4648#section-5) base64 encoding
@ -202,7 +202,7 @@ type GlobalTrust struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Message format version. Effectively the version of API library used to create // Message format version. Effectively, the version of API library used to create
// the message. // the message.
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// Message body // Message body

View file

@ -27,7 +27,7 @@ type CreateRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Body of create session token request message. // Body of a create session token request message.
Body *CreateRequest_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` Body *CreateRequest_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
// Carries request meta information. Header data is used only to regulate // Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution. // message transport and does not affect request execution.

View file

@ -1,8 +1,4 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT. // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.19.4
// source: session/grpc/service.proto
package session package session
@ -22,7 +18,7 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type SessionServiceClient interface { type SessionServiceClient interface {
// Opens a new session between two peers. // Open a new session between two peers.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): // - **OK** (0, SECTION_SUCCESS):
@ -52,7 +48,7 @@ func (c *sessionServiceClient) Create(ctx context.Context, in *CreateRequest, op
// All implementations should embed UnimplementedSessionServiceServer // All implementations should embed UnimplementedSessionServiceServer
// for forward compatibility // for forward compatibility
type SessionServiceServer interface { type SessionServiceServer interface {
// Opens a new session between two peers. // Open a new session between two peers.
// //
// Statuses: // Statuses:
// - **OK** (0, SECTION_SUCCESS): // - **OK** (0, SECTION_SUCCESS):

View file

@ -340,10 +340,10 @@ func (x *SessionToken) GetSignature() *grpc.Signature {
return nil return nil
} }
// Extended headers for Request/Response. May contain any user-defined headers // Extended headers for Request/Response. They may contain any user-defined headers
// to be interpreted on application level. // to be interpreted on application level.
// //
// Key name must be unique valid UTF-8 string. Value can't be empty. Requests or // Key name must be a unique valid UTF-8 string. Value can't be empty. Requests or
// Responses with duplicated header names or headers with empty values will be // Responses with duplicated header names or headers with empty values will be
// considered invalid. // considered invalid.
// //
@ -356,9 +356,9 @@ func (x *SessionToken) GetSignature() *grpc.Signature {
// current epoch only will be used. // current epoch only will be used.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \ // * __NEOFS__NETMAP_LOOKUP_DEPTH \
// If object can't be found using current epoch's netmap, this header limits // If object can't be found using current epoch's netmap, this header limits
// how many past epochs back the node can lookup. The `value` is string // how many past epochs the node can look up through. The `value` is string
// encoded `uint64` in decimal presentation. If set to '0' or not set, the // encoded `uint64` in decimal presentation. If set to '0' or not set, only the
// current epoch only will be used. // current epoch will be used.
type XHeader struct { type XHeader struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -624,13 +624,13 @@ func (x *ResponseMetaHeader) GetStatus() *grpc2.Status {
return nil return nil
} }
// Verification info for request signed by all intermediate nodes. // Verification info for the request signed by all intermediate nodes.
type RequestVerificationHeader struct { type RequestVerificationHeader struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Request Body signature. Should be generated once by request initiator. // Request Body signature. Should be generated once by the request initiator.
BodySignature *grpc.Signature `protobuf:"bytes,1,opt,name=body_signature,json=bodySignature,proto3" json:"body_signature,omitempty"` BodySignature *grpc.Signature `protobuf:"bytes,1,opt,name=body_signature,json=bodySignature,proto3" json:"body_signature,omitempty"`
// Request Meta signature is added and signed by each intermediate node // Request Meta signature is added and signed by each intermediate node
MetaSignature *grpc.Signature `protobuf:"bytes,2,opt,name=meta_signature,json=metaSignature,proto3" json:"meta_signature,omitempty"` MetaSignature *grpc.Signature `protobuf:"bytes,2,opt,name=meta_signature,json=metaSignature,proto3" json:"meta_signature,omitempty"`
@ -700,13 +700,13 @@ func (x *RequestVerificationHeader) GetOrigin() *RequestVerificationHeader {
return nil return nil
} }
// Verification info for response signed by all intermediate nodes // Verification info for the response signed by all intermediate nodes
type ResponseVerificationHeader struct { type ResponseVerificationHeader struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Response Body signature. Should be generated once by answering node. // Response Body signature. Should be generated once by an answering node.
BodySignature *grpc.Signature `protobuf:"bytes,1,opt,name=body_signature,json=bodySignature,proto3" json:"body_signature,omitempty"` BodySignature *grpc.Signature `protobuf:"bytes,1,opt,name=body_signature,json=bodySignature,proto3" json:"body_signature,omitempty"`
// Response Meta signature is added and signed by each intermediate node // Response Meta signature is added and signed by each intermediate node
MetaSignature *grpc.Signature `protobuf:"bytes,2,opt,name=meta_signature,json=metaSignature,proto3" json:"meta_signature,omitempty"` MetaSignature *grpc.Signature `protobuf:"bytes,2,opt,name=meta_signature,json=metaSignature,proto3" json:"meta_signature,omitempty"`

View file

@ -198,6 +198,8 @@ const (
Object_LOCK_NON_REGULAR_OBJECT Object = 3 Object_LOCK_NON_REGULAR_OBJECT Object = 3
// [**2052**] Object has been marked deleted. // [**2052**] Object has been marked deleted.
Object_OBJECT_ALREADY_REMOVED Object = 4 Object_OBJECT_ALREADY_REMOVED Object = 4
// [**2053**] Invalid range has been requested for an object.
Object_OUT_OF_RANGE Object = 5
) )
// Enum value maps for Object. // Enum value maps for Object.
@ -208,6 +210,7 @@ var (
2: "LOCKED", 2: "LOCKED",
3: "LOCK_NON_REGULAR_OBJECT", 3: "LOCK_NON_REGULAR_OBJECT",
4: "OBJECT_ALREADY_REMOVED", 4: "OBJECT_ALREADY_REMOVED",
5: "OUT_OF_RANGE",
} }
Object_value = map[string]int32{ Object_value = map[string]int32{
"ACCESS_DENIED": 0, "ACCESS_DENIED": 0,
@ -215,6 +218,7 @@ var (
"LOCKED": 2, "LOCKED": 2,
"LOCK_NON_REGULAR_OBJECT": 3, "LOCK_NON_REGULAR_OBJECT": 3,
"OBJECT_ALREADY_REMOVED": 4, "OBJECT_ALREADY_REMOVED": 4,
"OUT_OF_RANGE": 5,
} }
) )
@ -357,12 +361,12 @@ func (Session) EnumDescriptor() ([]byte, []int) {
// //
// All outcomes are divided into successful and failed, which corresponds // All outcomes are divided into successful and failed, which corresponds
// to the success or failure of the operation. The definition of success // to the success or failure of the operation. The definition of success
// follows from the semantics of RPC and the description of its purpose. // follows the semantics of RPC and the description of its purpose.
// The server must not attach code that is the opposite of outcome type. // The server must not attach code that is the opposite of the outcome type.
// //
// See the set of return codes in the description for calls. // See the set of return codes in the description for calls.
// //
// Each status can carry developer-facing error message. It should be human // Each status can carry a developer-facing error message. It should be a human
// readable text in English. The server should not transmit (and the client // readable text in English. The server should not transmit (and the client
// should not expect) useful information in the message. Field `details` // should not expect) useful information in the message. Field `details`
// should make the return more detailed. // should make the return more detailed.
@ -523,26 +527,27 @@ var file_status_grpc_types_proto_rawDesc = []byte{
0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x12, 0x0c, 0x0a, 0x08, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x12, 0x0c, 0x0a, 0x08,
0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x57, 0x52,
0x4f, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x47, 0x49, 0x43, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x47, 0x49, 0x43, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52,
0x10, 0x01, 0x2a, 0x76, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x10, 0x01, 0x2a, 0x88, 0x01, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x11, 0x0a,
0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x00,
0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46,
0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44,
0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x52,
0x47, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x1a, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12,
0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44,
0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x24, 0x0a, 0x09, 0x43, 0x6f, 0x59, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x2a, 0x24, 0x0a,
0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x00, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f,
0x2a, 0x31, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e,
0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x2a, 0x31, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13,
0x12, 0x11, 0x0a, 0x0d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x0a, 0x0f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e,
0x44, 0x10, 0x01, 0x42, 0x56, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x45, 0x58, 0x50,
0x6d, 0x2f, 0x6e, 0x73, 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x52, 0x45, 0x44, 0x10, 0x01, 0x42, 0x56, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x73, 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x6e,
0x75, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xaa, 0x02, 0x65, 0x6f, 0x66, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73,
0x1a, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x73, 0x74, 0x61, 0x74, 0x75,
0x2e, 0x41, 0x50, 0x49, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x73, 0xaa, 0x02, 0x1a, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72,
0x74, 0x6f, 0x33, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x50, 0x49, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View file

@ -22,9 +22,15 @@ const (
) )
// StorageGroup keeps verification information for Data Audit sessions. Objects // StorageGroup keeps verification information for Data Audit sessions. Objects
// that require payed storage guaranties are gathered in `StorageGroups` with // that require paid storage guarantees are gathered in `StorageGroups` with
// additional information used for proof of storage. `StorageGroup` only // additional information used for the proof of storage. `StorageGroup` only
// contains objects from the same container. // contains objects from the same container.
//
// Being an object payload, StorageGroup may have expiration Epoch set with
// `__NEOFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup
// will be ignored by InnerRing nodes during Data Audit cycles and will be
// deleted by Storage Nodes.
//
type StorageGroup struct { type StorageGroup struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -36,9 +42,11 @@ type StorageGroup struct {
// group members. The order of concatenation is the same as the order of the // group members. The order of concatenation is the same as the order of the
// members in the `members` field. // members in the `members` field.
ValidationHash *grpc.Checksum `protobuf:"bytes,2,opt,name=validation_hash,json=validationHash,proto3" json:"validation_hash,omitempty"` ValidationHash *grpc.Checksum `protobuf:"bytes,2,opt,name=validation_hash,json=validationHash,proto3" json:"validation_hash,omitempty"`
// Last NeoFS epoch number of the storage group lifetime // DEPRECATED. Last NeoFS epoch number of the storage group lifetime
//
// Deprecated: Do not use.
ExpirationEpoch uint64 `protobuf:"varint,3,opt,name=expiration_epoch,json=expirationEpoch,proto3" json:"expiration_epoch,omitempty"` ExpirationEpoch uint64 `protobuf:"varint,3,opt,name=expiration_epoch,json=expirationEpoch,proto3" json:"expiration_epoch,omitempty"`
// Strictly ordered list of storage group member objects // Strictly ordered list of storage group member objects. Members MUST be unique
Members []*grpc.ObjectID `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"` Members []*grpc.ObjectID `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"`
} }
@ -88,6 +96,7 @@ func (x *StorageGroup) GetValidationHash() *grpc.Checksum {
return nil return nil
} }
// Deprecated: Do not use.
func (x *StorageGroup) GetExpirationEpoch() uint64 { func (x *StorageGroup) GetExpirationEpoch() uint64 {
if x != nil { if x != nil {
return x.ExpirationEpoch return x.ExpirationEpoch
@ -109,7 +118,7 @@ var file_storagegroup_grpc_types_proto_rawDesc = []byte{
0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x16, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x16, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61,
0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73, 0x2f, 0x67, 0x72, 0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73, 0x2f, 0x67, 0x72,
0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe2, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe6,
0x01, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
0x30, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x30, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61,
0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x76, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x76,
@ -118,20 +127,20 @@ var file_storagegroup_grpc_types_proto_rawDesc = []byte{
0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f,
0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63,
0x6b, 0x73, 0x75, 0x6d, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x48, 0x61, 0x73, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02,
0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x18, 0x01, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70,
0x32, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04,
0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32,
0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x52, 0x07,
0x65, 0x72, 0x73, 0x42, 0x68, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x68, 0x5a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75,
0x6d, 0x2f, 0x6e, 0x73, 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x65, 0x6f, 0x66, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x73, 0x70, 0x63, 0x63, 0x2d, 0x64, 0x65, 0x76, 0x2f,
0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f,
0x61, 0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x73, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0xaa, 0x02, 0x20, 0x4e, 0x65, 0x6f, 0x63, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0xaa, 0x02,
0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x50, 0x49, 0x20, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x62, 0x06, 0x70, 0x2e, 0x41, 0x50, 0x49, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75,
0x72, 0x6f, 0x74, 0x6f, 0x33, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View file

@ -21,20 +21,20 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
) )
// Tombstone keeps record of deleted objects for few epochs until they are // Tombstone keeps record of deleted objects for a few epochs until they are
// purged from the NeoFS network. // purged from the NeoFS network.
type Tombstone struct { type Tombstone struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Last NeoFS epoch number of the tombstone lifetime. It's set by tombstone // Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone
// creator depending on current NeoFS network settings. Tombstone object // creator depending on the current NeoFS network settings. A tombstone object
// must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH` // must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH`
// attribute. Otherwise tombstone will be rejected by storage node. // attribute. Otherwise, the tombstone will be rejected by a storage node.
ExpirationEpoch uint64 `protobuf:"varint,1,opt,name=expiration_epoch,json=expirationEpoch,proto3" json:"expiration_epoch,omitempty"` ExpirationEpoch uint64 `protobuf:"varint,1,opt,name=expiration_epoch,json=expirationEpoch,proto3" json:"expiration_epoch,omitempty"`
// 16 byte UUID used to identify the split object hierarchy parts. Must be // 16 byte UUID used to identify the split object hierarchy parts. Must be
// unique inside container. All objects participating in the split must // unique inside a container. All objects participating in the split must
// have the same `split_id` value. // have the same `split_id` value.
SplitId []byte `protobuf:"bytes,2,opt,name=split_id,json=splitID,proto3" json:"split_id,omitempty"` SplitId []byte `protobuf:"bytes,2,opt,name=split_id,json=splitID,proto3" json:"split_id,omitempty"`
// List of objects to be deleted. // List of objects to be deleted.