Commit graph

1188 commits

Author SHA1 Message Date
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
Leonard Lyubich
d71ba40b78 [#176] Update google.golang.org/grpc module to v1.41.0
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-29 18:28:13 +03:00
Leonard Lyubich
010b1b0118 [#339] netmap: Support protocol changes related to NetworkInfo
Recompile NeoFS API protobuf files. Implement `NetworkParameter` and
`NetworkConfig` types. Expand `NetworkInfo` type with MillisecondsPerBlock
and `NetworkConfig`.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-29 11:13:12 +03:00
Evgenii Stratonikov
520a065dd2 [#338] v2/acl: add Service filter type
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2021-09-28 18:19:55 +03:00
Leonard Lyubich
da89c2b71f [#337] client: Add option to specify callback of response information
There is a need to analyze some response information in API client.

Define `ResponseMetaInfo` structure of response information. Add
`WithResponseInfoHandler` client option which allows to set the response
info callback. The callback is called right after any response is received.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-28 18:15:29 +03:00
Leonard Lyubich
3844a3ac74 [#342] v2/reputation: Fix incorrect return of AnnounceIntermediateResult
Return `AnnounceIntermediateResultResponse` instead of
`AnnounceIntermediateResultRequest` from `rpc.AnnounceIntermediateResult`.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-28 18:15:29 +03:00
Leonard Lyubich
e887368be6 [#340] owner: Prevent potential NPE in NEO3WalletFromPublicKey
Copy `Curve` field of `ecdsa.PublicKey` arg to `keys.PublicKey` instance in
`NEO3WalletFromPublicKey` function.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-09-20 14:41:29 +03:00
Pavel Karpy
6d0b3135ff Release v1.29.0 - Anmyeondo (안면도, 安眠島)
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-27 13:33:09 +03:00
Pavel Karpy
a2dd61300a Update release instruction
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-27 13:33:09 +03:00
Alex Vanin
1ddc98dc75 [#333] pkg/acl: Add remaining well-known eACL filter setters
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-08-26 18:37:16 +03:00
Alex Vanin
86df0eac93 [#333] v2/acl: Remove FilterObjectParent constant
According to specification, well-known object related filter keys for
extended ACL do not include `$Object:split.parent`.

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
2021-08-26 18:37:16 +03:00
Pavel Karpy
4e7a966a49 [#331] pkg/object: Add COMMON_PREFIX matchtype enum constant and test case for it
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 18:37:03 +03:00
Pavel Karpy
e6cd9c48ed [#331] v2/object: Add COMMON_PREFIX v2 matchtype enum constant
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 18:37:03 +03:00
Pavel Karpy
de3242d867 [#331] v2/object: Sync method name and its commentary
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 18:37:03 +03:00
Pavel Karpy
5b3860e3d9 [#331] v2/object: Recompile proto files
Add new enum matchtype `COMMON_PREFIX` to object.

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 18:37:03 +03:00
Pavel Karpy
63c37709fa [#334] pkg/acl: Fix public-read ACL rule
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 17:25:45 +03:00
Pavel Karpy
aad43354de [#335] ci: Add tests for Go 1.17
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
2021-08-26 17:00:29 +03:00