Commit graph

520 commits

Author SHA1 Message Date
Leonard Lyubich
153695a03d client: Provide the ability to create slicer.Slicer instance
`CreateObject` function uses `slicer.Slicer` to read data encapsulated
behind `io.Reader` and store it in the NeoFS network. Sometimes there is
a need to init data writer (`io.Writer`)` instead of providing reader.
To cover such use-cases, it's worth to expose slicer's constructor based
on client.

Add `NewDataSlicer` constructor. Use the function in `CreateObject`.

Refs #342.

Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
2023-04-26 21:40:01 +04:00
Leonard Lyubich
e2011832eb slicer: Allow to toggle homomorphic hashing
Homomorphic hashing of object payload is not always necessary. There is
a need to provide ability to skip calculation. It's also worth to not
calculate it by default since current implementation of Tillich-Zemor
algorithm has large resource cost.

Do not calculate homomorphic checksum in `Slicer` methods by default.
Provide option to enable the calculation. Make tests to randomize
calculation flag and assert results according to it.

Refs #342.

Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
2023-04-26 21:40:01 +04:00
Leonard Lyubich
ab5ae28fdb slicer: Implement alternative slicing through user writing
Provide method to initialize payload stream as `io.WriteCloser`. This
approach will be useful for applications which need to control data
writing by themselves.

Refs #342.

Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
2023-04-26 21:39:59 +04:00
Leonard Lyubich
0d7d03d56f client: Support static data slicing
Add `CreateObject` function which slices data stream into NeoFS objects
and saves the produced objects in the NeoFS network using `Client`.

Closes #342.

Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
2023-04-26 21:38:08 +04:00
Leonard Lyubich
8eded316de Initial commit of static object slicer
There is a need to provide convenient function which allows to slice
user data into objects to be stored in NeoFS. The main challenge is to
produce objects compliant with the format described in the NeoFS
Specification.

Add `object/slicer` package. Export `Slicer` type which performs data
slicing.

Refs #342.

Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
2023-04-26 21:38:05 +04:00
Roman Khimov
28a3708b4e
Replace signature package from neofs-api-go (#401)
close #219
2023-04-26 17:17:12 +03:00
Evgenii Baidakov
36b1e8442c
tests: Use dedicated function to generate signers in tests
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-26 15:03:55 +04:00
Evgenii Baidakov
25c0fd9b8e
client: Update coverage for signing
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-26 15:01:44 +04:00
Evgenii Baidakov
64c0612bdc
:* Replace ecdsa.PrivateKey with neofscrypto.Signer
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-26 14:59:21 +04:00
Evgenii Baidakov
570a628462
:* Replace signature package from neofs-api-go
close #219, #155

Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-26 14:54:12 +04:00
Evgenii Baidakov
77c2e227b9
pool: Use PublicKey like cache key instead of PrivateKey
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-25 14:08:47 +04:00
Roman Khimov
dbbb22ca28
Use CID to prevent incorrect usage in netmap (#396)
close #216
2023-04-21 15:25:53 +03:00
Evgenii Baidakov
83ca99ae92
doc: Actualize docs for ContainerNodes func
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-21 10:24:37 +04:00
Evgenii Baidakov
4b6965f209
netmap: Use CID to prevent incorrect usage in netmap
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-21 10:24:10 +04:00
Roman Khimov
16daed8140
Set external signer for requests payload (#398)
close #373
2023-04-20 14:48:09 +03:00
Evgenii Baidakov
70df422866
neofsecdsa: Add StaticSigner for externally calculated hashes
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-20 14:29:59 +04:00
Evgenii Baidakov
6ac961d41c
client: Set external signer for requests payload
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-20 14:29:58 +04:00
Roman Khimov
0bc98456e3
Remove FromString method of enumerations (#393)
close #98
2023-04-19 21:09:43 +03:00
Evgenii Baidakov
6757c0a706
linter: Fix fmt.Errorf format for type variable
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-19 16:14:22 +04:00
Evgenii Baidakov
5d3fcd6f55
enums: Remove FromString method of enumerations
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-19 14:33:35 +04:00
LeL
34213c6275
Update go version to 1.20 (#394) 2023-04-19 14:23:22 +04:00
LeL
bde3b2f4b6
Actualize CODEOWNERS (#395) 2023-04-19 14:19:40 +04:00
Roman Khimov
dcdd75b751
documentation: Container create and get example (#392)
Close #385
2023-04-18 22:49:39 +03:00
Roman Khimov
32fc84a67c .github: hey, I'm the code owner too!
Let me have this green button.

Signed-off-by: Roman Khimov <roman@nspcc.ru>
2023-04-18 21:58:12 +03:00
Evgenii Baidakov
38a613fce5
*: replace interface{} with any keyword
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-18 12:28:25 +04:00
Evgenii Baidakov
54faed8384
.github: Remove support 1.17, add support 1.20
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-18 12:21:34 +04:00
Evgenii Baidakov
c5f949e314
go.mod: Set minimum version to 1.18
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-18 12:19:34 +04:00
Evgenii Baidakov
d1ae4ef576
documentation: Container create and get example
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-17 17:39:33 +04:00
Roman Khimov
47af8441eb
[#362] pool: Don't use default session token for read (#363)
close #362
2023-04-17 15:43:06 +03:00
Roman Khimov
8678b36ed9
Check CID is set to eacl table in ContainerSetEACL command (#389)
close #384
2023-04-17 15:25:58 +03:00
Roman Khimov
c6bda422fc
filter: Add payload and homomorphic hash filter methods (#386)
close #383
2023-04-17 14:44:21 +03:00
Evgenii Baidakov
dfb799783e
client: Check CID is set to eacl table in ContainerSetEACL command
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-17 09:40:43 +04:00
Roman Khimov
493fa50915
Feature/308 add forming phy storage group (#348)
Move forming storage group (with phy objects) from
[neofs-cli](c2918fce3a/pkg/services/object_manager/storagegroup/collect.go (L17-L67))
to sdk

close #308
2023-04-15 20:53:46 +03:00
Roman Khimov
08a152b0bf
Update deps (#372) 2023-04-15 20:39:17 +03:00
Roman Khimov
3d42ae62d6
Method to take raw client (#388)
close #379
2023-04-15 14:29:38 +03:00
Evgenii Baidakov
7d66148d1f
filter: Add payload and homomorphic hash filter methods
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-14 16:37:48 +04:00
Evgenii Baidakov
77f557530e
pool: Method to take raw client
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-14 09:56:58 +04:00
Roman Khimov
bd429c9f37
object: Remove deprecated object.RawObject type (#387)
close #139
2023-04-13 23:33:37 +03:00
Evgenii Baidakov
71350c1f42
object: Remove deprecated object.RawObject type
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-04-13 19:26:22 +04:00
Roman Khimov
9a543b6f64
Add some encoding methods (#378)
_Inspired by https://github.com/AxLabs/neofs-shared-lib project._
2023-04-13 13:00:45 +03:00
Leonard Lyubich
651c17f9b3 [#378] version: Add JSON encoding for Version type
Define `MarshalJSON` / `UnmarshalJSON` methods of the `Version` type.

Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2023-01-31 12:51:51 +04:00
Leonard Lyubich
8fdbf6950a [#378] netmap: Add binary encoding for NetworkInfo type
Define `Marshal` / `Unmarshal` methods of the `NetworkInfo` type.

Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2023-01-31 12:51:51 +04:00
Leonard Lyubich
4191e5f13e [#378] accounting: Add binary encoding for Decimal type
Define `Marshal` / `Unmarshal` methods of the `Decimal` type.

Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2023-01-31 12:51:47 +04:00
ae44191e8c [#374] pool: Fix handling SplitInfoError
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
2023-01-23 11:06:41 +03:00
72df51cfe9 [#372] go.mod: Update ANTLR
Current `go:generate` command was, probably, executed only on my laptop.
Replace it with explicit version, because package in the generated code
depends on in.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2022-12-29 13:55:59 +03:00
9e18d50978 [#372] go.mod: Update dependencies
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2022-12-29 13:55:59 +03:00
5fc9865577 [#372] go.mod: Update neo-go to v0.100.1
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2022-12-29 13:55:59 +03:00
Denis Kirillov
170f31b7c4 [#365] pool: Add request callback
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
2022-12-29 13:29:14 +03:00
Evgenii Stratonikov
9efc4ecd70 [#367] client: Allow to override key in Object.Hash RPC
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2022-12-29 13:28:38 +03:00
Pavel Karpy
1bf41e9bc1 [#370] bearer, session: Clarify expiration epoch
The expiration epoch is the _last_ valid epoch for an entity. Also, clarify
the expiration epoch meaning for tombstones and regular objects.

Signed-off-by: Pavel Karpy <p.karpy@yadro.com>
2022-12-29 13:28:11 +03:00