Sometimes it is useful to open single session which covers several
objects in the container. In previous implementation it could be done:
* by opening container-global session
* by opening N per-object sessions
Both approaches are not optimal for the mentioned need.
Define `ObjectSessionContext.Target` which is backward compatible with
`refs.Address` in binary format. Replace `address` field of
`refs.Address` type in `ObjectSessionContext` message with `target`
field of `ObjectSessionContext.Target` type. This change saves backward
compatibility in binary format, but break the JSON one. Such a breakage
is considered admissible for now since NeoFS API protocol hasn't
declared JSON compatibility yet.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
Object sessions for `PUT` and `SEARCH` ops are spread to the whole
container due to op semantics. Sometimes it is convenient to spread the
session to all objects of the container for other operations. Thus,
object sessions for the whole container can be unified.
Modify docs of `ObjectSessionContext.address` field:
* require `container_id` field to be correctly set;
* require `object_id` field to be correctly field if set;
* allow `object_id` field to be unset and make this case equivalent to
the container-global session.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
To prevent theoretical cross-network replay attack, we need to have
network magic in NeoFS requests.
Add `magic_number` numeric field to `session.RequestMetaHeader`
message.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
Extend `session.SessionToken.Body.context` oneof with `container` field of
type `ContainerServiceContext`. This field is going to be used for RPCs of
`container.ContainerService`.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
When object can't be found using current network map, there is a chance to find
it using netmap versions from previous epochs.
By default only current netmap is used. Well-known X-Headers can be used to set
the specific netmap version and limit how deep into the past the node can go in
the search of an object.
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
To simplify adding more transport level protocols to neofs-api-go in future, we
need to separate currently default gRPC.
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
- Changed package names adding version
- Added documentation descriptions (sometimes useless) for all fields
- Changed enum format
- Made SessionToken and BearerToken field names more clear
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
There is a need to remove gogoproto usage from NeoFS API since this plugin
is not cross-language. This commit removes usage from session package.
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
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>
This commit:
* moves Token message to service package;
* updates token structure (new verb field, some renaming);
* replaces VerificationHeader header with Token in object package;
* removes no longer used VerificationHeader message.