Commit graph

288 commits

Author SHA1 Message Date
Leonard Lyubich
d38377793a [#32] acl: Remove gogoproto from typedef
There is a need to remove gogoproto usage from NeoFS API since this plugin
is not cross-language. This commit removes usage from acl package.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:34:03 +03:00
Leonard Lyubich
031579a68d [#34] bootstrap: Move NodeInfo to netmap
Move NodeInfo message definition to netmap package. Package bootstrap is
completely removed from the repository.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:33:24 +03:00
Leonard Lyubich
f60273beb9 [#34] Add netmap package
Introduce netmap package to repository. Also as initial use, added container
storage rules message netmap.PlacementRule.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:32:46 +03:00
Leonard Lyubich
44ec19962a bootstrap: Replace options with attributes in NodeInfo
Rename Options to Attributes to be in sync with Objects and Nodes and Containers.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:31:14 +03:00
Leonard Lyubich
87e1d01307 [#34] bootstrap: Tidy up the format
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:31:07 +03:00
Leonard Lyubich
50d4fcb24a [#32] bootstrap: Remove gogoproto from typedef
There is a need to remove gogoproto usage from NeoFS API since this plugin
is not cross-language. This commit removes usage from NodeInfo message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:31:07 +03:00
Leonard Lyubich
4caf9a7258 [#34] bootstrap: Remove no longer used SpreadMap
After removing State service from the public API, SpreadMap message became
redundant, so it is deleted.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:30:51 +03:00
Leonard Lyubich
abbf0f7893 [#30] state: Remove State service
Remove state package from the repository since State service is
not part of the public API.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:30:51 +03:00
Leonard Lyubich
5b410c6915 [#34] bootstrap: Remove Bootstrap service
Remove Bootstrap service with all related types from bootstrap package since it
was used to prototype NeoFS system.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:30:30 +03:00
Leonard Lyubich
7c71813d22 [#34] bootstrap: Define node state enum in NodeInfo
Replaces Status field of NodeInfo with State field value of NodeInfo.State
enumeration.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:30:09 +03:00
Leonard Lyubich
c88d1fdae3 query: Move Query to object
Move Query message definition to object package since it is only used there.
Package query is completely removed from the repository.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:11:16 +03:00
Leonard Lyubich
d308f91872 [#33] accounting: Tidy up the format
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:08:27 +03:00
Leonard Lyubich
e6fce062df [#33] decimal: Move Decimal to accounting
Move Decimal message definition to accounting package since it is only used
there. Package decimal is completely removed from the repository.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:08:01 +03:00
Leonard Lyubich
0f478ffaa6 [#33] decimal: Improve comments
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:07:51 +03:00
Leonard Lyubich
1f0e5b6160 [#32] decimal: Remove gogoproto from typedef
There is a need to remove gogoproto usage from NeoFS API since this plugin
is not cross-language. This commit removes usage from Decimal message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:03:14 +03:00
Leonard Lyubich
5cca1fd469 [#32] accounting: Remove gogoproto from typedef
There is a need to remove gogoproto usage from NeoFS API since this plugin
is not cross-language. This commit removes usage from BalanceRequest
message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:03:14 +03:00
Leonard Lyubich
54319feb4a [#33] accounting: Remove no longer used types
Some types in accounting package used to prototype the NeoFS system. With
the transition to a banking system using blockchain, these types have lost
their relevance, so this commit deletes them.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:02:54 +03:00
Leonard Lyubich
9454d1adad [#33] accounting: Remove LockAccounts field from BalanceResponse
Remove BalanceResponse field that carried the list of lock account since it
ceased to be externally controlled and is now managed by Smart Contract.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 23:01:42 +03:00
Leonard Lyubich
40420f3ab0 [#31] refs: Use OwnerID message in all services
Change the type of all fields for identifier of the container owner to
refs.OwnerID. This will allow you to follow a single format and not duplicate
its description.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
9bd4934373 [#31] refs: Define OwnerID message
Define OwnerID message in refs package. In the future, this structure can be
ported into messages in place of the owner identifier field to maintain format
uniformity. Also, storing the identifier in a dedicated message will allow, if
necessary, to expand it with additional information without losing backward
compatibility within one version of the API.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
fccd753a5d [#31] refs: Use ContainerID message in all services
Change the type of all fields for the container identifier to refs.ContainerID.
This will allow to follow a single format and not duplicate its description.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
2f5f6f8fde [#31] refs: Define ContainerID message
Define ContainerID message in refs package. In the future, this structure can be
ported into messages in place of the container identifier field to maintain
format uniformity. Also, storing the identifier in a dedicated message will
allow, if necessary, to expand it with additional information without losing
backward compatibility within one version of the API.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
67ecea7507 [#28] object: Move storage group information
In previous version of the format storage group information was stored in
completely in the dedicated header field. However, having a header field
instead of storing it in a payload is not justified, since it is used only
to check the presence in the object. Based on this, this commit defines a
message for marking the object as the custodian of information about the
storage group and changes the type of field StorageGroup to it. Information
about the storage group will be stored serialized in the payload of the
objects marked in this way

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
2ea912a910 [#28] storagegroup: Add linebreaks for readability
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
d349faa602 [#28] storagegroup: Rewrite field comments
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
487b84e614 [#28] storagegroup: Measure lifetime in NeoFS epochs
In previous version of the format storage group lifetime was measured in two
epoch times: NeoFS and Unix. Since unix is not processed in the system,
this commit narrows the time point of storage group expiration to the
system epoch number. The storagegroup.StorageGroup.Lifetime message has
therefore been deleted as no longer used.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 22:00:01 +03:00
Leonard Lyubich
248a91b329 [#28] storagegroup: Remove gogoproto from typedef
As mentioned in #32, there is a need to remove gogoproto usage from NeoFS API
since this plugin is not cross-language. This commit removes usage from
StorageGroup message and all related types

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
974a2288c4 [#26] object: Add line breaks for readability
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
a5c1b3683b [#26] object: Rename System header to Main
In the previous format, the object header was subdivided into system and
extended parts, which confused the purpose of these parts. In particular,
the extended header contains system fields. To clarify the non-intersection
of the mentioned parts of the object header, it was decided to rename System
to Main.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
eaad094a2c [#26] object: Tidy up comments
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
0525786d09 [#26] object: Use nested types in Header
This commit replaces all message definitions related to object header to
Header message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
81a4adb202 [#26] object: Use nested types in ExtendedHeader
This commit replaces all message definitions related to extended header to
ExtendedHeader message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
72edea28db [#26] object: Change field order in Header
This commit changes field order in ExtendedHeader message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
a3a0de01b3 [#26] object: Replace Token to IntegrityHeader
This commit replaces Token field from ExtendedHeader to IntegrityHeader for
assembling all verification data in one structure.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
8e8d9f0982 [#26] object: Replace Epoch to ExtendedHeader
This commit replaces CreationEpoch field to ExtendedHeader message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
a28decac39 [#26] object: Repeat object attributes in header
This commit replaces single Attribute field with the repeated list of
Attribute in ExtendedHeader message.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
fb2064803e [#26] object: Replace PayloadChecksum to Integrity
This commit replaces PayloadChecksum field from ExtendedHeader to
IntegrityHeader for assembling all verification data in one structure.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
b77811716e [#26] object: Replace creator key to Integrity
This commit moves the public key of the creator of the object to
IntegrityHeader to encapsulate the verification data in one message. Thus
field PublicKey of message Header has been moved to message IntegrityHeader
with the name CreatorKey. As a result, PublicKey message is deleted as no
longer used.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
0a5f3d5a01 [#26] object: Remove unused Redirect field
Redirect field was introduced for the future, however, at the moment it is
not used anywhere. This commit removes field Redirect from ExtendedHeader
message. It can be added back later without losing API backward
compatibility.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
4df4badf9c [#26] object: Remove Link message
After updating the structure of SplitHeader and StorageGroup messages, the
Link header field is no longer needed. This commit removes the field and
message Link as no longer used.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
300b1d4197 [#26] storagegroup: Add member list to message
To encapsulate the complete information about the storage group in
StorageGroup message, this commit adds the missing group member list field.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
7ce0945e6c [#26] object: Remove unused Version field
Field with object revision number was introduced for the future, however, at
the moment it is not used anywhere. This commit removes field Version from
SystemHeader message. It can be added back later without losing API
backward compatibility.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
9666fd4bc7 [#26] object: Remake ExtendedHeader to field set
In previous version of the format ExtendedHeader consisted of one field
Value, defined by oneof mechanism. Such a definition format give complete
freedom when composing an object header, however, it did not allow strictly
structuring the header format at the level of type syntax. Since the object
has a well-defined structure in the system, this commit replaces the
definition through oneof with a set of fields. As a consequence, storing a
set of extended headers of the new type in the general header became
redundant, so the repeated keyword was removed.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
cbd4cf63f9 [#26] object: Replace Transform header with Split
This commit replaces Transform message with SplitHeader in oneof definition
of Value field of Header message. The latter, unlike the first, carries
complete information about the generation of the object by splitting the
payload. As a result, the message is deleted as no longer used.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
485510ab66 [#26] object: Define object split info message
This commit defines SplitHeader message that encapsulates data about
spawning the object through a payload splitting. Message fields contain
information about the hierarchy in the split-chain as well as information
about the origin object.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
4bdd05ade8 [#26] refs: Use ObjectID message in Address
This commit makes ObjectID field of refs.Address message to use dedicated
message for object identifier ObjectID.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
96924b04dc [#26] refs: Define ObjectID message
This commit defines ObjectID message in refs package. In the future, this
structure can be ported into messages in place of the object identifier
field to maintain format uniformity. Also, storing the identifier in a
dedicated message will allow, if necessary, to expand it with additional
information without losing backward compatibility within one version of the
API.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
b46011db45 [#26] object: Combine ID and CID in Address
This commit merges object system header fields ID and CID into field Address
of type refs.Address. This will allow you to reuse an already existing type
of object reference without duplication and simplify taking the address
from the object body

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
6e5565f238 [#26] object: Replace CreationPoint with Epoch
In previous version of the format Object message included moment of creation
in two epoch times: NeoFS and Unix. Since unix  is not processed in the
system, this commit narrows the time point of object creation to the system
epoch number. The object.CreationPoint message has therefore been deleted
as no longer used

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00
Leonard Lyubich
5beca3b0d1 [#26] object: Define message for object header
In previous version of the format Object message included two header fields:
SystemHeader and list of ExtendedHeader. Due to the fact that all headers
were not encapsulated in a single message, some messages were forced to use
Object to convey the full header of the object (e.g. object.HeadResponse).
To resolve this semantic inconsistency, this commit defines a Header
message, consisting of a system and an extended portion. As a result, the
Object now consists of two fields - Header and Payload.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-08-06 21:59:42 +03:00