Compare commits

..

2 commits

Author SHA1 Message Date
bb0a9325ce Meaningless commit to test PR workflows
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-11-06 13:29:25 +03:00
cb1504cef8 [#] Lint and check protobuf schemas for breaking changes
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-11-06 13:28:53 +03:00
33 changed files with 72 additions and 167 deletions

View file

@ -0,0 +1,21 @@
name: Buf check
on:
workflow_dispatch:
pull_request:
branches:
- master
jobs:
buf:
runs-on: docker
container:
image: node:22-bookworm
steps:
- uses: actions/checkout@v3
- uses: https://github.com/bufbuild/buf-action@v1
with:
version: 1.46.0
pr_comment: false
push: false
archive: false

1
.github/CODEOWNERS vendored Normal file
View file

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

View file

Before

(image error) Size: 5.5 KiB

After

(image error) Size: 5.5 KiB

21
.github/workflows/dco.yml vendored Normal file
View file

@ -0,0 +1,21 @@
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 }}

View file

@ -1,3 +0,0 @@
.* @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 git.frostfs.info. Refer to [this
Pull requests can be created via GitHub. 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=.forgejo/markdown.tmpl,$${f}.md \
--doc_opt=.github/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="./.forgejo/logo.svg" width="500px" alt="FrostFS">
<img src="./.github/logo.svg" width="500px" alt="FrostFS">
</p>
<p align="center">
<a href="https://frostfs.info">FrostFS</a> API language-agnostic protocol definitions
@ -34,3 +34,4 @@ describing the feature/topic you are going to implement.
This project is licensed under the Apache 2.0 License -
see the [LICENSE](LICENSE) file for details

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
edition = "2023";
syntax = "proto3";
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,17 +61,6 @@ 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
@ -256,44 +245,3 @@ 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 @@
edition = "2023";
syntax = "proto3";
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 issues, where
describing each change briefly with a reference to GitHub 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 repository
## Push changes and release tag to Github
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 release
## Make a proper Github release
Edit an automatically-created release on git.frostfs.info
Edit an automatically-created release on Github.
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 milestone
* Close corresponding X.Y.Z Github milestone
* Make announcements in Matrix and Discord channels

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
edition = "2023";
syntax = "proto3";
package neo.fs.v2.object;
@ -124,9 +124,6 @@ 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) \
@ -573,7 +570,6 @@ 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.
@ -891,10 +887,6 @@ 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 @@
edition = "2023";
syntax = "proto3";
package neo.fs.v2.object;

View file

@ -20,10 +20,6 @@
- [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)
@ -62,7 +58,6 @@ 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);
```
@ -118,7 +113,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): \
@ -130,21 +125,6 @@ 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 -->
@ -296,54 +276,6 @@ 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,9 +223,6 @@ 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) \
@ -731,7 +728,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. Indicates that the object is virtual, manual assembly is required. |
| split_info | [SplitInfo](#neo.fs.v2.object.SplitInfo) | | Meta information of split hierarchy. |
| ec_info | [ECInfo](#neo.fs.v2.object.ECInfo) | | Meta information for EC object assembly. |

View file

@ -102,7 +102,6 @@ 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 @@
edition = "2023";
syntax = "proto3";
package neo.fs.v2.refs;

View file

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

View file

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

View file

@ -1,4 +1,4 @@
edition = "2023";
syntax = "proto3";
package neo.fs.v2.status;
@ -109,10 +109,6 @@ 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 @@
edition = "2023";
syntax = "proto3";
package neo.fs.v2.tombstone;