Compare commits

...
Sign in to create a new pull request.

9 commits

Author SHA1 Message Date
Airat Arifullin
9c7730b67b [#81] object: Extend PatchRequest.Body with new_split_header field
All checks were successful
Formatters / Run fmt (pull_request) Successful in 19s
DCO action / DCO (pull_request) Successful in 23s
Pre-commit hooks / Pre-commit (pull_request) Successful in 28s
* This field updates object's split header.

Signed-off-by: Airat Arifullin <aarifullin@yadro.com>
2025-03-26 15:19:37 +03:00
Ori Bruk
a9eaff2fd6 [#82] Update documentation info
All checks were successful
DCO action / DCO (pull_request) Successful in 20s
Formatters / Run fmt (pull_request) Successful in 23s
Pre-commit hooks / Pre-commit (pull_request) Successful in 29s
Signed-off-by: Ori Bruk <o.bruk@yadro.com>
2025-03-20 13:07:48 +03:00
b337e61e98
[#78] status: Introduce RESOURCE_EXHAUSTED common status
All checks were successful
Formatters / Run fmt (pull_request) Successful in 24s
DCO action / DCO (pull_request) Successful in 27s
Pre-commit hooks / Pre-commit (pull_request) Successful in 32s
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2025-02-05 14:33:32 +03:00
52e5bc646f [#74] Use edition directive instead of syntax
https://go.dev/blog/protobuf-opaque

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2025-01-24 10:06:10 +00:00
e33194282c
[#75] CODEOWNERS: Add SDK developers team
All checks were successful
DCO action / DCO (pull_request) Successful in 5m8s
Formatters / Run fmt (pull_request) Successful in 5m8s
Pre-commit hooks / Pre-commit (pull_request) Successful in 5m20s
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-12-26 14:29:22 +03:00
2ed394d380 [#73] Refine CODEOWNERS settings
All checks were successful
Formatters / Run fmt (pull_request) Successful in 6m29s
DCO action / DCO (pull_request) Successful in 6m37s
Pre-commit hooks / Pre-commit (pull_request) Successful in 6m54s
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-12-10 16:17:03 +03:00
8540f0d18d [#70] container: Fix wrong tick in comments
All checks were successful
DCO action / DCO (pull_request) Successful in 59s
Pre-commit hooks / Pre-commit (pull_request) Successful in 1m21s
Formatters / Run fmt (pull_request) Successful in 1m50s
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
2024-11-13 18:14:41 +03:00
1a6bb369ec [#70] container: Add ListStream method
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
2024-11-13 18:14:41 +03:00
4c51a9b9d6 [#71] Stop using obsolete .github directory
All checks were successful
Formatters / Run fmt (pull_request) Successful in 28s
DCO action / DCO (pull_request) Successful in 1m3s
Pre-commit hooks / Pre-commit (pull_request) Successful in 1m5s
This commit is a part of multi-repo cleanup effort:
TrueCloudLab/frostfs-infra#136

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-11-06 15:10:17 +03:00
33 changed files with 167 additions and 86 deletions

View file

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

1
.github/CODEOWNERS vendored
View file

@ -1 +0,0 @@
* @alexvanin @realloc @fyrchik @anatoly-bogatyrev

View file

@ -1,36 +0,0 @@
name: Buf lint
on:
pull_request:
branches:
- master
jobs:
lint:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: wizhi/setup-buf@v1
with:
version: 0.20.5
- run: buf check lint
breaking:
runs-on: ubuntu-20.04
steps:
- name: Setup buf
uses: wizhi/setup-buf@v1
with:
version: 0.20.5
- name: Check out ref code
uses: actions/checkout@v2
with:
ref: ${{ github.base_ref }}
path: baseref
- run: cd baseref && buf image build -o image.bin
- name: Check out code
uses: actions/checkout@v2
with:
path: prclone
- run: cd prclone && buf check breaking --against-input ../baseref/image.bin

View file

@ -1,21 +0,0 @@
name: DCO check
on:
pull_request:
branches:
- master
jobs:
commits_check_job:
runs-on: ubuntu-latest
name: Commits Check
steps:
- name: Get PR Commits
id: 'get-pr-commits'
uses: tim-actions/get-pr-commits@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: DCO Check
uses: tim-actions/dco@master
with:
commits: ${{ steps.get-pr-commits.outputs.commits }}

3
CODEOWNERS Normal file
View file

@ -0,0 +1,3 @@
.* @alexvanin @realloc @fyrchik @a.bogatyrev @TrueCloudLab/storage-sdk-developers
.forgejo/.* @potyarkin
Makefile @potyarkin

View file

@ -87,7 +87,7 @@ $ git push origin feature/123-something_awesome
```
### Create a Pull Request
Pull requests can be created via GitHub. Refer to [this
Pull requests can be created via git.frostfs.info. Refer to [this
document](https://help.github.com/articles/creating-a-pull-request/) for
detailed steps on how to create a pull request. After a Pull Request gets peer
reviewed and approved, it will be merged.

View file

@ -10,7 +10,7 @@ doc:
@for f in `find . -type f -name '*.proto' -exec dirname {} \; | sort -u `; do \
echo "⇒ Documentation for $$(basename $$f)"; \
protoc \
--doc_opt=.github/markdown.tmpl,$${f}.md \
--doc_opt=.forgejo/markdown.tmpl,$${f}.md \
--proto_path=.:/usr/local/include \
--doc_out=proto-docs/ $${f}/*.proto; \
done

View file

@ -1,5 +1,5 @@
<p align="center">
<img src="./.github/logo.svg" width="500px" alt="FrostFS">
<img src="./.forgejo/logo.svg" width="500px" alt="FrostFS">
</p>
<p align="center">
<a href="https://frostfs.info">FrostFS</a> API language-agnostic protocol definitions

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.accounting;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.accounting;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.acl;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package frostfs.v2.ape;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package frostfs.v2.apemanager;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.container;
@ -52,7 +52,7 @@ service ContainerService {
// access to container is denied.
rpc Get(GetRequest) returns (GetResponse);
// Returns all owner's containers from 'Container` smart contract' storage.
// Returns all owner's containers from `Container` smart contract storage.
//
// Statuses:
// - **OK** (0, SECTION_SUCCESS): \
@ -61,6 +61,17 @@ service ContainerService {
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
rpc List(ListRequest) returns (ListResponse);
// Returns all owner's containers from `Container` smart contract storage
// via stream.
//
// Statuses:
// - **OK** (0, SECTION_SUCCESS): \
// container list has been successfully read;
// - Common failures (SECTION_FAILURE_COMMON);
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
rpc ListStream(ListStreamRequest) returns (stream ListStreamResponse);
}
// New FrostFS Container creation request
@ -245,3 +256,44 @@ message ListResponse {
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
}
// List containers stream
message ListStreamRequest {
// List containers stream request body.
message Body {
// Identifier of the container owner.
neo.fs.v2.refs.OwnerID owner_id = 1;
}
// Body of list containers stream request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
}
// List containers stream
message ListStreamResponse {
// List containers stream response body.
message Body {
// List of `ContainerID`s belonging to the requested `OwnerID`
repeated refs.ContainerID container_ids = 1;
}
// Body of list containers stream response message.
Body body = 1;
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.container;

View file

@ -20,7 +20,7 @@ Add an entry to the CHANGELOG.md following the style established there.
Add a codename for releases with the new major version, version and release date in
the heading. Write a paragraph describing the most significant changes done in
this release. Then add sections with what has been added, changed and removed,
describing each change briefly with a reference to GitHub issues, where
describing each change briefly with a reference to issues, where
available.
## Release commit
@ -38,7 +38,7 @@ Release v2.9.0 - Anmyeondo (안면도, 安眠島)
Use `vX.Y.Z` tag following the semantic versioning standard. For pre-release
versions use `vX.Y.Z-rc.N` scheme.
## Push changes and release tag to Github
## Push changes and release tag to repository
This step should bypass the default PR mechanism to get a correct result (so
that releasing requires admin privileges for the project), both the `master`
@ -48,9 +48,9 @@ branch update and tag must be pushed simultaneously like this:
$ git push origin master v2.7.0
```
## Make a proper Github release
## Make a proper release
Edit an automatically-created release on Github.
Edit an automatically-created release on git.frostfs.info
Release title has to follow `<version> <Romanized codename> (<Hangeul, Hanja
codename> )` scheme for major releases and just `<version>` for regular point
@ -58,5 +58,5 @@ releases.
## Post-release actions
* Close corresponding X.Y.Z Github milestone
* Close corresponding X.Y.Z milestone
* Make announcements in Matrix and Discord channels

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.lock;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.netmap;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.netmap;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.object;
@ -124,6 +124,9 @@ service ObjectService {
// returned. If `main_only` request field is set, the short header with only
// the very minimal information will be returned instead.
//
// Max header size is currently not limited by this API, but may be restricted
// on the service level. By default, gRPC uses a message size of 4 MiB.
//
// Extended headers can change `Head` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
@ -570,6 +573,7 @@ message HeadResponse {
ShortHeader short_header = 2;
// Meta information of split hierarchy.
// Indicates that the object is virtual, manual assembly is required.
SplitInfo split_info = 3;
// Meta information for EC object assembly.
@ -887,6 +891,10 @@ message PatchRequest {
// key, then it just replaces it while merging the lists.
bool replace_attributes = 3;
// New split header for the object. This defines how the object will relate
// to other objects in a split operation.
neo.fs.v2.object.Header.Split new_split_header = 5;
// The patch for the object's payload.
message Patch {
// The range of the source object for which the payload is replaced by the

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.object;

View file

@ -20,6 +20,10 @@
- [ListRequest.Body](#neo.fs.v2.container.ListRequest.Body)
- [ListResponse](#neo.fs.v2.container.ListResponse)
- [ListResponse.Body](#neo.fs.v2.container.ListResponse.Body)
- [ListStreamRequest](#neo.fs.v2.container.ListStreamRequest)
- [ListStreamRequest.Body](#neo.fs.v2.container.ListStreamRequest.Body)
- [ListStreamResponse](#neo.fs.v2.container.ListStreamResponse)
- [ListStreamResponse.Body](#neo.fs.v2.container.ListStreamResponse.Body)
- [PutRequest](#neo.fs.v2.container.PutRequest)
- [PutRequest.Body](#neo.fs.v2.container.PutRequest.Body)
- [PutResponse](#neo.fs.v2.container.PutResponse)
@ -58,6 +62,7 @@ rpc Put(PutRequest) returns (PutResponse);
rpc Delete(DeleteRequest) returns (DeleteResponse);
rpc Get(GetRequest) returns (GetResponse);
rpc List(ListRequest) returns (ListResponse);
rpc ListStream(ListStreamRequest) returns (stream ListStreamResponse);
```
@ -113,7 +118,7 @@ Statuses:
| Get | [GetRequest](#neo.fs.v2.container.GetRequest) | [GetResponse](#neo.fs.v2.container.GetResponse) |
#### Method List
Returns all owner's containers from 'Container` smart contract' storage.
Returns all owner's containers from `Container` smart contract storage.
Statuses:
- **OK** (0, SECTION_SUCCESS): \
@ -125,6 +130,21 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| List | [ListRequest](#neo.fs.v2.container.ListRequest) | [ListResponse](#neo.fs.v2.container.ListResponse) |
#### Method ListStream
Returns all owner's containers from `Container` smart contract storage
via stream.
Statuses:
- **OK** (0, SECTION_SUCCESS): \
container list has been successfully read;
- Common failures (SECTION_FAILURE_COMMON);
- **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
container list access denied.
| Name | Input | Output |
| ---- | ----- | ------ |
| ListStream | [ListStreamRequest](#neo.fs.v2.container.ListStreamRequest) | [ListStreamResponse](#neo.fs.v2.container.ListStreamResponse) |
<!-- end services -->
@ -276,6 +296,54 @@ List containers response body.
| container_ids | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | repeated | List of `ContainerID`s belonging to the requested `OwnerID` |
<a name="neo.fs.v2.container.ListStreamRequest"></a>
### Message ListStreamRequest
List containers stream
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListStreamRequest.Body](#neo.fs.v2.container.ListStreamRequest.Body) | | Body of list containers stream request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.ListStreamRequest.Body"></a>
### Message ListStreamRequest.Body
List containers stream request body.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Identifier of the container owner. |
<a name="neo.fs.v2.container.ListStreamResponse"></a>
### Message ListStreamResponse
List containers stream
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListStreamResponse.Body](#neo.fs.v2.container.ListStreamResponse.Body) | | Body of list containers stream response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.ListStreamResponse.Body"></a>
### Message ListStreamResponse.Body
List containers stream response body.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_ids | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | repeated | List of `ContainerID`s belonging to the requested `OwnerID` |
<a name="neo.fs.v2.container.PutRequest"></a>
### Message PutRequest

View file

@ -223,6 +223,9 @@ Returns the object Headers without data payload. By default full header is
returned. If `main_only` request field is set, the short header with only
the very minimal information will be returned instead.
Max header size is currently not limited by this API, but may be restricted
on the service level. By default, gRPC uses a message size of 4 MiB.
Extended headers can change `Head` behaviour:
* [ __SYSTEM__NETMAP_EPOCH ] \
(`__NEOFS__NETMAP_EPOCH` is deprecated) \
@ -728,7 +731,7 @@ Object HEAD response body
| ----- | ---- | ----- | ----------- |
| header | [HeaderWithSignature](#neo.fs.v2.object.HeaderWithSignature) | | Full object's `Header` with `ObjectID` signature |
| short_header | [ShortHeader](#neo.fs.v2.object.ShortHeader) | | Short object header |
| split_info | [SplitInfo](#neo.fs.v2.object.SplitInfo) | | Meta information of split hierarchy. |
| split_info | [SplitInfo](#neo.fs.v2.object.SplitInfo) | | Meta information of split hierarchy. Indicates that the object is virtual, manual assembly is required. |
| ec_info | [ECInfo](#neo.fs.v2.object.ECInfo) | | Meta information for EC object assembly. |

View file

@ -102,6 +102,7 @@ Section of failed statuses independent of the operation.
| SIGNATURE_VERIFICATION_FAIL | 2 | [**1026**] Signature verification failure. |
| NODE_UNDER_MAINTENANCE | 3 | [**1027**] Node is under maintenance. |
| INVALID_ARGUMENT | 4 | [**1028**] Invalid argument error. If the server fails on validation of a request parameter as the client sent it incorrectly, then this code should be used. |
| RESOURCE_EXHAUSTED | 5 | [**1029**] Resource exhausted failure. This code should be used if the operation cannot be performed due to a lack of resources. |

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.refs;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.session;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.session;

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.status;
@ -109,6 +109,10 @@ enum CommonFail {
// request parameter as the client sent it incorrectly, then this code should
// be used.
INVALID_ARGUMENT = 4;
// [**1029**] Resource exhausted failure. This code should be used
// if the operation cannot be performed due to a lack of resources.
RESOURCE_EXHAUSTED = 5;
}
// Section of statuses for object-related operations.

View file

@ -1,4 +1,4 @@
syntax = "proto3";
edition = "2023";
package neo.fs.v2.tombstone;