Commit Graph

1204 Commits (v2.15.0)

Author SHA1 Message Date
Evgenii Stratonikov 60473c44b9 [#368] README.md: change desctiption and link to SDK
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-02-08 11:03:28 +03:00
Leonard Lyubich 32dd0bb3f9 [#369] status: Support WRONG_MAGIC_NUMBER code and detail
Define constant for `WrongMagicNumber` local code. Define constant
`DetailIDCorrect` for correct magic detail. Add `ResetDetails`
and `AppendDetails` method pair. Replace `SetDetails` method with new
`SetStatusDetails` function which can be implemented using new methods.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2022-01-27 16:53:16 +03:00
Leonard Lyubich 959d1c8c38 [#369] status: Compile sources with detailed magic number
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2022-01-27 16:53:16 +03:00
Leonard Lyubich 227a871a04 [#367] session: Support `magic_number` field of `RequestMetaHeader`
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2022-01-14 13:17:21 +03:00
Leonard Lyubich e9a8451fb7 [#367] *: Re-compile proto files of NeoFS API protocol
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2022-01-14 13:17:21 +03:00
Alex Vanin f04051c96c Release v2.11.1
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-28 13:00:49 +03:00
Alex Vanin c64a5c08c8 Update credits
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-28 13:00:49 +03:00
Alex Vanin 49db0cfa03 [#366] rpc/client: Inherit read-write gRPC timeout from client
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-28 12:49:31 +03:00
Alex Vanin aa53fb7131 [#366] rpc/grpc: Perform read-write message operations with timeout
Remote gRPC server may not return or accept data for a while. gRPC
solves this issue with timeout in context. However, the context is
used for entire gRPC method invocation. Unfortunately the duration
of requests with streams can't be estimated easily.

To solve this issue we can specify timeouts for every message read
and write. Single message has size limit so timeout can be related
to that.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-28 12:49:31 +03:00
Alex Vanin 8b17921f03 Release v2.11.0 - Sinjido (신지도, 薪智島)
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-02 18:15:52 +03:00
Alex Vanin 4b67b56c4b [#361] Do not remove stable marshal test file after API recompile
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-02 16:42:47 +03:00
Alex Vanin c35dff758d [#361] Return proto file for stable marshal tests
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-12-02 16:42:47 +03:00
Angira Kekteeva fb33a6e08a [#364] Makefile: Remove deprecated -i flag
Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
2021-12-02 16:27:25 +03:00
Pavel Karpy 3604d96f3f [#362] netmap: Add marshaling of the subnetID field of container policy
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-12-01 16:45:23 +03:00
Leonard Lyubich d93828f465 [#356] netmap: Fix post-loop handling of zero subnet in IterateSubnets
Return any error other than `ErrRemoveSubnet` from `IterateSubnets`
during post-loop processing of zero subnet.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 5ce4b22e40 [#356] refs: Implement `Unmarshal` method on `SubnetID`
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 50ab22c19c [#356] netmap: Improve docs and slightly optimize the code
API changes:
  * Rename `Enters` method of the `NodeSubnetInfo` to `Enabled`.
  * Declare undefined behavior of `WriteSubnetInfo` with non-unique
  attributes.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich abc494b2bc [#356] netmap: Simplify zero subnet processing in `IterateSubnets`
For now we don't need to distinguish cases of missing zero subnet's
attribute and the one with `True` value.

Remove local enum `zeroStatus` of `IterateSubnets` since we need to
distinguish between two statuses and use `bool` variable for this.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 896cee4bb0 [#356] netmap: Increase test coverage of IterateSubnets
Add both `False` and `True` subnet attributes.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich dfb780a2b6 [#356] netmap: Document `IterateSubnets` behavior with duplicate keys
Node attributes must be key-unique. In current implementation
`IterateSubnets` doesn't monitor the uniqueness of keys.

Declare undefined behavior of `IterateSubnets` for non-unique attribute
keys.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 5d99e697aa [#356] refs: Test text marshaling of nil SubnetID
Add `(*refs.SubnetID)(nil).MarshalText()` unit test.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich dc292864aa [#356] refs: Handle uint32 overflow in `SubnetID` text format
Clarify the bit size limit in `SubnetID.UnmarshalText` method. Cover
overflow case in unit test.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 4560e447e1 [#356] netmap: Fix potential double-processing of zero subnet
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 051b103df3 [#356] netmap: Return missing subnets error from `IterateSubnets`
Each NeoFS storage node should be present in at least one subnet.

Make `netmap.IterateSubnets` function to return an error if the node by the
end of the loop does not belong to any subnet.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 348f9498bd [#356] netmap: Implement the functionality of working with subnets
NeoFS storage node can participate in a subnet group (at least one).
According to NeoFS API V2 protocol, subnets are entered and exited through
the attributes of the node. We should provide functionality for conveniently
setting and reading attributes based on the needs of the network.

Define `NodeSubnetInfo` type which groups information about the subnet
reflected in `NodeInfo`. Implement `WriteSubnetInfo` function which writes
`SubnetInfo` data to `NodeInfo`. It will be used to prepare a request for
registration on the NeoFS network. Implement `IterateSubnets` function which
allows to iterate over all subnets of the node. Moreover, it allows you to
remove a subnet from the `NodeInfo` right during iterative traversal.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 0e6e0e4678 [#356] refs: Implement text encoding of `SubnetID`
Implement `encoding.TextMarshaler` / `encoding.TextUnmarshaler` interfaces
on `SubnetID` according to NeoFS API V2 protocol.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich f0af5ce759 [#356] refs: Add functions to work with zero subnet
Add helper functions which provide ease of use with subnet zero IDs.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-24 17:13:18 +03:00
Leonard Lyubich 580f6c5554 [#355] subnet: Implement types for the new messages
Define `subnet.Info` structure of corresponding message from NeoFS API
protocol. Provide field getters and setters. Implement
`StableMarshal` / `StableSize` methods of binary encoding. Implement
`ToGRPCMessage` / `FromGRPCMessage` method for testing and
potential transport.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-18 17:40:33 +03:00
Leonard Lyubich b0a2b73650 [#355] util/proto: Support fixed32 fields
Implement `Fixed32Marshal` / `Fixed32Size` functions which allow to work
with protobuf fixed32 fields.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-18 17:40:33 +03:00
Leonard Lyubich d015b1d679 [#355] Re-compile NeoFS API sources with subnet types
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-18 17:40:33 +03:00
Evgenii Stratonikov 68f28a1918 [#355] v2/refs: add subnetwork ID
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-11-18 15:04:15 +03:00
Evgenii Stratonikov ad6a7999cd [#355] *: regenerate proto files
Add subnetwork ID to placement policy.

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-11-18 15:04:15 +03:00
Leonard Lyubich 0f09f0dfc6 Re-compile NeoFS API proto files using updated script
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 15:29:33 +03:00
Leonard Lyubich 180da74e5c Place compiled proto files to root dir
Remove `v2` prefix from `prepare.sh` script.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 15:29:33 +03:00
Leonard Lyubich 25da5d2e13 Add `v2` version to go module name
Replace all elements from `v2` to root directory.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 15:29:33 +03:00
Leonard Lyubich 2d70391e31 [#350] v2/session: Support `status` field in `ResponseMetaHeader`
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 12:15:42 +03:00
Leonard Lyubich ca746f3800 [#350] v2: Define response status messages
Create `status` package. Define `status.Status` message structure. Export
getters, setters and encoding methods.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 12:15:42 +03:00
Leonard Lyubich 356b58a52c [#350] v2/status/grpc: Implement field setters
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 12:15:42 +03:00
Leonard Lyubich 27798eaacb [#350] Compile protobuf files with status returns
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-11-17 12:15:42 +03:00
Evgenii Stratonikov 9798b03ba2 prepare.sh: fix directory handling
Allow spaces in path and fail early if `cd` target doesn't exist.

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-11-16 19:56:48 +03:00
Evgenii Stratonikov 133cd011f0 Makefile: use `go install` instead of `go get`
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-11-16 19:56:48 +03:00
Alex Vanin a33394cee4 Release v1.30.0 - Udo (우도, 牛島)
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-10-19 19:51:33 +03:00
Alex Vanin 371dd09bf5 [#176] Makefile: Use google-hosted repository of protobuf
GitHub-hosted version considered as deprecated

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-10-19 19:51:33 +03:00
Leonard Lyubich db1ed76473 [#351] container: Add default value for NNS zone
Define `SysAttributeZoneDefault` constant for default zone in V2 code. Add
`SetNativeName` function which sets name with default zone.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-10-14 15:20:40 +03:00
Leonard Lyubich 20b863284a [#351] pkg/container: Implement functions to work with native names
Implement `GetNativeNameWithZone` / `SetNativeNameWithZone` function which
gets / sets `__NEOFS_NAME` and `__NEOFS_ZONE` container attributes.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-10-14 15:20:40 +03:00
Leonard Lyubich 7348dee623 [#351] v2/container: Define well-known attributes for NNS integration
Define const `SysAttributeName` and `SysAttributeZone` keys to NNS
attributes.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-10-14 15:20:40 +03:00
Angira Kekteeva a8fa0f9847 [#349] ci: Update linter
Update golangci version, replace golint by revive

Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
2021-10-07 11:00:37 +03:00
Leonard Lyubich ea91004e8a [#341] acl: Define public-append rule
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-10-05 22:43:15 +03:00
Leonard Lyubich 0117e90e9a [#176] Re-compile protobuf file from NeoFS API source
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-29 18:28:13 +03:00
Leonard Lyubich 3c5c589e63 [#176] Makefile: use protoc-gen-go-grpc in protoc target
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-29 18:28:13 +03:00