Compare commits

...

4 commits

Author SHA1 Message Date
fc393d4605 [#16] Add Issue Template
Add bug report and feature request templates

Signed-off-by: Liza <e.chichindaeva@yadro.com>
2023-03-23 12:14:27 +03:00
5fd4059061 [#14] Rename __FROSTFS__ to __SYSTEM__
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-03-14 10:24:35 +03:00
3adb55c38a [#12] Add __FROSTFS__ system prefix
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-03-07 15:40:40 +03:00
eafcbff11f Rename go package names
Due to source code relocation from GitHub.

Signed-off-by: Alex Vanin <a.vanin@yadro.com>
2023-03-07 11:50:02 +03:00
31 changed files with 199 additions and 86 deletions

45
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,45 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: community, triage, bug
assignees: ''
---
<!--- Provide a general summary of the issue in the Title above -->
## Expected Behavior
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
## Current Behavior
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
## Possible Solution
<!--- Not obligatory -->
<!--- If no reason/fix/additions for the bug can be suggested, -->
<!--- uncomment the following phrase: -->
<!--- No fix can be suggested by a QA engineer. Further solutions shall be up to developers. -->
## Steps to Reproduce (for bugs)
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. -->
1.
## Context
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Regression
<!-- Is this issue a regression? (Yes / No) -->
<!-- If Yes, optionally please include version or commit id or PR# that caused this regression, if you have these details. -->
## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
* Version used:
* Server setup and configuration:
* Operating System and version (`uname -a`):

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1 @@
blank_issues_enabled: false

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: community, triage
assignees: ''
---
## Is your feature request related to a problem? Please describe.
<!--- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
## Describe the solution you'd like
<!--- A clear and concise description of what you want to happen. -->
## Describe alternatives you've considered
<!--- A clear and concise description of any alternative solutions or features you've considered. -->
## Additional context
<!--- Add any other context or screenshots about the feature request here. -->

View file

@ -1,5 +1,10 @@
# Changelog # Changelog
## [Unreleased]
### Changed
- Add `__SYSTEM__` attribute prefix (#12, #14)
## [2.14.0] - 2022-09-23 - Anmado (안마도, 鞍馬島) ## [2.14.0] - 2022-09-23 - Anmado (안마도, 鞍馬島)
### Added ### Added

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.accounting; package neo.fs.v2.accounting;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
option csharp_namespace = "Neo.FileStorage.API.Accounting"; option csharp_namespace = "Neo.FileStorage.API.Accounting";
import "accounting/types.proto"; import "accounting/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.accounting; package neo.fs.v2.accounting;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
option csharp_namespace = "Neo.FileStorage.API.Accounting"; option csharp_namespace = "Neo.FileStorage.API.Accounting";
// Standard floating point data type can't be used in NeoFS due to inexactness // Standard floating point data type can't be used in NeoFS due to inexactness

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.acl; package neo.fs.v2.acl;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/acl/grpc;acl"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc;acl";
option csharp_namespace = "Neo.FileStorage.API.Acl"; option csharp_namespace = "Neo.FileStorage.API.Acl";
import "refs/types.proto"; import "refs/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.audit; package neo.fs.v2.audit;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/audit/grpc;audit"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit/grpc;audit";
option csharp_namespace = "Neo.FileStorage.API.Audit"; option csharp_namespace = "Neo.FileStorage.API.Audit";
import "refs/types.proto"; import "refs/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.container; package neo.fs.v2.container;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/container/grpc;container"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
option csharp_namespace = "Neo.FileStorage.API.Container"; option csharp_namespace = "Neo.FileStorage.API.Container";
import "acl/types.proto"; import "acl/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.container; package neo.fs.v2.container;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/container/grpc;container"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
option csharp_namespace = "Neo.FileStorage.API.Container"; option csharp_namespace = "Neo.FileStorage.API.Container";
import "netmap/types.proto"; import "netmap/types.proto";
@ -37,16 +37,20 @@ message Container {
// //
// There are some "well-known" attributes affecting system behaviour: // There are some "well-known" attributes affecting system behaviour:
// //
// * __NEOFS__SUBNET \ // * [ __SYSTEM__SUBNET ] \
// (`__NEOFS__SUBNET` is deprecated) \
// String ID of a container's storage subnet. Any container can be attached to // String ID of a container's storage subnet. Any container can be attached to
// one subnet only. // one subnet only.
// * __NEOFS__NAME \ // * [ __SYSTEM__NAME ] \
// (`__NEOFS__NAME` is deprecated) \
// String of a human-friendly container name registered as a domain in // String of a human-friendly container name registered as a domain in
// NNS contract. // NNS contract.
// * __NEOFS__ZONE \ // * [ __SYSTEM__ZONE ] \
// String of a zone for `__NEOFS__NAME`. Used as a TLD of a domain name in NNS // (`__NEOFS__ZONE` is deprecated) \
// String of a zone for `__SYSTEM__NAME` (`__NEOFS__NAME` is deprecated). Used as a TLD of a domain name in NNS
// contract. If no zone is specified, use default zone: `container`. // contract. If no zone is specified, use default zone: `container`.
// * __NEOFS__DISABLE_HOMOMORPHIC_HASHING \ // * [ __SYSTEM__DISABLE_HOMOMORPHIC_HASHING ] \
// (`__NEOFS__DISABLE_HOMOMORPHIC_HASHING` is deprecated) \
// Disables homomorphic hashing for the container if the value equals "true" string. // Disables homomorphic hashing for the container if the value equals "true" string.
// Any other values are interpreted as missing attribute. Container could be // Any other values are interpreted as missing attribute. Container could be
// accepted in a NeoFS network only if the global network hashing configuration // accepted in a NeoFS network only if the global network hashing configuration

View file

@ -2,14 +2,14 @@ syntax = "proto3";
package neo.fs.v2.lock; package neo.fs.v2.lock;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/lock/grpc;lock"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/lock/grpc;lock";
option csharp_namespace = "Neo.FileStorage.API.Lock"; option csharp_namespace = "Neo.FileStorage.API.Lock";
import "refs/types.proto"; import "refs/types.proto";
// Lock objects protects a list of objects from being deleted. The lifetime of a // 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. Lock object MUST have expiration epoch. // `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) attribute. Lock object MUST have expiration epoch.
// It is impossible to delete a lock object via ObjectService.Delete RPC call. // It is impossible to delete a lock object via ObjectService.Delete RPC call.
message Lock { message Lock {
// List of objects to lock. Must not be empty or carry empty IDs. // List of objects to lock. Must not be empty or carry empty IDs.

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.netmap; package neo.fs.v2.netmap;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
option csharp_namespace = "Neo.FileStorage.API.Netmap"; option csharp_namespace = "Neo.FileStorage.API.Netmap";
import "netmap/types.proto"; import "netmap/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.netmap; package neo.fs.v2.netmap;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
option csharp_namespace = "Neo.FileStorage.API.Netmap"; option csharp_namespace = "Neo.FileStorage.API.Netmap";
import "refs/types.proto"; import "refs/types.proto";
@ -164,7 +164,8 @@ message NodeInfo {
// attributes it's a string presenting floating point number with comma or // attributes it's a string presenting floating point number with comma or
// point delimiter for decimal part. In the Network Map it will be saved as // point delimiter for decimal part. In the Network Map it will be saved as
// 64-bit unsigned integer representing number of minimal token fractions. // 64-bit unsigned integer representing number of minimal token fractions.
// * __NEOFS__SUBNET_%s \ // * [ __SYSTEM__SUBNET_%s ] \
// (`__NEOFS__SUBNET_%s` is deprecated) \
// `True` or `False`. Defines if the node is included in the `%s` subnetwork // `True` or `False`. Defines if the node is included in the `%s` subnetwork
// or not. `%s` must be an existing subnetwork's ID (non-negative integer number). // or not. `%s` must be an existing subnetwork's ID (non-negative integer number).
// A node can be included in more than one subnetwork and, therefore, can contain // A node can be included in more than one subnetwork and, therefore, can contain

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.object; package neo.fs.v2.object;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/object/grpc;object"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
option csharp_namespace = "Neo.FileStorage.API.Object"; option csharp_namespace = "Neo.FileStorage.API.Object";
import "object/types.proto"; import "object/types.proto";
@ -20,11 +20,13 @@ service ObjectService {
// keeping the receiving order. // keeping the receiving order.
// //
// Extended headers can change `Get` behaviour: // Extended headers can change `Get` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requsted version of Network Map for object placement // Will use the requsted version of Network Map for object placement
// calculation. // calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \ // * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or // (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions (starting from `__SYSTEM__NETMAP_EPOCH` (`__NEOFS__NETMAP_EPOCH` is deprecated) if specified or
// the latest one otherwise) of Network Map to find an object until the depth // the latest one otherwise) of Network Map to find an object until the depth
// limit is reached. // limit is reached.
// //
@ -54,7 +56,8 @@ service ObjectService {
// Chunk messages SHOULD be sent in the direct order of fragmentation. // Chunk messages SHOULD be sent in the direct order of fragmentation.
// //
// Extended headers can change `Put` behaviour: // Extended headers can change `Put` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requsted version of Network Map for object placement // Will use the requsted version of Network Map for object placement
// calculation. // calculation.
// //
@ -85,8 +88,9 @@ service ObjectService {
// 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: // Extended headers can change `Delete` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// Will use the requsted version of Network Map for object placement // (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation. // calculation.
// //
// Please refer to detailed `XHeader` description. // Please refer to detailed `XHeader` description.
@ -110,8 +114,9 @@ service ObjectService {
// the very minimal information will be returned instead. // the very minimal information will be returned instead.
// //
// Extended headers can change `Head` behaviour: // Extended headers can change `Head` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// Will use the requsted version of Network Map for object placement // (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation. // calculation.
// //
// Please refer to detailed `XHeader` description. // Please refer to detailed `XHeader` description.
@ -137,8 +142,9 @@ service ObjectService {
// Specification section for more details. // Specification section for more details.
// //
// Extended headers can change `Search` behaviour: // Extended headers can change `Search` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// Will use the requsted version of Network Map for object placement // (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation. // calculation.
// //
// Please refer to detailed `XHeader` description. // Please refer to detailed `XHeader` description.
@ -161,10 +167,12 @@ service ObjectService {
// order. // order.
// //
// Extended headers can change `GetRange` behaviour: // Extended headers can change `GetRange` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// Will use the requsted version of Network Map for object placement // (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation. // calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \ // * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions of Network Map to find an object until the depth // Will try older versions of Network Map to find an object until the depth
// limit is reached. // limit is reached.
// //
@ -194,10 +202,12 @@ service ObjectService {
// the 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: // Extended headers can change `GetRangeHash` behaviour:
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// Will use the requsted version of Network Map for object placement // (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation. // calculation.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \ // * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions of Network Map to find an object until the depth // Will try older versions of Network Map to find an object until the depth
// limit is reached. // limit is reached.
// //

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.object; package neo.fs.v2.object;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/object/grpc;object"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
option csharp_namespace = "Neo.FileStorage.API.Object"; option csharp_namespace = "Neo.FileStorage.API.Object";
import "refs/types.proto"; import "refs/types.proto";
@ -114,19 +114,23 @@ message Header {
// 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.
// //
// There are some "well-known" attributes starting with `__NEOFS__` prefix // There are some "well-known" attributes starting with `__SYSTEM__` (`__NEOFS__` is deprecated) prefix
// that affect system behaviour: // that affect system behaviour:
// //
// * __NEOFS__UPLOAD_ID \ // * [ __SYSTEM__UPLOAD_ID ] \
// (`__NEOFS__UPLOAD_ID` is deprecated) \
// Marks smaller parts of a split bigger object // Marks smaller parts of a split bigger object
// * __NEOFS__EXPIRATION_EPOCH \ // * [ __SYSTEM__EXPIRATION_EPOCH ] \
// (`__NEOFS__EXPIRATION_EPOCH` is deprecated) \
// Tells GC to delete object after that epoch // Tells GC to delete object after that epoch
// * __NEOFS__TICK_EPOCH \ // * [ __SYSTEM__TICK_EPOCH ] \
// (`__NEOFS__TICK_EPOCH` is deprecated) \
// Decimal number that defines what epoch must produce // Decimal number that defines what epoch must produce
// object notification with UTF-8 object address in a // object notification with UTF-8 object address in a
// body (`0` value produces notification right after // body (`0` value produces notification right after
// object put) // object put)
// * __NEOFS__TICK_TOPIC \ // * [ __SYSTEM__TICK_TOPIC ] \
// (`__NEOFS__TICK_TOPIC` is deprecated) \
// UTF-8 string topic ID that is used for object notification // UTF-8 string topic ID that is used for object notification
// //
// And some well-known attributes used by applications only: // And some well-known attributes used by applications only:

View file

@ -587,16 +587,20 @@ values will be considered invalid.
There are some "well-known" attributes affecting system behaviour: There are some "well-known" attributes affecting system behaviour:
* __NEOFS__SUBNET \ * [ __SYSTEM__SUBNET ] \
(`__NEOFS__SUBNET` is deprecated) \
String ID of a container's storage subnet. Any container can be attached to String ID of a container's storage subnet. Any container can be attached to
one subnet only. one subnet only.
* __NEOFS__NAME \ * [ __SYSTEM__NAME ] \
(`__NEOFS__NAME` is deprecated) \
String of a human-friendly container name registered as a domain in String of a human-friendly container name registered as a domain in
NNS contract. NNS contract.
* __NEOFS__ZONE \ * [ __SYSTEM__ZONE ] \
String of a zone for `__NEOFS__NAME`. Used as a TLD of a domain name in NNS (`__NEOFS__ZONE` is deprecated) \
String of a zone for `__SYSTEM__NAME` (`__NEOFS__NAME` is deprecated). Used as a TLD of a domain name in NNS
contract. If no zone is specified, use default zone: `container`. contract. If no zone is specified, use default zone: `container`.
* __NEOFS__DISABLE_HOMOMORPHIC_HASHING \ * [ __SYSTEM__DISABLE_HOMOMORPHIC_HASHING ] \
(`__NEOFS__DISABLE_HOMOMORPHIC_HASHING` is deprecated) \
Disables homomorphic hashing for the container if the value equals "true" string. Disables homomorphic hashing for the container if the value equals "true" string.
Any other values are interpreted as missing attribute. Container could be Any other values are interpreted as missing attribute. Container could be
accepted in a NeoFS network only if the global network hashing configuration accepted in a NeoFS network only if the global network hashing configuration

View file

@ -27,7 +27,7 @@
### Message Lock ### Message Lock
Lock objects protects a list of objects from being deleted. The lifetime of a 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. Lock object MUST have expiration epoch. `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) attribute. Lock object MUST have expiration epoch.
It is impossible to delete a lock object via ObjectService.Delete RPC call. It is impossible to delete a lock object via ObjectService.Delete RPC call.

View file

@ -406,7 +406,8 @@ explicitly set:
attributes it's a string presenting floating point number with comma or attributes it's a string presenting floating point number with comma or
point delimiter for decimal part. In the Network Map it will be saved as point delimiter for decimal part. In the Network Map it will be saved as
64-bit unsigned integer representing number of minimal token fractions. 64-bit unsigned integer representing number of minimal token fractions.
* __NEOFS__SUBNET_%s \ * [ __SYSTEM__SUBNET_%s ] \
(`__NEOFS__SUBNET_%s` is deprecated) \
`True` or `False`. Defines if the node is included in the `%s` subnetwork `True` or `False`. Defines if the node is included in the `%s` subnetwork
or not. `%s` must be an existing subnetwork's ID (non-negative integer number). or not. `%s` must be an existing subnetwork's ID (non-negative integer number).
A node can be included in more than one subnetwork and, therefore, can contain A node can be included in more than one subnetwork and, therefore, can contain

View file

@ -93,11 +93,13 @@ be restored by concatenation of object message payload and all chunks
keeping the receiving order. keeping the receiving order.
Extended headers can change `Get` behaviour: Extended headers can change `Get` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
(`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requsted version of Network Map for object placement Will use the requsted version of Network Map for object placement
calculation. calculation.
* __NEOFS__NETMAP_LOOKUP_DEPTH \ * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
Will try older versions (starting from `__SYSTEM__NETMAP_EPOCH` (`__NEOFS__NETMAP_EPOCH` is deprecated) if specified or
the latest one otherwise) of Network Map to find an object until the depth the latest one otherwise) of Network Map to find an object until the depth
limit is reached. limit is reached.
@ -131,7 +133,8 @@ object payload. All messages, except first one, SHOULD be payload chunks.
Chunk messages SHOULD be sent in the direct order of fragmentation. Chunk messages SHOULD be sent in the direct order of fragmentation.
Extended headers can change `Put` behaviour: Extended headers can change `Put` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH \
(`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requsted version of Network Map for object placement Will use the requsted version of Network Map for object placement
calculation. calculation.
@ -166,8 +169,9 @@ 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: Extended headers can change `Delete` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
Will use the requsted version of Network Map for object placement (`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requested version of Network Map for object placement
calculation. calculation.
Please refer to detailed `XHeader` description. Please refer to detailed `XHeader` description.
@ -195,8 +199,9 @@ returned. If `main_only` request field is set, the short header with only
the very minimal information will be returned instead. the very minimal information will be returned instead.
Extended headers can change `Head` behaviour: Extended headers can change `Head` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
Will use the requsted version of Network Map for object placement (`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requested version of Network Map for object placement
calculation. calculation.
Please refer to detailed `XHeader` description. Please refer to detailed `XHeader` description.
@ -226,8 +231,9 @@ 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: Extended headers can change `Search` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
Will use the requsted version of Network Map for object placement (`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requested version of Network Map for object placement
calculation. calculation.
Please refer to detailed `XHeader` description. Please refer to detailed `XHeader` description.
@ -254,10 +260,12 @@ restored by concatenation of all received payload chunks keeping the receiving
order. order.
Extended headers can change `GetRange` behaviour: Extended headers can change `GetRange` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
Will use the requsted version of Network Map for object placement (`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requested version of Network Map for object placement
calculation. calculation.
* __NEOFS__NETMAP_LOOKUP_DEPTH \ * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
(`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
Will try older versions of Network Map to find an object until the depth Will try older versions of Network Map to find an object until the depth
limit is reached. limit is reached.
@ -291,10 +299,12 @@ length) tuples. Hashes order in response corresponds to the ranges order in
the 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: Extended headers can change `GetRangeHash` behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
Will use the requsted version of Network Map for object placement (`__NEOFS__NETMAP_EPOCH` is deprecated) \
Will use the requested version of Network Map for object placement
calculation. calculation.
* __NEOFS__NETMAP_LOOKUP_DEPTH \ * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
(`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
Will try older versions of Network Map to find an object until the depth Will try older versions of Network Map to find an object until the depth
limit is reached. limit is reached.
@ -848,19 +858,23 @@ 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.
There are some "well-known" attributes starting with `__NEOFS__` prefix There are some "well-known" attributes starting with `__SYSTEM__` (`__NEOFS__` is deprecated) prefix
that affect system behaviour: that affect system behaviour:
* __NEOFS__UPLOAD_ID \ * [ __SYSTEM__UPLOAD_ID ] \
(`__NEOFS__UPLOAD_ID` is deprecated) \
Marks smaller parts of a split bigger object Marks smaller parts of a split bigger object
* __NEOFS__EXPIRATION_EPOCH \ * [ __SYSTEM__EXPIRATION_EPOCH ] \
(`__NEOFS__EXPIRATION_EPOCH` is deprecated) \
Tells GC to delete object after that epoch Tells GC to delete object after that epoch
* __NEOFS__TICK_EPOCH \ * [ __SYSTEM__TICK_EPOCH ] \
(`__NEOFS__TICK_EPOCH` is deprecated) \
Decimal number that defines what epoch must produce Decimal number that defines what epoch must produce
object notification with UTF-8 object address in a object notification with UTF-8 object address in a
body (`0` value produces notification right after body (`0` value produces notification right after
object put) object put)
* __NEOFS__TICK_TOPIC \ * [ __SYSTEM__TICK_TOPIC ] \
(`__NEOFS__TICK_TOPIC` is deprecated) \
UTF-8 string topic ID that is used for object notification UTF-8 string topic ID that is used for object notification
And some well-known attributes used by applications only: And some well-known attributes used by applications only:

View file

@ -285,14 +285,16 @@ 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.
There are some "well-known" headers starting with `__NEOFS__` prefix that There are some "well-known" headers starting with `__SYSTEM__` (`__NEOFS__` is deprecated) prefix that
affect system behaviour: affect system behaviour:
* __NEOFS__NETMAP_EPOCH \ * [ __SYSTEM__NETMAP_EPOCH ] \
(`__NEOFS__NETMAP_EPOCH` is deprecated) \
Netmap epoch to use for object placement calculation. The `value` is string Netmap epoch to use for object placement calculation. 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, the
current epoch only will be used. current epoch only will be used.
* __NEOFS__NETMAP_LOOKUP_DEPTH \ * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
(`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
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 the node can look up through. 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, only the encoded `uint64` in decimal presentation. If set to '0' or not set, only the

View file

@ -31,7 +31,7 @@ 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 Being an object payload, StorageGroup may have expiration Epoch set with
`__NEOFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) well-known attribute. When expired, StorageGroup
will be ignored by InnerRing nodes during Data Audit cycles and will be will be ignored by InnerRing nodes during Data Audit cycles and will be
deleted by Storage Nodes. deleted by Storage Nodes.

View file

@ -31,7 +31,7 @@ purged from the NeoFS network.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| expiration_epoch | [uint64](#uint64) | | Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone creator depending on the current NeoFS network settings. A tombstone object must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH` attribute. Otherwise, the tombstone will be rejected by a storage node. | | expiration_epoch | [uint64](#uint64) | | Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone creator depending on the current NeoFS network settings. A tombstone object must have the same expiration epoch value in `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) attribute. Otherwise, the tombstone will be rejected by a storage node. |
| split_id | [bytes](#bytes) | | 16 byte UUID used to identify the split object hierarchy parts. Must be unique inside a container. All objects participating in the split must have the same `split_id` value. | | split_id | [bytes](#bytes) | | 16 byte UUID used to identify the split object hierarchy parts. Must be unique inside a container. All objects participating in the split must have the same `split_id` value. |
| members | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | List of objects to be deleted. | | members | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | List of objects to be deleted. |

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.refs; package neo.fs.v2.refs;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/refs/grpc;refs"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc;refs";
option csharp_namespace = "Neo.FileStorage.API.Refs"; option csharp_namespace = "Neo.FileStorage.API.Refs";
// Objects in NeoFS are addressed by their ContainerID and ObjectID. // Objects in NeoFS are addressed by their ContainerID and ObjectID.

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.reputation; package neo.fs.v2.reputation;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/reputation/grpc;reputation"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/reputation/grpc;reputation";
option csharp_namespace = "Neo.FileStorage.API.Reputation"; option csharp_namespace = "Neo.FileStorage.API.Reputation";
import "reputation/types.proto"; import "reputation/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.reputation; package neo.fs.v2.reputation;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/reputation/grpc;reputation"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/reputation/grpc;reputation";
option csharp_namespace = "Neo.FileStorage.API.Reputation"; option csharp_namespace = "Neo.FileStorage.API.Reputation";
import "refs/types.proto"; import "refs/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.session; package neo.fs.v2.session;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/session/grpc;session"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc;session";
option csharp_namespace = "Neo.FileStorage.API.Session"; option csharp_namespace = "Neo.FileStorage.API.Session";
import "refs/types.proto"; import "refs/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.session; package neo.fs.v2.session;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/session/grpc;session"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc;session";
option csharp_namespace = "Neo.FileStorage.API.Session"; option csharp_namespace = "Neo.FileStorage.API.Session";
import "refs/types.proto"; import "refs/types.proto";
@ -137,14 +137,16 @@ message SessionToken {
// 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.
// //
// There are some "well-known" headers starting with `__NEOFS__` prefix that // There are some "well-known" headers starting with `__SYSTEM__` (`__NEOFS__` is deprecated) prefix that
// affect system behaviour: // affect system behaviour:
// //
// * __NEOFS__NETMAP_EPOCH \ // * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Netmap epoch to use for object placement calculation. The `value` is string // Netmap epoch to use for object placement calculation. 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, the
// current epoch only will be used. // current epoch only will be used.
// * __NEOFS__NETMAP_LOOKUP_DEPTH \ // * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// 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 the node can look up through. 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, only the // encoded `uint64` in decimal presentation. If set to '0' or not set, only the

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.status; package neo.fs.v2.status;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/status/grpc;status"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/grpc;status";
option csharp_namespace = "Neo.FileStorage.API.Status"; option csharp_namespace = "Neo.FileStorage.API.Status";
// Declares the general format of the status returns of the NeoFS RPC protocol. // Declares the general format of the status returns of the NeoFS RPC protocol.

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.storagegroup; package neo.fs.v2.storagegroup;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/storagegroup/grpc;storagegroup"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/storagegroup/grpc;storagegroup";
option csharp_namespace = "Neo.FileStorage.API.StorageGroup"; option csharp_namespace = "Neo.FileStorage.API.StorageGroup";
import "refs/types.proto"; import "refs/types.proto";
@ -13,7 +13,7 @@ import "refs/types.proto";
// contains objects from the same container. // contains objects from the same container.
// //
// Being an object payload, StorageGroup may have expiration Epoch set with // Being an object payload, StorageGroup may have expiration Epoch set with
// `__NEOFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup // `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) well-known attribute. When expired, StorageGroup
// will be ignored by InnerRing nodes during Data Audit cycles and will be // will be ignored by InnerRing nodes during Data Audit cycles and will be
// deleted by Storage Nodes. // deleted by Storage Nodes.
// //

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.subnet; package neo.fs.v2.subnet;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/subnet/grpc;subnet"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/subnet/grpc;subnet";
option csharp_namespace = "Neo.FileStorage.API.Subnet"; option csharp_namespace = "Neo.FileStorage.API.Subnet";
import "refs/types.proto"; import "refs/types.proto";

View file

@ -2,7 +2,7 @@ syntax = "proto3";
package neo.fs.v2.tombstone; package neo.fs.v2.tombstone;
option go_package = "github.com/TrueCloudLab/frostfs-api-go/v2/tombstone/grpc;tombstone"; option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/tombstone/grpc;tombstone";
option csharp_namespace = "Neo.FileStorage.API.Tombstone"; option csharp_namespace = "Neo.FileStorage.API.Tombstone";
import "refs/types.proto"; import "refs/types.proto";
@ -12,7 +12,7 @@ import "refs/types.proto";
message Tombstone { message Tombstone {
// Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone // Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone
// creator depending on the current NeoFS network settings. A 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 `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated)
// attribute. Otherwise, the tombstone will be rejected by a storage node. // attribute. Otherwise, the tombstone will be rejected by a storage node.
uint64 expiration_epoch = 1 [json_name = "expirationEpoch"]; uint64 expiration_epoch = 1 [json_name = "expirationEpoch"];