Compare commits
No commits in common. "master" and "feat/container_access_denied_stat" have entirely different histories.
master
...
feat/conta
197 changed files with 22203 additions and 43159 deletions
|
@ -1,70 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 184.2 51.8" style="enable-background:new 0 0 184.2 51.8;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{display:none;}
|
|
||||||
.st1{display:inline;}
|
|
||||||
.st2{fill:#01E397;}
|
|
||||||
.st3{display:inline;fill:#010032;}
|
|
||||||
.st4{display:inline;fill:#00E599;}
|
|
||||||
.st5{display:inline;fill:#00AF92;}
|
|
||||||
.st6{fill:#00C3E5;}
|
|
||||||
</style>
|
|
||||||
<g id="Layer_2">
|
|
||||||
<g id="Layer_1-2" class="st0">
|
|
||||||
<g class="st1">
|
|
||||||
<path class="st2" d="M146.6,18.3v7.2h10.9V29h-10.9v10.7h-4V14.8h18v3.5H146.6z"/>
|
|
||||||
<path class="st2" d="M180,15.7c1.7,0.9,3,2.2,4,3.8l-3,2.7c-0.6-1.3-1.5-2.4-2.6-3.3c-1.3-0.7-2.8-1-4.3-1
|
|
||||||
c-1.4-0.1-2.8,0.3-4,1.1c-0.9,0.5-1.5,1.5-1.4,2.6c0,1,0.5,1.9,1.4,2.4c1.5,0.8,3.2,1.3,4.9,1.5c1.9,0.3,3.7,0.8,5.4,1.6
|
|
||||||
c1.2,0.5,2.2,1.3,2.9,2.3c0.6,1,1,2.2,0.9,3.4c0,1.4-0.5,2.7-1.3,3.8c-0.9,1.2-2.1,2.1-3.5,2.6c-1.7,0.6-3.4,0.9-5.2,0.8
|
|
||||||
c-5,0-8.6-1.6-10.7-5l2.9-2.8c0.7,1.4,1.8,2.5,3.1,3.3c1.5,0.7,3.1,1.1,4.7,1c1.5,0.1,2.9-0.2,4.2-0.9c0.9-0.5,1.5-1.5,1.5-2.6
|
|
||||||
c0-0.9-0.5-1.8-1.3-2.2c-1.5-0.7-3.1-1.2-4.8-1.5c-1.9-0.3-3.7-0.8-5.5-1.5c-1.2-0.5-2.2-1.4-3-2.4c-0.6-1-1-2.2-0.9-3.4
|
|
||||||
c0-1.4,0.4-2.7,1.2-3.8c0.8-1.2,2-2.2,3.3-2.8c1.6-0.7,3.4-1.1,5.2-1C176.1,14.3,178.2,14.8,180,15.7z"/>
|
|
||||||
</g>
|
|
||||||
<path class="st3" d="M73.3,16.3c1.9,1.9,2.9,4.5,2.7,7.1v15.9h-4V24.8c0-2.6-0.5-4.5-1.6-5.7c-1.2-1.2-2.8-1.8-4.5-1.7
|
|
||||||
c-1.3,0-2.5,0.3-3.7,0.8c-1.2,0.7-2.2,1.7-2.9,2.9c-0.8,1.5-1.1,3.2-1.1,4.9v13.3h-4V15.1l3.6,1.5v1.7c0.8-1.5,2.1-2.6,3.6-3.3
|
|
||||||
c1.5-0.8,3.2-1.2,4.9-1.1C68.9,13.8,71.3,14.7,73.3,16.3z"/>
|
|
||||||
<path class="st3" d="M104.4,28.3H85.6c0.1,2.2,1,4.3,2.5,5.9c1.5,1.4,3.5,2.2,5.6,2.1c1.6,0.1,3.2-0.2,4.6-0.9
|
|
||||||
c1.1-0.6,2-1.6,2.5-2.8l3.3,1.8c-0.9,1.7-2.3,3.1-4,4c-2,1-4.2,1.5-6.4,1.4c-3.7,0-6.7-1.1-8.8-3.4s-3.2-5.5-3.2-9.6s1-7.2,3-9.5
|
|
||||||
s5-3.4,8.7-3.4c2.1-0.1,4.2,0.5,6.1,1.5c1.6,1,3,2.5,3.8,4.2c0.9,1.8,1.3,3.9,1.3,5.9C104.6,26.4,104.6,27.4,104.4,28.3z
|
|
||||||
M88.1,19.3c-1.4,1.5-2.2,3.4-2.4,5.5h15.1c-0.2-2-1-3.9-2.3-5.5c-1.4-1.3-3.2-2-5.1-1.9C91.5,17.3,89.6,18,88.1,19.3z"/>
|
|
||||||
<path class="st3" d="M131,17.3c2.2,2.3,3.2,5.5,3.2,9.5s-1,7.3-3.2,9.6s-5.1,3.4-8.8,3.4s-6.7-1.1-8.9-3.4s-3.2-5.5-3.2-9.6
|
|
||||||
s1.1-7.2,3.2-9.5s5.1-3.4,8.9-3.4S128.9,15,131,17.3z M116.2,19.9c-1.5,2-2.2,4.4-2.1,6.9c-0.2,2.5,0.6,5,2.1,7
|
|
||||||
c1.5,1.7,3.7,2.7,6,2.6c2.3,0.1,4.4-0.9,5.9-2.6c1.5-2,2.3-4.5,2.1-7c0.1-2.5-0.6-4.9-2.1-6.9c-1.5-1.7-3.6-2.7-5.9-2.6
|
|
||||||
C119.9,17.2,117.7,18.2,116.2,19.9z"/>
|
|
||||||
<polygon class="st4" points="0,9.1 0,43.7 22.5,51.8 22.5,16.9 46.8,7.9 24.8,0 "/>
|
|
||||||
<polygon class="st5" points="24.3,17.9 24.3,36.8 46.8,44.9 46.8,9.6 "/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st6" d="M41.6,17.5H28.2v6.9h10.4v3.3H28.2v10.2h-3.9V14.2h17.2V17.5z"/>
|
|
||||||
<path class="st6" d="M45.8,37.9v-18h3.3l0.4,3.2c0.5-1.2,1.2-2.1,2.1-2.7c0.9-0.6,2.1-0.9,3.5-0.9c0.4,0,0.7,0,1.1,0.1
|
|
||||||
c0.4,0.1,0.7,0.2,0.9,0.3l-0.5,3.4c-0.3-0.1-0.6-0.2-0.9-0.2C55.4,23,54.9,23,54.4,23c-0.7,0-1.5,0.2-2.2,0.6
|
|
||||||
c-0.7,0.4-1.3,1-1.8,1.8s-0.7,1.8-0.7,3v9.5H45.8z"/>
|
|
||||||
<path class="st6" d="M68.6,19.6c1.8,0,3.3,0.4,4.6,1.1c1.3,0.7,2.4,1.8,3.1,3.2s1.1,3.1,1.1,5c0,1.9-0.4,3.6-1.1,5
|
|
||||||
c-0.8,1.4-1.8,2.5-3.1,3.2c-1.3,0.7-2.9,1.1-4.6,1.1s-3.3-0.4-4.6-1.1c-1.3-0.7-2.4-1.8-3.2-3.2c-0.8-1.4-1.2-3.1-1.2-5
|
|
||||||
c0-1.9,0.4-3.6,1.2-5s1.8-2.5,3.2-3.2C65.3,19.9,66.8,19.6,68.6,19.6z M68.6,22.6c-1.1,0-2,0.2-2.8,0.7c-0.8,0.5-1.3,1.2-1.7,2.1
|
|
||||||
s-0.6,2.1-0.6,3.5c0,1.3,0.2,2.5,0.6,3.4s1,1.7,1.7,2.2s1.7,0.7,2.8,0.7c1.1,0,2-0.2,2.7-0.7c0.7-0.5,1.3-1.2,1.7-2.2
|
|
||||||
s0.6-2.1,0.6-3.4c0-1.4-0.2-2.5-0.6-3.5s-1-1.6-1.7-2.1C70.6,22.8,69.6,22.6,68.6,22.6z"/>
|
|
||||||
<path class="st6" d="M89.2,38.3c-1.8,0-3.4-0.3-4.9-1c-1.5-0.7-2.7-1.7-3.5-3l2.7-2.3c0.5,1,1.3,1.8,2.3,2.4
|
|
||||||
c1,0.6,2.2,0.9,3.6,0.9c1.1,0,2-0.2,2.6-0.6c0.6-0.4,1-0.9,1-1.6c0-0.5-0.2-0.9-0.5-1.2s-0.9-0.6-1.7-0.8l-3.8-0.8
|
|
||||||
c-1.9-0.4-3.3-1-4.1-1.9c-0.8-0.9-1.2-1.9-1.2-3.3c0-1,0.3-1.9,0.9-2.7c0.6-0.8,1.4-1.5,2.5-2s2.5-0.8,4-0.8c1.8,0,3.3,0.3,4.6,1
|
|
||||||
c1.3,0.6,2.2,1.5,2.9,2.7l-2.7,2.2c-0.5-1-1.1-1.7-2-2.1c-0.9-0.5-1.8-0.7-2.8-0.7c-0.8,0-1.4,0.1-2,0.3c-0.6,0.2-1,0.5-1.3,0.8
|
|
||||||
c-0.3,0.3-0.4,0.7-0.4,1.2c0,0.5,0.2,0.9,0.5,1.3s1,0.6,1.9,0.8l4.1,0.9c1.7,0.3,2.9,0.9,3.7,1.7c0.7,0.8,1.1,1.8,1.1,2.9
|
|
||||||
c0,1.2-0.3,2.2-0.9,3c-0.6,0.9-1.5,1.6-2.6,2C92.1,38.1,90.7,38.3,89.2,38.3z"/>
|
|
||||||
<path class="st6" d="M112.8,19.9v3H99.3v-3H112.8z M106.6,14.6v17.9c0,0.9,0.2,1.5,0.7,1.9c0.5,0.4,1.1,0.6,1.9,0.6
|
|
||||||
c0.6,0,1.2-0.1,1.7-0.3c0.5-0.2,0.9-0.5,1.3-0.8l0.9,2.8c-0.6,0.5-1.2,0.9-2,1.1c-0.8,0.3-1.7,0.4-2.7,0.4c-1,0-2-0.2-2.8-0.5
|
|
||||||
s-1.5-0.9-2-1.6c-0.5-0.8-0.7-1.7-0.8-3V15.7L106.6,14.6z"/>
|
|
||||||
<path d="M137.9,17.5h-13.3v6.9h10.4v3.3h-10.4v10.2h-3.9V14.2h17.2V17.5z"/>
|
|
||||||
<path d="M150.9,13.8c2.1,0,4,0.4,5.5,1.2c1.6,0.8,2.9,2,4,3.5l-2.6,2.5c-0.9-1.4-1.9-2.4-3.1-3c-1.1-0.6-2.5-0.9-4-0.9
|
|
||||||
c-1.2,0-2.1,0.2-2.8,0.5c-0.7,0.3-1.3,0.7-1.6,1.2c-0.3,0.5-0.5,1.1-0.5,1.7c0,0.7,0.3,1.4,0.8,1.9c0.5,0.6,1.5,1,2.9,1.3
|
|
||||||
l4.8,1.1c2.3,0.5,3.9,1.3,4.9,2.3c1,1,1.4,2.3,1.4,3.9c0,1.5-0.4,2.7-1.2,3.8c-0.8,1.1-1.9,1.9-3.3,2.5s-3.1,0.9-5,0.9
|
|
||||||
c-1.7,0-3.2-0.2-4.5-0.6c-1.3-0.4-2.5-1-3.5-1.8c-1-0.7-1.8-1.6-2.5-2.6l2.7-2.7c0.5,0.8,1.1,1.6,1.9,2.2
|
|
||||||
c0.8,0.7,1.7,1.2,2.7,1.5c1,0.4,2.2,0.5,3.4,0.5c1.1,0,2.1-0.1,2.9-0.4c0.8-0.3,1.4-0.7,1.8-1.2c0.4-0.5,0.6-1.1,0.6-1.9
|
|
||||||
c0-0.7-0.2-1.3-0.7-1.8c-0.5-0.5-1.3-0.9-2.6-1.2l-5.2-1.2c-1.4-0.3-2.6-0.8-3.6-1.3c-0.9-0.6-1.6-1.3-2.1-2.1s-0.7-1.8-0.7-2.8
|
|
||||||
c0-1.3,0.4-2.6,1.1-3.7c0.7-1.1,1.8-2,3.2-2.6C147.3,14.1,148.9,13.8,150.9,13.8z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 5.5 KiB |
|
@ -13,7 +13,7 @@ jobs:
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
go-version: '1.23'
|
go-version: '1.21'
|
||||||
|
|
||||||
- name: Run commit format checker
|
- name: Run commit format checker
|
||||||
uses: https://git.frostfs.info/TrueCloudLab/dco-go@v3
|
uses: https://git.frostfs.info/TrueCloudLab/dco-go@v3
|
||||||
|
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
go-version: '1.23'
|
go-version: '1.20'
|
||||||
cache: true
|
cache: true
|
||||||
|
|
||||||
- name: golangci-lint
|
- name: golangci-lint
|
||||||
|
@ -24,7 +24,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go_versions: [ '1.22', '1.23' ]
|
go_versions: [ '1.19', '1.20' ]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
go-version: '1.23'
|
go-version: '1.20'
|
||||||
cache: true
|
cache: true
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
|
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* @TrueCloudLab/storage-core @TrueCloudLab/storage-services @TrueCloudLab/committers
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
.idea
|
.idea
|
||||||
bin
|
bin
|
||||||
temp
|
temp
|
||||||
|
/vendor/
|
||||||
|
|
|
@ -9,11 +9,13 @@ run:
|
||||||
# include test files or not, default is true
|
# include test files or not, default is true
|
||||||
tests: false
|
tests: false
|
||||||
|
|
||||||
|
skip-files:
|
||||||
|
- (^|.*/)grpc/(.*)
|
||||||
|
|
||||||
# output configuration options
|
# output configuration options
|
||||||
output:
|
output:
|
||||||
# colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
|
# colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
|
||||||
formats:
|
format: tab
|
||||||
- format: tab
|
|
||||||
|
|
||||||
# all available settings of specific linters
|
# all available settings of specific linters
|
||||||
linters-settings:
|
linters-settings:
|
||||||
|
@ -50,7 +52,7 @@ linters:
|
||||||
- bidichk
|
- bidichk
|
||||||
- durationcheck
|
- durationcheck
|
||||||
- exhaustive
|
- exhaustive
|
||||||
- copyloopvar
|
- exportloopref
|
||||||
- gofmt
|
- gofmt
|
||||||
- goimports
|
- goimports
|
||||||
- misspell
|
- misspell
|
||||||
|
@ -65,9 +67,6 @@ linters:
|
||||||
fast: false
|
fast: false
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
exclude-files:
|
|
||||||
- (^|.*/)grpc/(.*)
|
|
||||||
|
|
||||||
# Excluding configuration per-path, per-linter, per-text and per-source
|
# Excluding configuration per-path, per-linter, per-text and per-source
|
||||||
exclude-rules:
|
exclude-rules:
|
||||||
- path: v2 # ignore stutters in universal structures due to protobuf compatibility
|
- path: v2 # ignore stutters in universal structures due to protobuf compatibility
|
||||||
|
|
|
@ -37,6 +37,6 @@ repos:
|
||||||
language: system
|
language: system
|
||||||
|
|
||||||
- repo: https://github.com/golangci/golangci-lint
|
- repo: https://github.com/golangci/golangci-lint
|
||||||
rev: v1.60.3
|
rev: v1.56.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: golangci-lint
|
- id: golangci-lint
|
||||||
|
|
|
@ -47,4 +47,4 @@ Initial public release.
|
||||||
This project is a fork of [NeoFS](https://github.com/nspcc-dev/neofs-api-go) from version v2.14.0.
|
This project is a fork of [NeoFS](https://github.com/nspcc-dev/neofs-api-go) from version v2.14.0.
|
||||||
To see CHANGELOG for older versions, refer to https://github.com/nspcc-dev/neofs-api-go/blob/master/CHANGELOG.md.
|
To see CHANGELOG for older versions, refer to https://github.com/nspcc-dev/neofs-api-go/blob/master/CHANGELOG.md.
|
||||||
|
|
||||||
[Unreleased]: https://git.frostfs.info/TrueCloudLab/frostfs-api-go/compare/v2.16.0...master
|
[Unreleased]: https://github.com/TrueCloudLab/compare/v2.15.0...master
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
.* @TrueCloudLab/storage-core-committers @TrueCloudLab/storage-core-developers @TrueCloudLab/storage-services-committers @TrueCloudLab/storage-services-developers
|
|
||||||
.forgejo/.* @potyarkin
|
|
|
@ -3,8 +3,8 @@
|
||||||
First, thank you for contributing! We love and encourage pull requests from
|
First, thank you for contributing! We love and encourage pull requests from
|
||||||
everyone. Please follow the guidelines:
|
everyone. Please follow the guidelines:
|
||||||
|
|
||||||
- Check the open [issues](https://git.frostfs.info/TrueCloudLab/frostfs-api-go/issues) and
|
- Check the open [issues](https://github.com/TrueCloudLab/frostfs-api-go/issues) and
|
||||||
[pull requests](https://git.frostfs.info/TrueCloudLab/frostfs-api-go/pulls) for existing
|
[pull requests](https://github.com/TrueCloudLab/frostfs-api-go/pulls) for existing
|
||||||
discussions.
|
discussions.
|
||||||
|
|
||||||
- Open an issue first, to discuss a new feature or enhancement.
|
- Open an issue first, to discuss a new feature or enhancement.
|
||||||
|
@ -25,20 +25,19 @@ Start by forking the `frostfs-api-go` repository, make changes in a branch and t
|
||||||
send a pull request. We encourage pull requests to discuss code changes. Here
|
send a pull request. We encourage pull requests to discuss code changes. Here
|
||||||
are the steps in details:
|
are the steps in details:
|
||||||
|
|
||||||
### Set up your repository
|
### Set up your GitHub Repository
|
||||||
|
Fork [FrostFS node upstream](https://github.com/TrueCloudLab/frostfs-api-go/fork) source
|
||||||
Fork [FrostFS node upstream](https://git.frostfs.info/TrueCloudLab/frostfs-api-go/fork) source
|
|
||||||
repository to your own personal repository. Copy the URL of your fork (you will
|
repository to your own personal repository. Copy the URL of your fork (you will
|
||||||
need it for the `git clone` command below).
|
need it for the `git clone` command below).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://git.frostfs.info/TrueCloudLab/frostfs-api-go
|
$ git clone https://github.com/TrueCloudLab/frostfs-api-go
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set up git remote as ``upstream``
|
### Set up git remote as ``upstream``
|
||||||
```sh
|
```sh
|
||||||
$ cd frostfs-api-go
|
$ cd frostfs-api-go
|
||||||
$ git remote add upstream https://git.frostfs.info/TrueCloudLab/frostfs-api-go
|
$ git remote add upstream https://github.com/TrueCloudLab/frostfs-api-go
|
||||||
$ git fetch upstream
|
$ git fetch upstream
|
||||||
$ git merge upstream/master
|
$ git merge upstream/master
|
||||||
...
|
...
|
||||||
|
@ -87,7 +86,7 @@ $ git push origin feature/123-something_awesome
|
||||||
```
|
```
|
||||||
|
|
||||||
### Create a Pull Request
|
### 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
|
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
|
detailed steps on how to create a pull request. After a Pull Request gets peer
|
||||||
reviewed and approved, it will be merged.
|
reviewed and approved, it will be merged.
|
||||||
|
|
58
Makefile
58
Makefile
|
@ -2,19 +2,8 @@
|
||||||
SHELL = bash
|
SHELL = bash
|
||||||
|
|
||||||
VERSION ?= $(shell git describe --tags --match "v*" --abbrev=8 --dirty --always)
|
VERSION ?= $(shell git describe --tags --match "v*" --abbrev=8 --dirty --always)
|
||||||
PROTOC_VERSION ?= 27.2
|
|
||||||
PROTOC_GEN_GO_VERSION ?= $(shell go list -f '{{.Version}}' -m google.golang.org/protobuf)
|
|
||||||
PROTOC_OS_VERSION=osx-x86_64
|
|
||||||
ifeq ($(shell uname), Linux)
|
|
||||||
PROTOC_OS_VERSION=linux-x86_64
|
|
||||||
endif
|
|
||||||
|
|
||||||
BIN = bin
|
.PHONY: dep fmts fumpt imports protoc test lint version help
|
||||||
PROTOBUF_DIR ?= $(abspath $(BIN))/protobuf
|
|
||||||
PROTOC_DIR ?= $(PROTOBUF_DIR)/protoc-v$(PROTOC_VERSION)
|
|
||||||
PROTOC_GEN_GO_DIR ?= $(PROTOBUF_DIR)/protoc-gen-go-$(PROTOC_GEN_GO_VERSION)
|
|
||||||
|
|
||||||
.PHONY: dep fmts fumpt imports protoc test lint version help $(BIN)/protogen protoc-test
|
|
||||||
|
|
||||||
# Pull go dependencies
|
# Pull go dependencies
|
||||||
dep:
|
dep:
|
||||||
|
@ -34,7 +23,7 @@ fmts: fumpt imports
|
||||||
# Reformat imports
|
# Reformat imports
|
||||||
imports:
|
imports:
|
||||||
@echo "⇒ Processing goimports check"
|
@echo "⇒ Processing goimports check"
|
||||||
@for f in `find . -type f -name '*.go' -not -name '*.pb.go' -prune`; do \
|
@for f in `find . -type f -name '*.go' -not -path './vendor/*' -not -name '*.pb.go' -prune`; do \
|
||||||
goimports -w $$f; \
|
goimports -w $$f; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -43,48 +32,21 @@ fumpt:
|
||||||
@echo "⇒ Processing gofumpt check"
|
@echo "⇒ Processing gofumpt check"
|
||||||
@gofumpt -l -w .
|
@gofumpt -l -w .
|
||||||
|
|
||||||
# Install protoc
|
|
||||||
protoc-install:
|
|
||||||
@rm -rf $(PROTOBUF_DIR)
|
|
||||||
@mkdir -p $(PROTOBUF_DIR)
|
|
||||||
@echo "⇒ Installing protoc... "
|
|
||||||
@wget -q -O $(PROTOBUF_DIR)/protoc-$(PROTOC_VERSION).zip 'https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOC_VERSION)/protoc-$(PROTOC_VERSION)-$(PROTOC_OS_VERSION).zip'
|
|
||||||
@unzip -q -o $(PROTOBUF_DIR)/protoc-$(PROTOC_VERSION).zip -d $(PROTOC_DIR)
|
|
||||||
@rm $(PROTOBUF_DIR)/protoc-$(PROTOC_VERSION).zip
|
|
||||||
@echo "⇒ Installing protoc-gen-go..."
|
|
||||||
@GOBIN=$(PROTOC_GEN_GO_DIR) go install -v google.golang.org/protobuf/...@$(PROTOC_GEN_GO_VERSION)
|
|
||||||
|
|
||||||
|
|
||||||
# Regenerate code for proto files
|
# Regenerate code for proto files
|
||||||
protoc:
|
protoc:
|
||||||
@if [ ! -d "$(PROTOC_DIR)" ] || [ ! -d "$(PROTOC_GEN_GO_DIR)" ]; then \
|
@GOPRIVATE=github.com/TrueCloudLab go mod vendor
|
||||||
make protoc-install; \
|
# Install specific version for protobuf lib
|
||||||
fi
|
@go list -f '{{.Path}}/...@{{.Version}}' -m google.golang.org/protobuf | xargs go install -v
|
||||||
# Protoc generate
|
# Protoc generate
|
||||||
@for f in `find . -type f -name '*.proto' -not -path './bin/*' -not -path './util/proto/test/*'`; do \
|
@for f in `find . -type f -name '*.proto' -not -path './vendor/*'`; do \
|
||||||
echo "⇒ Processing $$f "; \
|
echo "⇒ Processing $$f "; \
|
||||||
$(PROTOC_DIR)/bin/protoc \
|
protoc \
|
||||||
--proto_path=.:$(PROTOC_DIR)/include:/usr/local/include \
|
--proto_path=.:./vendor:/usr/local/include \
|
||||||
--plugin=protoc-gen-go-frostfs=$(abspath ./bin/protogen) \
|
--go_out=. --go_opt=paths=source_relative \
|
||||||
--go-frostfs_out=fuzz=true:. \
|
|
||||||
--go-frostfs_opt=paths=source_relative \
|
|
||||||
--go-grpc_opt=require_unimplemented_servers=false \
|
--go-grpc_opt=require_unimplemented_servers=false \
|
||||||
--go-grpc_out=. --go-grpc_opt=paths=source_relative $$f; \
|
--go-grpc_out=. --go-grpc_opt=paths=source_relative $$f; \
|
||||||
done
|
done
|
||||||
|
rm -rf vendor
|
||||||
$(BIN)/protogen:
|
|
||||||
@go build -v -trimpath \
|
|
||||||
-o $(BIN)/protogen \
|
|
||||||
./util/protogen
|
|
||||||
|
|
||||||
protoc-test: protoc $(BIN)/protogen
|
|
||||||
@$(PROTOC_DIR)/bin/protoc \
|
|
||||||
--go_out=. --go_opt=paths=source_relative \
|
|
||||||
--plugin=protoc-gen-go-frostfs=$(abspath $(BIN)/protogen) \
|
|
||||||
--go-frostfs_opt=Mutil/proto/test/test.proto=git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/test/custom \
|
|
||||||
--go-frostfs_opt=module=git.frostfs.info/TrueCloudLab/frostfs-api-go/v2 \
|
|
||||||
--go-frostfs_out=. --go-frostfs_opt=paths=import \
|
|
||||||
./util/proto/test/test.proto
|
|
||||||
|
|
||||||
# Run Unit Test with go test
|
# Run Unit Test with go test
|
||||||
test: GOFLAGS ?= "-count=1"
|
test: GOFLAGS ?= "-count=1"
|
||||||
|
|
16
README.md
16
README.md
|
@ -1,25 +1,27 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="./.forgejo/logo.svg" width="500px" alt="FrostFS">
|
<img src="./.github/logo.svg" width="500px" alt="FrostFS">
|
||||||
</p>
|
</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
Low-level Golang API for <a href="https://frostfs.info">FrostFS</a>
|
Low-level Golang API for <a href="https://frostfs.info">FrostFS</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||

|

|
||||||
[](https://goreportcard.com/report/git.frostfs.info/TrueCloudLab/frostfs-api-go)
|
[](https://codecov.io/gh/TrueCloudLab/frostfs-api-go)
|
||||||
[](https://git.frostfs.info/TrueCloudLab/frostfs-api-go)
|
[](https://goreportcard.com/report/github.com/TrueCloudLab/frostfs-api-go)
|
||||||
|
[](https://github.com/TrueCloudLab/frostfs-api-go)
|
||||||
|

|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
Go implementation of recent [FrostFS API](https://git.frostfs.info/TrueCloudLab/frostfs-api)
|
Go implementation of recent [FrostFS API](https://github.com/TrueCloudLab/frostfs-api)
|
||||||
versions. For a more high-level SDK see [FrostFS SDK](https://git.frostfs.info/TrueCloudLab/frostfs-sdk-go).
|
versions. For a more high-level SDK see [FrostFS SDK](https://github.com/TrueCloudLab/frostfs-sdk-go).
|
||||||
|
|
||||||
## Frostfs-Api compatibility
|
## Frostfs-Api compatibility
|
||||||
|
|
||||||
|frostfs-api-go version|supported frostfs-api versions|
|
|frostfs-api-go version|supported frostfs-api versions|
|
||||||
|:------------------:|:--------------------------:|
|
|:------------------:|:--------------------------:|
|
||||||
|v2.14.x|[v2.14.0](https://git.frostfs.info/TrueCloudLab/frostfs-api/releases/tag/v2.14.0)|
|
|v2.14.x|[v2.14.0](https://github.com/TrueCloudLab/frostfs-api/releases/tag/v2.14.0)|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
46
accounting/grpc/service.go
Normal file
46
accounting/grpc/service.go
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package accounting
|
||||||
|
|
||||||
|
import (
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetOwnerId sets identifier of the account owner.
|
||||||
|
func (m *BalanceRequest_Body) SetOwnerId(v *refs.OwnerID) {
|
||||||
|
m.OwnerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *BalanceRequest) SetBody(v *BalanceRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *BalanceRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *BalanceRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBalance sets balance value of the response.
|
||||||
|
func (m *BalanceResponse_Body) SetBalance(v *Decimal) {
|
||||||
|
m.Balance = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *BalanceResponse) SetBody(v *BalanceResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *BalanceResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *BalanceResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
451
accounting/grpc/service.pb.go
generated
Normal file
451
accounting/grpc/service.pb.go
generated
Normal file
|
@ -0,0 +1,451 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.33.0
|
||||||
|
// protoc v4.25.3
|
||||||
|
// source: accounting/grpc/service.proto
|
||||||
|
|
||||||
|
package accounting
|
||||||
|
|
||||||
|
import (
|
||||||
|
grpc1 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// BalanceRequest message
|
||||||
|
type BalanceRequest struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Body of the balance request message.
|
||||||
|
Body *BalanceRequest_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
|
||||||
|
// Carries request meta information. Header data is used only to regulate
|
||||||
|
// message transport and does not affect request execution.
|
||||||
|
MetaHeader *grpc.RequestMetaHeader `protobuf:"bytes,2,opt,name=meta_header,json=metaHeader,proto3" json:"meta_header,omitempty"`
|
||||||
|
// Carries request verification information. This header is used to
|
||||||
|
// authenticate the nodes of the message route and check the correctness of
|
||||||
|
// transmission.
|
||||||
|
VerifyHeader *grpc.RequestVerificationHeader `protobuf:"bytes,3,opt,name=verify_header,json=verifyHeader,proto3" json:"verify_header,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) Reset() {
|
||||||
|
*x = BalanceRequest{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BalanceRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BalanceRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BalanceRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_accounting_grpc_service_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) GetBody() *BalanceRequest_Body {
|
||||||
|
if x != nil {
|
||||||
|
return x.Body
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) GetMetaHeader() *grpc.RequestMetaHeader {
|
||||||
|
if x != nil {
|
||||||
|
return x.MetaHeader
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest) GetVerifyHeader() *grpc.RequestVerificationHeader {
|
||||||
|
if x != nil {
|
||||||
|
return x.VerifyHeader
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// BalanceResponse message
|
||||||
|
type BalanceResponse struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Body of the balance response message.
|
||||||
|
Body *BalanceResponse_Body `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
|
||||||
|
// Carries response meta information. Header data is used only to regulate
|
||||||
|
// message transport and does not affect request execution.
|
||||||
|
MetaHeader *grpc.ResponseMetaHeader `protobuf:"bytes,2,opt,name=meta_header,json=metaHeader,proto3" json:"meta_header,omitempty"`
|
||||||
|
// Carries response verification information. This header is used to
|
||||||
|
// authenticate the nodes of the message route and check the correctness of
|
||||||
|
// transmission.
|
||||||
|
VerifyHeader *grpc.ResponseVerificationHeader `protobuf:"bytes,3,opt,name=verify_header,json=verifyHeader,proto3" json:"verify_header,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) Reset() {
|
||||||
|
*x = BalanceResponse{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BalanceResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[1]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BalanceResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BalanceResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_accounting_grpc_service_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) GetBody() *BalanceResponse_Body {
|
||||||
|
if x != nil {
|
||||||
|
return x.Body
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) GetMetaHeader() *grpc.ResponseMetaHeader {
|
||||||
|
if x != nil {
|
||||||
|
return x.MetaHeader
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse) GetVerifyHeader() *grpc.ResponseVerificationHeader {
|
||||||
|
if x != nil {
|
||||||
|
return x.VerifyHeader
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// To indicate the account for which the balance is requested, its identifier
|
||||||
|
// is used. It can be any existing account in NeoFS sidechain `Balance` smart
|
||||||
|
// contract. If omitted, client implementation MUST set it to the request's
|
||||||
|
// signer `OwnerID`.
|
||||||
|
type BalanceRequest_Body struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Valid user identifier in `OwnerID` format for which the balance is
|
||||||
|
// requested. Required field.
|
||||||
|
OwnerId *grpc1.OwnerID `protobuf:"bytes,1,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest_Body) Reset() {
|
||||||
|
*x = BalanceRequest_Body{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest_Body) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BalanceRequest_Body) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BalanceRequest_Body) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[2]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BalanceRequest_Body.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BalanceRequest_Body) Descriptor() ([]byte, []int) {
|
||||||
|
return file_accounting_grpc_service_proto_rawDescGZIP(), []int{0, 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceRequest_Body) GetOwnerId() *grpc1.OwnerID {
|
||||||
|
if x != nil {
|
||||||
|
return x.OwnerId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// The amount of funds in GAS token for the `OwnerID`'s account requested.
|
||||||
|
// Balance is given in the `Decimal` format to avoid precision issues with
|
||||||
|
// rounding.
|
||||||
|
type BalanceResponse_Body struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Amount of funds in GAS token for the requested account.
|
||||||
|
Balance *Decimal `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse_Body) Reset() {
|
||||||
|
*x = BalanceResponse_Body{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[3]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse_Body) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*BalanceResponse_Body) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *BalanceResponse_Body) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_accounting_grpc_service_proto_msgTypes[3]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use BalanceResponse_Body.ProtoReflect.Descriptor instead.
|
||||||
|
func (*BalanceResponse_Body) Descriptor() ([]byte, []int) {
|
||||||
|
return file_accounting_grpc_service_proto_rawDescGZIP(), []int{1, 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *BalanceResponse_Body) GetBalance() *Decimal {
|
||||||
|
if x != nil {
|
||||||
|
return x.Balance
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_accounting_grpc_service_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_accounting_grpc_service_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x1d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x72, 0x70,
|
||||||
|
0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
||||||
|
0x14, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e,
|
||||||
|
0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
|
0x74, 0x6f, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79,
|
||||||
|
0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x73, 0x65, 0x73, 0x73, 0x69,
|
||||||
|
0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x02, 0x0a, 0x0e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52,
|
||||||
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01,
|
||||||
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x61, 0x6c, 0x61,
|
||||||
|
0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52,
|
||||||
|
0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x68, 0x65,
|
||||||
|
0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6e, 0x65, 0x6f,
|
||||||
|
0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52,
|
||||||
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
|
||||||
|
0x52, 0x0a, 0x6d, 0x65, 0x74, 0x61, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0d,
|
||||||
|
0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20,
|
||||||
|
0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e,
|
||||||
|
0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56,
|
||||||
|
0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
|
||||||
|
0x72, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a,
|
||||||
|
0x3a, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72,
|
||||||
|
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6e, 0x65, 0x6f, 0x2e,
|
||||||
|
0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72,
|
||||||
|
0x49, 0x44, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0xae, 0x02, 0x0a, 0x0f,
|
||||||
|
0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
|
||||||
|
0x3e, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
|
||||||
|
0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12,
|
||||||
|
0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02,
|
||||||
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32,
|
||||||
|
0x2e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||||
|
0x65, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x6d, 0x65, 0x74,
|
||||||
|
0x61, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66,
|
||||||
|
0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d,
|
||||||
|
0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x73, 0x65, 0x73, 0x73, 0x69,
|
||||||
|
0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66,
|
||||||
|
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x76,
|
||||||
|
0x65, 0x72, 0x69, 0x66, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x3f, 0x0a, 0x04, 0x42,
|
||||||
|
0x6f, 0x64, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01,
|
||||||
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x63, 0x69,
|
||||||
|
0x6d, 0x61, 0x6c, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x32, 0x6b, 0x0a, 0x11,
|
||||||
|
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
|
||||||
|
0x65, 0x12, 0x56, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x6e,
|
||||||
|
0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x69, 0x6e, 0x67, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
|
0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
|
||||||
|
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6d, 0x5a, 0x4a, 0x67, 0x69, 0x74,
|
||||||
|
0x2e, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66, 0x73, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x54, 0x72,
|
||||||
|
0x75, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x61, 0x62, 0x2f, 0x66, 0x72, 0x6f, 0x73, 0x74,
|
||||||
|
0x66, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0xaa, 0x02, 0x1e, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69,
|
||||||
|
0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x50, 0x49, 0x2e, 0x41, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_accounting_grpc_service_proto_rawDescOnce sync.Once
|
||||||
|
file_accounting_grpc_service_proto_rawDescData = file_accounting_grpc_service_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_accounting_grpc_service_proto_rawDescGZIP() []byte {
|
||||||
|
file_accounting_grpc_service_proto_rawDescOnce.Do(func() {
|
||||||
|
file_accounting_grpc_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounting_grpc_service_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_accounting_grpc_service_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_accounting_grpc_service_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||||
|
var file_accounting_grpc_service_proto_goTypes = []interface{}{
|
||||||
|
(*BalanceRequest)(nil), // 0: neo.fs.v2.accounting.BalanceRequest
|
||||||
|
(*BalanceResponse)(nil), // 1: neo.fs.v2.accounting.BalanceResponse
|
||||||
|
(*BalanceRequest_Body)(nil), // 2: neo.fs.v2.accounting.BalanceRequest.Body
|
||||||
|
(*BalanceResponse_Body)(nil), // 3: neo.fs.v2.accounting.BalanceResponse.Body
|
||||||
|
(*grpc.RequestMetaHeader)(nil), // 4: neo.fs.v2.session.RequestMetaHeader
|
||||||
|
(*grpc.RequestVerificationHeader)(nil), // 5: neo.fs.v2.session.RequestVerificationHeader
|
||||||
|
(*grpc.ResponseMetaHeader)(nil), // 6: neo.fs.v2.session.ResponseMetaHeader
|
||||||
|
(*grpc.ResponseVerificationHeader)(nil), // 7: neo.fs.v2.session.ResponseVerificationHeader
|
||||||
|
(*grpc1.OwnerID)(nil), // 8: neo.fs.v2.refs.OwnerID
|
||||||
|
(*Decimal)(nil), // 9: neo.fs.v2.accounting.Decimal
|
||||||
|
}
|
||||||
|
var file_accounting_grpc_service_proto_depIdxs = []int32{
|
||||||
|
2, // 0: neo.fs.v2.accounting.BalanceRequest.body:type_name -> neo.fs.v2.accounting.BalanceRequest.Body
|
||||||
|
4, // 1: neo.fs.v2.accounting.BalanceRequest.meta_header:type_name -> neo.fs.v2.session.RequestMetaHeader
|
||||||
|
5, // 2: neo.fs.v2.accounting.BalanceRequest.verify_header:type_name -> neo.fs.v2.session.RequestVerificationHeader
|
||||||
|
3, // 3: neo.fs.v2.accounting.BalanceResponse.body:type_name -> neo.fs.v2.accounting.BalanceResponse.Body
|
||||||
|
6, // 4: neo.fs.v2.accounting.BalanceResponse.meta_header:type_name -> neo.fs.v2.session.ResponseMetaHeader
|
||||||
|
7, // 5: neo.fs.v2.accounting.BalanceResponse.verify_header:type_name -> neo.fs.v2.session.ResponseVerificationHeader
|
||||||
|
8, // 6: neo.fs.v2.accounting.BalanceRequest.Body.owner_id:type_name -> neo.fs.v2.refs.OwnerID
|
||||||
|
9, // 7: neo.fs.v2.accounting.BalanceResponse.Body.balance:type_name -> neo.fs.v2.accounting.Decimal
|
||||||
|
0, // 8: neo.fs.v2.accounting.AccountingService.Balance:input_type -> neo.fs.v2.accounting.BalanceRequest
|
||||||
|
1, // 9: neo.fs.v2.accounting.AccountingService.Balance:output_type -> neo.fs.v2.accounting.BalanceResponse
|
||||||
|
9, // [9:10] is the sub-list for method output_type
|
||||||
|
8, // [8:9] is the sub-list for method input_type
|
||||||
|
8, // [8:8] is the sub-list for extension type_name
|
||||||
|
8, // [8:8] is the sub-list for extension extendee
|
||||||
|
0, // [0:8] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_accounting_grpc_service_proto_init() }
|
||||||
|
func file_accounting_grpc_service_proto_init() {
|
||||||
|
if File_accounting_grpc_service_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file_accounting_grpc_types_proto_init()
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_accounting_grpc_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*BalanceRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_accounting_grpc_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*BalanceResponse); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_accounting_grpc_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*BalanceRequest_Body); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_accounting_grpc_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*BalanceResponse_Body); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_accounting_grpc_service_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 4,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 1,
|
||||||
|
},
|
||||||
|
GoTypes: file_accounting_grpc_service_proto_goTypes,
|
||||||
|
DependencyIndexes: file_accounting_grpc_service_proto_depIdxs,
|
||||||
|
MessageInfos: file_accounting_grpc_service_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_accounting_grpc_service_proto = out.File
|
||||||
|
file_accounting_grpc_service_proto_rawDesc = nil
|
||||||
|
file_accounting_grpc_service_proto_goTypes = nil
|
||||||
|
file_accounting_grpc_service_proto_depIdxs = nil
|
||||||
|
}
|
768
accounting/grpc/service_frostfs.pb.go
generated
768
accounting/grpc/service_frostfs.pb.go
generated
|
@ -1,768 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
import (
|
|
||||||
json "encoding/json"
|
|
||||||
fmt "fmt"
|
|
||||||
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
|
||||||
grpc1 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc"
|
|
||||||
pool "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
|
|
||||||
proto "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
encoding "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/encoding"
|
|
||||||
easyproto "github.com/VictoriaMetrics/easyproto"
|
|
||||||
jlexer "github.com/mailru/easyjson/jlexer"
|
|
||||||
jwriter "github.com/mailru/easyjson/jwriter"
|
|
||||||
)
|
|
||||||
|
|
||||||
type BalanceRequest_Body struct {
|
|
||||||
OwnerId *grpc.OwnerID `json:"ownerId"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*BalanceRequest_Body)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*BalanceRequest_Body)(nil)
|
|
||||||
_ json.Marshaler = (*BalanceRequest_Body)(nil)
|
|
||||||
_ json.Unmarshaler = (*BalanceRequest_Body)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *BalanceRequest_Body) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(1, x.OwnerId)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *BalanceRequest_Body) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *BalanceRequest_Body) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.OwnerId != nil {
|
|
||||||
x.OwnerId.EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *BalanceRequest_Body) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "BalanceRequest_Body")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // OwnerId
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "OwnerId")
|
|
||||||
}
|
|
||||||
x.OwnerId = new(grpc.OwnerID)
|
|
||||||
if err := x.OwnerId.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest_Body) GetOwnerId() *grpc.OwnerID {
|
|
||||||
if x != nil {
|
|
||||||
return x.OwnerId
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest_Body) SetOwnerId(v *grpc.OwnerID) {
|
|
||||||
x.OwnerId = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *BalanceRequest_Body) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"ownerId\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.OwnerId.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *BalanceRequest_Body) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest_Body) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "ownerId":
|
|
||||||
{
|
|
||||||
var f *grpc.OwnerID
|
|
||||||
f = new(grpc.OwnerID)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.OwnerId = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type BalanceRequest struct {
|
|
||||||
Body *BalanceRequest_Body `json:"body"`
|
|
||||||
MetaHeader *grpc1.RequestMetaHeader `json:"metaHeader"`
|
|
||||||
VerifyHeader *grpc1.RequestVerificationHeader `json:"verifyHeader"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*BalanceRequest)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*BalanceRequest)(nil)
|
|
||||||
_ json.Marshaler = (*BalanceRequest)(nil)
|
|
||||||
_ json.Unmarshaler = (*BalanceRequest)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *BalanceRequest) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(1, x.Body)
|
|
||||||
size += proto.NestedStructureSize(2, x.MetaHeader)
|
|
||||||
size += proto.NestedStructureSize(3, x.VerifyHeader)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadSignedData fills buf with signed data of x.
|
|
||||||
// If buffer length is less than x.SignedDataSize(), new buffer is allocated.
|
|
||||||
//
|
|
||||||
// Returns any error encountered which did not allow writing the data completely.
|
|
||||||
// Otherwise, returns the buffer in which the data is written.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same signed data.
|
|
||||||
func (x *BalanceRequest) SignedDataSize() int {
|
|
||||||
return x.GetBody().StableSize()
|
|
||||||
}
|
|
||||||
|
|
||||||
// SignedDataSize returns size of the request signed data in bytes.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same signed data size.
|
|
||||||
func (x *BalanceRequest) ReadSignedData(buf []byte) ([]byte, error) {
|
|
||||||
return x.GetBody().MarshalProtobuf(buf), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *BalanceRequest) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *BalanceRequest) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.Body != nil {
|
|
||||||
x.Body.EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
if x.MetaHeader != nil {
|
|
||||||
x.MetaHeader.EmitProtobuf(mm.AppendMessage(2))
|
|
||||||
}
|
|
||||||
if x.VerifyHeader != nil {
|
|
||||||
x.VerifyHeader.EmitProtobuf(mm.AppendMessage(3))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *BalanceRequest) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "BalanceRequest")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Body
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Body")
|
|
||||||
}
|
|
||||||
x.Body = new(BalanceRequest_Body)
|
|
||||||
if err := x.Body.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 2: // MetaHeader
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "MetaHeader")
|
|
||||||
}
|
|
||||||
x.MetaHeader = new(grpc1.RequestMetaHeader)
|
|
||||||
if err := x.MetaHeader.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 3: // VerifyHeader
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "VerifyHeader")
|
|
||||||
}
|
|
||||||
x.VerifyHeader = new(grpc1.RequestVerificationHeader)
|
|
||||||
if err := x.VerifyHeader.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) GetBody() *BalanceRequest_Body {
|
|
||||||
if x != nil {
|
|
||||||
return x.Body
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) SetBody(v *BalanceRequest_Body) {
|
|
||||||
x.Body = v
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) GetMetaHeader() *grpc1.RequestMetaHeader {
|
|
||||||
if x != nil {
|
|
||||||
return x.MetaHeader
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) SetMetaHeader(v *grpc1.RequestMetaHeader) {
|
|
||||||
x.MetaHeader = v
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) GetVerifyHeader() *grpc1.RequestVerificationHeader {
|
|
||||||
if x != nil {
|
|
||||||
return x.VerifyHeader
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) SetVerifyHeader(v *grpc1.RequestVerificationHeader) {
|
|
||||||
x.VerifyHeader = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *BalanceRequest) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"body\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.Body.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"metaHeader\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.MetaHeader.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"verifyHeader\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.VerifyHeader.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *BalanceRequest) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *BalanceRequest) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "body":
|
|
||||||
{
|
|
||||||
var f *BalanceRequest_Body
|
|
||||||
f = new(BalanceRequest_Body)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.Body = f
|
|
||||||
}
|
|
||||||
case "metaHeader":
|
|
||||||
{
|
|
||||||
var f *grpc1.RequestMetaHeader
|
|
||||||
f = new(grpc1.RequestMetaHeader)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.MetaHeader = f
|
|
||||||
}
|
|
||||||
case "verifyHeader":
|
|
||||||
{
|
|
||||||
var f *grpc1.RequestVerificationHeader
|
|
||||||
f = new(grpc1.RequestVerificationHeader)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.VerifyHeader = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type BalanceResponse_Body struct {
|
|
||||||
Balance *Decimal `json:"balance"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*BalanceResponse_Body)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*BalanceResponse_Body)(nil)
|
|
||||||
_ json.Marshaler = (*BalanceResponse_Body)(nil)
|
|
||||||
_ json.Unmarshaler = (*BalanceResponse_Body)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *BalanceResponse_Body) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(1, x.Balance)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *BalanceResponse_Body) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *BalanceResponse_Body) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.Balance != nil {
|
|
||||||
x.Balance.EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *BalanceResponse_Body) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "BalanceResponse_Body")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Balance
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Balance")
|
|
||||||
}
|
|
||||||
x.Balance = new(Decimal)
|
|
||||||
if err := x.Balance.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse_Body) GetBalance() *Decimal {
|
|
||||||
if x != nil {
|
|
||||||
return x.Balance
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse_Body) SetBalance(v *Decimal) {
|
|
||||||
x.Balance = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *BalanceResponse_Body) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"balance\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.Balance.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *BalanceResponse_Body) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse_Body) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "balance":
|
|
||||||
{
|
|
||||||
var f *Decimal
|
|
||||||
f = new(Decimal)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.Balance = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type BalanceResponse struct {
|
|
||||||
Body *BalanceResponse_Body `json:"body"`
|
|
||||||
MetaHeader *grpc1.ResponseMetaHeader `json:"metaHeader"`
|
|
||||||
VerifyHeader *grpc1.ResponseVerificationHeader `json:"verifyHeader"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*BalanceResponse)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*BalanceResponse)(nil)
|
|
||||||
_ json.Marshaler = (*BalanceResponse)(nil)
|
|
||||||
_ json.Unmarshaler = (*BalanceResponse)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *BalanceResponse) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(1, x.Body)
|
|
||||||
size += proto.NestedStructureSize(2, x.MetaHeader)
|
|
||||||
size += proto.NestedStructureSize(3, x.VerifyHeader)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadSignedData fills buf with signed data of x.
|
|
||||||
// If buffer length is less than x.SignedDataSize(), new buffer is allocated.
|
|
||||||
//
|
|
||||||
// Returns any error encountered which did not allow writing the data completely.
|
|
||||||
// Otherwise, returns the buffer in which the data is written.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same signed data.
|
|
||||||
func (x *BalanceResponse) SignedDataSize() int {
|
|
||||||
return x.GetBody().StableSize()
|
|
||||||
}
|
|
||||||
|
|
||||||
// SignedDataSize returns size of the request signed data in bytes.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same signed data size.
|
|
||||||
func (x *BalanceResponse) ReadSignedData(buf []byte) ([]byte, error) {
|
|
||||||
return x.GetBody().MarshalProtobuf(buf), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *BalanceResponse) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *BalanceResponse) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.Body != nil {
|
|
||||||
x.Body.EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
if x.MetaHeader != nil {
|
|
||||||
x.MetaHeader.EmitProtobuf(mm.AppendMessage(2))
|
|
||||||
}
|
|
||||||
if x.VerifyHeader != nil {
|
|
||||||
x.VerifyHeader.EmitProtobuf(mm.AppendMessage(3))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *BalanceResponse) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "BalanceResponse")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Body
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Body")
|
|
||||||
}
|
|
||||||
x.Body = new(BalanceResponse_Body)
|
|
||||||
if err := x.Body.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 2: // MetaHeader
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "MetaHeader")
|
|
||||||
}
|
|
||||||
x.MetaHeader = new(grpc1.ResponseMetaHeader)
|
|
||||||
if err := x.MetaHeader.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 3: // VerifyHeader
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "VerifyHeader")
|
|
||||||
}
|
|
||||||
x.VerifyHeader = new(grpc1.ResponseVerificationHeader)
|
|
||||||
if err := x.VerifyHeader.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) GetBody() *BalanceResponse_Body {
|
|
||||||
if x != nil {
|
|
||||||
return x.Body
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) SetBody(v *BalanceResponse_Body) {
|
|
||||||
x.Body = v
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) GetMetaHeader() *grpc1.ResponseMetaHeader {
|
|
||||||
if x != nil {
|
|
||||||
return x.MetaHeader
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) SetMetaHeader(v *grpc1.ResponseMetaHeader) {
|
|
||||||
x.MetaHeader = v
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) GetVerifyHeader() *grpc1.ResponseVerificationHeader {
|
|
||||||
if x != nil {
|
|
||||||
return x.VerifyHeader
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) SetVerifyHeader(v *grpc1.ResponseVerificationHeader) {
|
|
||||||
x.VerifyHeader = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *BalanceResponse) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"body\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.Body.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"metaHeader\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.MetaHeader.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"verifyHeader\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.VerifyHeader.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *BalanceResponse) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *BalanceResponse) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "body":
|
|
||||||
{
|
|
||||||
var f *BalanceResponse_Body
|
|
||||||
f = new(BalanceResponse_Body)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.Body = f
|
|
||||||
}
|
|
||||||
case "metaHeader":
|
|
||||||
{
|
|
||||||
var f *grpc1.ResponseMetaHeader
|
|
||||||
f = new(grpc1.ResponseMetaHeader)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.MetaHeader = f
|
|
||||||
}
|
|
||||||
case "verifyHeader":
|
|
||||||
{
|
|
||||||
var f *grpc1.ResponseVerificationHeader
|
|
||||||
f = new(grpc1.ResponseVerificationHeader)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.VerifyHeader = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
func DoFuzzProtoBalanceRequest(data []byte) int {
|
|
||||||
msg := new(BalanceRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONBalanceRequest(data []byte) int {
|
|
||||||
msg := new(BalanceRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoBalanceResponse(data []byte) int {
|
|
||||||
msg := new(BalanceResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONBalanceResponse(data []byte) int {
|
|
||||||
msg := new(BalanceResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoBalanceRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoBalanceRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONBalanceRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONBalanceRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoBalanceResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoBalanceResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONBalanceResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONBalanceResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
6
accounting/grpc/service_grpc.pb.go
generated
6
accounting/grpc/service_grpc.pb.go
generated
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
// - protoc-gen-go-grpc v1.3.0
|
||||||
// - protoc v5.27.2
|
// - protoc v4.25.3
|
||||||
// source: accounting/grpc/service.proto
|
// source: accounting/grpc/service.proto
|
||||||
|
|
||||||
package accounting
|
package accounting
|
||||||
|
@ -26,7 +26,7 @@ const (
|
||||||
//
|
//
|
||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||||
type AccountingServiceClient interface {
|
type AccountingServiceClient interface {
|
||||||
// Returns the amount of funds in GAS token for the requested FrostFS account.
|
// Returns the amount of funds in GAS token for the requested NeoFS account.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
|
@ -56,7 +56,7 @@ func (c *accountingServiceClient) Balance(ctx context.Context, in *BalanceReques
|
||||||
// All implementations should embed UnimplementedAccountingServiceServer
|
// All implementations should embed UnimplementedAccountingServiceServer
|
||||||
// for forward compatibility
|
// for forward compatibility
|
||||||
type AccountingServiceServer interface {
|
type AccountingServiceServer interface {
|
||||||
// Returns the amount of funds in GAS token for the requested FrostFS account.
|
// Returns the amount of funds in GAS token for the requested NeoFS account.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
|
|
11
accounting/grpc/types.go
Normal file
11
accounting/grpc/types.go
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package accounting
|
||||||
|
|
||||||
|
// SetValue sets value of the decimal number.
|
||||||
|
func (m *Decimal) SetValue(v int64) {
|
||||||
|
m.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPrecision sets precision of the decimal number.
|
||||||
|
func (m *Decimal) SetPrecision(v uint32) {
|
||||||
|
m.Precision = v
|
||||||
|
}
|
169
accounting/grpc/types.pb.go
generated
Normal file
169
accounting/grpc/types.pb.go
generated
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.33.0
|
||||||
|
// protoc v4.25.3
|
||||||
|
// source: accounting/grpc/types.proto
|
||||||
|
|
||||||
|
package accounting
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Standard floating point data type can't be used in NeoFS due to inexactness
|
||||||
|
// of the result when doing lots of small number operations. To solve the lost
|
||||||
|
// precision issue, special `Decimal` format is used for monetary computations.
|
||||||
|
//
|
||||||
|
// Please see [The General Decimal Arithmetic
|
||||||
|
// Specification](http://speleotrove.com/decimal/) for detailed problem
|
||||||
|
// description.
|
||||||
|
type Decimal struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Number in the smallest Token fractions.
|
||||||
|
Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
|
||||||
|
// Precision value indicating how many smallest fractions can be in one
|
||||||
|
// integer.
|
||||||
|
Precision uint32 `protobuf:"varint,2,opt,name=precision,proto3" json:"precision,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) Reset() {
|
||||||
|
*x = Decimal{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_accounting_grpc_types_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Decimal) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Decimal) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_accounting_grpc_types_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Decimal.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Decimal) Descriptor() ([]byte, []int) {
|
||||||
|
return file_accounting_grpc_types_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) GetValue() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Decimal) GetPrecision() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Precision
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_accounting_grpc_types_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_accounting_grpc_types_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x67, 0x72, 0x70,
|
||||||
|
0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x6e,
|
||||||
|
0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x69, 0x6e, 0x67, 0x22, 0x3d, 0x0a, 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x14,
|
||||||
|
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,
|
||||||
|
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69,
|
||||||
|
0x6f, 0x6e, 0x42, 0x6d, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x2e, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66,
|
||||||
|
0x73, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x54, 0x72, 0x75, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64,
|
||||||
|
0x4c, 0x61, 0x62, 0x2f, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d,
|
||||||
|
0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
|
||||||
|
0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67,
|
||||||
|
0xaa, 0x02, 0x1e, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
|
||||||
|
0x67, 0x65, 0x2e, 0x41, 0x50, 0x49, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e,
|
||||||
|
0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_accounting_grpc_types_proto_rawDescOnce sync.Once
|
||||||
|
file_accounting_grpc_types_proto_rawDescData = file_accounting_grpc_types_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_accounting_grpc_types_proto_rawDescGZIP() []byte {
|
||||||
|
file_accounting_grpc_types_proto_rawDescOnce.Do(func() {
|
||||||
|
file_accounting_grpc_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounting_grpc_types_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_accounting_grpc_types_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_accounting_grpc_types_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||||
|
var file_accounting_grpc_types_proto_goTypes = []interface{}{
|
||||||
|
(*Decimal)(nil), // 0: neo.fs.v2.accounting.Decimal
|
||||||
|
}
|
||||||
|
var file_accounting_grpc_types_proto_depIdxs = []int32{
|
||||||
|
0, // [0:0] is the sub-list for method output_type
|
||||||
|
0, // [0:0] is the sub-list for method input_type
|
||||||
|
0, // [0:0] is the sub-list for extension type_name
|
||||||
|
0, // [0:0] is the sub-list for extension extendee
|
||||||
|
0, // [0:0] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_accounting_grpc_types_proto_init() }
|
||||||
|
func file_accounting_grpc_types_proto_init() {
|
||||||
|
if File_accounting_grpc_types_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_accounting_grpc_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Decimal); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_accounting_grpc_types_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 1,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_accounting_grpc_types_proto_goTypes,
|
||||||
|
DependencyIndexes: file_accounting_grpc_types_proto_depIdxs,
|
||||||
|
MessageInfos: file_accounting_grpc_types_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_accounting_grpc_types_proto = out.File
|
||||||
|
file_accounting_grpc_types_proto_rawDesc = nil
|
||||||
|
file_accounting_grpc_types_proto_goTypes = nil
|
||||||
|
file_accounting_grpc_types_proto_depIdxs = nil
|
||||||
|
}
|
204
accounting/grpc/types_frostfs.pb.go
generated
204
accounting/grpc/types_frostfs.pb.go
generated
|
@ -1,204 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
import (
|
|
||||||
json "encoding/json"
|
|
||||||
fmt "fmt"
|
|
||||||
pool "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
|
|
||||||
proto "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
encoding "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/encoding"
|
|
||||||
easyproto "github.com/VictoriaMetrics/easyproto"
|
|
||||||
jlexer "github.com/mailru/easyjson/jlexer"
|
|
||||||
jwriter "github.com/mailru/easyjson/jwriter"
|
|
||||||
strconv "strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Decimal struct {
|
|
||||||
Value int64 `json:"value"`
|
|
||||||
Precision uint32 `json:"precision"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*Decimal)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*Decimal)(nil)
|
|
||||||
_ json.Marshaler = (*Decimal)(nil)
|
|
||||||
_ json.Unmarshaler = (*Decimal)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *Decimal) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.Int64Size(1, x.Value)
|
|
||||||
size += proto.UInt32Size(2, x.Precision)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *Decimal) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Decimal) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.Value != 0 {
|
|
||||||
mm.AppendInt64(1, x.Value)
|
|
||||||
}
|
|
||||||
if x.Precision != 0 {
|
|
||||||
mm.AppendUint32(2, x.Precision)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *Decimal) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "Decimal")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Value
|
|
||||||
data, ok := fc.Int64()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Value")
|
|
||||||
}
|
|
||||||
x.Value = data
|
|
||||||
case 2: // Precision
|
|
||||||
data, ok := fc.Uint32()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Precision")
|
|
||||||
}
|
|
||||||
x.Precision = data
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Decimal) GetValue() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Value
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
func (x *Decimal) SetValue(v int64) {
|
|
||||||
x.Value = v
|
|
||||||
}
|
|
||||||
func (x *Decimal) GetPrecision() uint32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Precision
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
func (x *Decimal) SetPrecision(v uint32) {
|
|
||||||
x.Precision = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *Decimal) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *Decimal) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"value\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.RawByte('"')
|
|
||||||
out.Buffer.Buf = strconv.AppendInt(out.Buffer.Buf, x.Value, 10)
|
|
||||||
out.RawByte('"')
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"precision\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.Uint32(x.Precision)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *Decimal) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *Decimal) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "value":
|
|
||||||
{
|
|
||||||
var f int64
|
|
||||||
r := in.JsonNumber()
|
|
||||||
n := r.String()
|
|
||||||
v, err := strconv.ParseInt(n, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
in.AddError(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pv := int64(v)
|
|
||||||
f = pv
|
|
||||||
x.Value = f
|
|
||||||
}
|
|
||||||
case "precision":
|
|
||||||
{
|
|
||||||
var f uint32
|
|
||||||
r := in.JsonNumber()
|
|
||||||
n := r.String()
|
|
||||||
v, err := strconv.ParseUint(n, 10, 32)
|
|
||||||
if err != nil {
|
|
||||||
in.AddError(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pv := uint32(v)
|
|
||||||
f = pv
|
|
||||||
x.Precision = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
func DoFuzzProtoDecimal(data []byte) int {
|
|
||||||
msg := new(Decimal)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONDecimal(data []byte) int {
|
|
||||||
msg := new(Decimal)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package accounting
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoDecimal(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoDecimal(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONDecimal(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONDecimal(data)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -32,7 +32,7 @@ func BenchmarkTable_ToGRPCMessage(b *testing.B) {
|
||||||
|
|
||||||
b.Run("to grpc message", func(b *testing.B) {
|
b.Run("to grpc message", func(b *testing.B) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for range b.N {
|
for i := 0; i < b.N; i++ {
|
||||||
raw := tb.ToGRPCMessage()
|
raw := tb.ToGRPCMessage()
|
||||||
if len(tb.GetRecords()) != len(raw.(*aclGrpc.EACLTable).Records) {
|
if len(tb.GetRecords()) != len(raw.(*aclGrpc.EACLTable).Records) {
|
||||||
b.FailNow()
|
b.FailNow()
|
||||||
|
@ -41,7 +41,7 @@ func BenchmarkTable_ToGRPCMessage(b *testing.B) {
|
||||||
})
|
})
|
||||||
b.Run("from grpc message", func(b *testing.B) {
|
b.Run("from grpc message", func(b *testing.B) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for range b.N {
|
for i := 0; i < b.N; i++ {
|
||||||
tb := new(acl.Table)
|
tb := new(acl.Table)
|
||||||
if tb.FromGRPCMessage(raw) != nil {
|
if tb.FromGRPCMessage(raw) != nil {
|
||||||
b.FailNow()
|
b.FailNow()
|
||||||
|
|
117
acl/convert.go
117
acl/convert.go
|
@ -2,8 +2,6 @@ package acl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
acl "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc"
|
acl "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
|
||||||
apeGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
refsGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
refsGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
||||||
|
@ -166,7 +164,7 @@ func (f *HeaderFilter) ToGRPCMessage() grpc.Message {
|
||||||
|
|
||||||
m.SetKey(f.key)
|
m.SetKey(f.key)
|
||||||
m.SetValue(f.value)
|
m.SetValue(f.value)
|
||||||
m.SetHeaderType(HeaderTypeToGRPCField(f.hdrType))
|
m.SetHeader(HeaderTypeToGRPCField(f.hdrType))
|
||||||
m.SetMatchType(MatchTypeToGRPCField(f.matchType))
|
m.SetMatchType(MatchTypeToGRPCField(f.matchType))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,26 +185,28 @@ func (f *HeaderFilter) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func HeaderFiltersToGRPC(fs []HeaderFilter) (res []acl.EACLRecord_Filter) {
|
func HeaderFiltersToGRPC(fs []HeaderFilter) (res []*acl.EACLRecord_Filter) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]acl.EACLRecord_Filter, 0, len(fs))
|
res = make([]*acl.EACLRecord_Filter, 0, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
res = append(res, *fs[i].ToGRPCMessage().(*acl.EACLRecord_Filter))
|
res = append(res, fs[i].ToGRPCMessage().(*acl.EACLRecord_Filter))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func HeaderFiltersFromGRPC(fs []acl.EACLRecord_Filter) (res []HeaderFilter, err error) {
|
func HeaderFiltersFromGRPC(fs []*acl.EACLRecord_Filter) (res []HeaderFilter, err error) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]HeaderFilter, len(fs))
|
res = make([]HeaderFilter, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
err = res[i].FromGRPCMessage(&fs[i])
|
if fs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(fs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -239,26 +239,28 @@ func (t *Target) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func TargetsToGRPC(ts []Target) (res []acl.EACLRecord_Target) {
|
func TargetsToGRPC(ts []Target) (res []*acl.EACLRecord_Target) {
|
||||||
if ts != nil {
|
if ts != nil {
|
||||||
res = make([]acl.EACLRecord_Target, 0, len(ts))
|
res = make([]*acl.EACLRecord_Target, 0, len(ts))
|
||||||
|
|
||||||
for i := range ts {
|
for i := range ts {
|
||||||
res = append(res, *ts[i].ToGRPCMessage().(*acl.EACLRecord_Target))
|
res = append(res, ts[i].ToGRPCMessage().(*acl.EACLRecord_Target))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func TargetsFromGRPC(fs []acl.EACLRecord_Target) (res []Target, err error) {
|
func TargetsFromGRPC(fs []*acl.EACLRecord_Target) (res []Target, err error) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]Target, len(fs))
|
res = make([]Target, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
err = res[i].FromGRPCMessage(&fs[i])
|
if fs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(fs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,26 +307,28 @@ func (r *Record) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RecordsToGRPC(ts []Record) (res []acl.EACLRecord) {
|
func RecordsToGRPC(ts []Record) (res []*acl.EACLRecord) {
|
||||||
if ts != nil {
|
if ts != nil {
|
||||||
res = make([]acl.EACLRecord, 0, len(ts))
|
res = make([]*acl.EACLRecord, 0, len(ts))
|
||||||
|
|
||||||
for i := range ts {
|
for i := range ts {
|
||||||
res = append(res, *ts[i].ToGRPCMessage().(*acl.EACLRecord))
|
res = append(res, ts[i].ToGRPCMessage().(*acl.EACLRecord))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func RecordsFromGRPC(fs []acl.EACLRecord) (res []Record, err error) {
|
func RecordsFromGRPC(fs []*acl.EACLRecord) (res []Record, err error) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]Record, len(fs))
|
res = make([]Record, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
err = res[i].FromGRPCMessage(&fs[i])
|
if fs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(fs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -414,54 +418,6 @@ func (l *TokenLifetime) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *APEOverride) ToGRPCMessage() grpc.Message {
|
|
||||||
var m *acl.BearerToken_Body_APEOverride
|
|
||||||
|
|
||||||
if c != nil {
|
|
||||||
m = new(acl.BearerToken_Body_APEOverride)
|
|
||||||
|
|
||||||
m.SetTarget(c.target.ToGRPCMessage().(*apeGRPC.ChainTarget))
|
|
||||||
|
|
||||||
if len(c.chains) > 0 {
|
|
||||||
apeChains := make([]apeGRPC.Chain, len(c.chains))
|
|
||||||
for i := range c.chains {
|
|
||||||
apeChains[i] = *c.chains[i].ToGRPCMessage().(*apeGRPC.Chain)
|
|
||||||
}
|
|
||||||
m.SetChains(apeChains)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *APEOverride) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
v, ok := m.(*acl.BearerToken_Body_APEOverride)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, v)
|
|
||||||
}
|
|
||||||
|
|
||||||
if targetGRPC := v.GetTarget(); targetGRPC != nil {
|
|
||||||
if c.target == nil {
|
|
||||||
c.target = new(ape.ChainTarget)
|
|
||||||
}
|
|
||||||
if err := c.target.FromGRPCMessage(v.GetTarget()); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if apeChains := v.GetChains(); len(apeChains) > 0 {
|
|
||||||
c.chains = make([]*ape.Chain, len(apeChains))
|
|
||||||
for i := range apeChains {
|
|
||||||
c.chains[i] = new(ape.Chain)
|
|
||||||
if err := c.chains[i].FromGRPCMessage(&apeChains[i]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bt *BearerTokenBody) ToGRPCMessage() grpc.Message {
|
func (bt *BearerTokenBody) ToGRPCMessage() grpc.Message {
|
||||||
var m *acl.BearerToken_Body
|
var m *acl.BearerToken_Body
|
||||||
|
|
||||||
|
@ -471,8 +427,7 @@ func (bt *BearerTokenBody) ToGRPCMessage() grpc.Message {
|
||||||
m.SetOwnerId(bt.ownerID.ToGRPCMessage().(*refsGRPC.OwnerID))
|
m.SetOwnerId(bt.ownerID.ToGRPCMessage().(*refsGRPC.OwnerID))
|
||||||
m.SetLifetime(bt.lifetime.ToGRPCMessage().(*acl.BearerToken_Body_TokenLifetime))
|
m.SetLifetime(bt.lifetime.ToGRPCMessage().(*acl.BearerToken_Body_TokenLifetime))
|
||||||
m.SetEaclTable(bt.eacl.ToGRPCMessage().(*acl.EACLTable))
|
m.SetEaclTable(bt.eacl.ToGRPCMessage().(*acl.EACLTable))
|
||||||
m.SetAllowImpersonate(bt.impersonate)
|
m.SetImpersonate(bt.impersonate)
|
||||||
m.SetApeOverride(bt.apeOverride.ToGRPCMessage().(*acl.BearerToken_Body_APEOverride))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
@ -522,19 +477,7 @@ func (bt *BearerTokenBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
bt.eacl = new(Table)
|
bt.eacl = new(Table)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = bt.eacl.FromGRPCMessage(eacl); err != nil {
|
err = bt.eacl.FromGRPCMessage(eacl)
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if apeOverrideGRPC := v.GetApeOverride(); apeOverrideGRPC != nil {
|
|
||||||
if bt.apeOverride == nil {
|
|
||||||
bt.apeOverride = new(APEOverride)
|
|
||||||
}
|
|
||||||
err = bt.apeOverride.FromGRPCMessage(apeOverrideGRPC)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bt.impersonate = v.GetAllowImpersonate()
|
bt.impersonate = v.GetAllowImpersonate()
|
||||||
|
|
180
acl/grpc/types.go
Normal file
180
acl/grpc/types.go
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
package acl
|
||||||
|
|
||||||
|
import (
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetVersion sets version of EACL rules in table.
|
||||||
|
func (m *EACLTable) SetVersion(v *refs.Version) {
|
||||||
|
m.Version = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets container identifier of the eACL table.
|
||||||
|
func (m *EACLTable) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRecords sets record list of the eACL table.
|
||||||
|
func (m *EACLTable) SetRecords(v []*EACLRecord) {
|
||||||
|
m.Records = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOperation sets operation of the eACL record.
|
||||||
|
func (m *EACLRecord) SetOperation(v Operation) {
|
||||||
|
m.Operation = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAction sets action of the eACL record.
|
||||||
|
func (m *EACLRecord) SetAction(v Action) {
|
||||||
|
m.Action = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFilters sets filter list of the eACL record.
|
||||||
|
func (m *EACLRecord) SetFilters(v []*EACLRecord_Filter) {
|
||||||
|
m.Filters = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetTargets sets target list of the eACL record.
|
||||||
|
func (m *EACLRecord) SetTargets(v []*EACLRecord_Target) {
|
||||||
|
m.Targets = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHeader sets header type of the eACL filter.
|
||||||
|
func (m *EACLRecord_Filter) SetHeader(v HeaderType) {
|
||||||
|
m.HeaderType = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMatchType sets match type of the eACL filter.
|
||||||
|
func (m *EACLRecord_Filter) SetMatchType(v MatchType) {
|
||||||
|
m.MatchType = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKey sets key of the eACL filter.
|
||||||
|
func (m *EACLRecord_Filter) SetKey(v string) {
|
||||||
|
m.Key = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue sets value of the eACL filter.
|
||||||
|
func (m *EACLRecord_Filter) SetValue(v string) {
|
||||||
|
m.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRole sets target group of the eACL target.
|
||||||
|
func (m *EACLRecord_Target) SetRole(v Role) {
|
||||||
|
m.Role = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKeys of the eACL target.
|
||||||
|
func (m *EACLRecord_Target) SetKeys(v [][]byte) {
|
||||||
|
m.Keys = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEaclTable sets eACL table of the bearer token.
|
||||||
|
func (m *BearerToken_Body) SetEaclTable(v *EACLTable) {
|
||||||
|
m.EaclTable = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOwnerId sets identifier of the bearer token owner.
|
||||||
|
func (m *BearerToken_Body) SetOwnerId(v *refs.OwnerID) {
|
||||||
|
m.OwnerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetLifetime sets lifetime of the bearer token.
|
||||||
|
func (m *BearerToken_Body) SetLifetime(v *BearerToken_Body_TokenLifetime) {
|
||||||
|
m.Lifetime = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetImpersonate allows impersonate.
|
||||||
|
func (m *BearerToken_Body) SetImpersonate(v bool) {
|
||||||
|
m.AllowImpersonate = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets bearer token body.
|
||||||
|
func (m *BearerToken) SetBody(v *BearerToken_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets bearer token signature.
|
||||||
|
func (m *BearerToken) SetSignature(v *refs.Signature) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetExp sets epoch number of the token expiration.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetExp(v uint64) {
|
||||||
|
m.Exp = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNbf sets starting epoch number of the token.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetNbf(v uint64) {
|
||||||
|
m.Nbf = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIat sets the number of the epoch in which the token was issued.
|
||||||
|
func (m *BearerToken_Body_TokenLifetime) SetIat(v uint64) {
|
||||||
|
m.Iat = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses Action from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *Action) FromString(s string) bool {
|
||||||
|
i, ok := Action_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = Action(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses Role from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *Role) FromString(s string) bool {
|
||||||
|
i, ok := Role_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = Role(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses Operation from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *Operation) FromString(s string) bool {
|
||||||
|
i, ok := Operation_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = Operation(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses MatchType from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *MatchType) FromString(s string) bool {
|
||||||
|
i, ok := MatchType_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = MatchType(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses HeaderType from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *HeaderType) FromString(s string) bool {
|
||||||
|
i, ok := HeaderType_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = HeaderType(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
1123
acl/grpc/types.pb.go
generated
Normal file
1123
acl/grpc/types.pb.go
generated
Normal file
File diff suppressed because it is too large
Load diff
2184
acl/grpc/types_frostfs.pb.go
generated
2184
acl/grpc/types_frostfs.pb.go
generated
File diff suppressed because it is too large
Load diff
|
@ -1,64 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package acl
|
|
||||||
|
|
||||||
func DoFuzzProtoEACLRecord(data []byte) int {
|
|
||||||
msg := new(EACLRecord)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONEACLRecord(data []byte) int {
|
|
||||||
msg := new(EACLRecord)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoEACLTable(data []byte) int {
|
|
||||||
msg := new(EACLTable)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONEACLTable(data []byte) int {
|
|
||||||
msg := new(EACLTable)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoBearerToken(data []byte) int {
|
|
||||||
msg := new(BearerToken)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONBearerToken(data []byte) int {
|
|
||||||
msg := new(BearerToken)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package acl
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoEACLRecord(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoEACLRecord(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONEACLRecord(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONEACLRecord(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoEACLTable(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoEACLTable(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONEACLTable(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONEACLTable(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoBearerToken(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoBearerToken(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONBearerToken(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONBearerToken(data)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -21,14 +21,6 @@ func (t *Target) UnmarshalJSON(data []byte) error {
|
||||||
return message.UnmarshalJSON(t, data, new(acl.EACLRecord_Target))
|
return message.UnmarshalJSON(t, data, new(acl.EACLRecord_Target))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APEOverride) MarshalJSON() ([]byte, error) {
|
|
||||||
return message.MarshalJSON(a)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *APEOverride) UnmarshalJSON(data []byte) error {
|
|
||||||
return message.UnmarshalJSON(a, data, new(acl.BearerToken_Body_APEOverride))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *Record) MarshalJSON() ([]byte, error) {
|
func (r *Record) MarshalJSON() ([]byte, error) {
|
||||||
return message.MarshalJSON(r)
|
return message.MarshalJSON(r)
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,14 +28,10 @@ const (
|
||||||
lifetimeNotValidBeforeField = 2
|
lifetimeNotValidBeforeField = 2
|
||||||
lifetimeIssuedAtField = 3
|
lifetimeIssuedAtField = 3
|
||||||
|
|
||||||
tokenAPEChainsTargetField = 1
|
bearerTokenBodyACLField = 1
|
||||||
tokenAPEChainsChainsField = 2
|
bearerTokenBodyOwnerField = 2
|
||||||
|
bearerTokenBodyLifetimeField = 3
|
||||||
bearerTokenBodyACLField = 1
|
bearerTokenBodyImpersonate = 4
|
||||||
bearerTokenBodyOwnerField = 2
|
|
||||||
bearerTokenBodyLifetimeField = 3
|
|
||||||
bearerTokenBodyImpersonate = 4
|
|
||||||
bearerTokenTokenAPEChainsField = 5
|
|
||||||
|
|
||||||
bearerTokenBodyField = 1
|
bearerTokenBodyField = 1
|
||||||
bearerTokenSignatureField = 2
|
bearerTokenSignatureField = 2
|
||||||
|
@ -243,42 +239,6 @@ func (l *TokenLifetime) Unmarshal(data []byte) error {
|
||||||
return message.Unmarshal(l, data, new(acl.BearerToken_Body_TokenLifetime))
|
return message.Unmarshal(l, data, new(acl.BearerToken_Body_TokenLifetime))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *APEOverride) StableMarshal(buf []byte) []byte {
|
|
||||||
if c == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, c.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
offset += protoutil.NestedStructureMarshal(tokenAPEChainsTargetField, buf[offset:], c.target)
|
|
||||||
for i := range c.chains {
|
|
||||||
offset += protoutil.NestedStructureMarshal(tokenAPEChainsChainsField, buf[offset:], c.chains[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *APEOverride) StableSize() (size int) {
|
|
||||||
if c == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += protoutil.NestedStructureSize(tokenAPEChainsTargetField, c.target)
|
|
||||||
for i := range c.chains {
|
|
||||||
size += protoutil.NestedStructureSize(tokenAPEChainsChainsField, c.chains[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *APEOverride) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(c, data, new(acl.BearerToken_Body_APEOverride))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bt *BearerTokenBody) StableMarshal(buf []byte) []byte {
|
func (bt *BearerTokenBody) StableMarshal(buf []byte) []byte {
|
||||||
if bt == nil {
|
if bt == nil {
|
||||||
return []byte{}
|
return []byte{}
|
||||||
|
@ -293,8 +253,7 @@ func (bt *BearerTokenBody) StableMarshal(buf []byte) []byte {
|
||||||
offset += protoutil.NestedStructureMarshal(bearerTokenBodyACLField, buf[offset:], bt.eacl)
|
offset += protoutil.NestedStructureMarshal(bearerTokenBodyACLField, buf[offset:], bt.eacl)
|
||||||
offset += protoutil.NestedStructureMarshal(bearerTokenBodyOwnerField, buf[offset:], bt.ownerID)
|
offset += protoutil.NestedStructureMarshal(bearerTokenBodyOwnerField, buf[offset:], bt.ownerID)
|
||||||
offset += protoutil.NestedStructureMarshal(bearerTokenBodyLifetimeField, buf[offset:], bt.lifetime)
|
offset += protoutil.NestedStructureMarshal(bearerTokenBodyLifetimeField, buf[offset:], bt.lifetime)
|
||||||
offset += protoutil.BoolMarshal(bearerTokenBodyImpersonate, buf[offset:], bt.impersonate)
|
protoutil.BoolMarshal(bearerTokenBodyImpersonate, buf[offset:], bt.impersonate)
|
||||||
protoutil.NestedStructureMarshal(bearerTokenTokenAPEChainsField, buf[offset:], bt.apeOverride)
|
|
||||||
|
|
||||||
return buf
|
return buf
|
||||||
}
|
}
|
||||||
|
@ -308,7 +267,6 @@ func (bt *BearerTokenBody) StableSize() (size int) {
|
||||||
size += protoutil.NestedStructureSize(bearerTokenBodyOwnerField, bt.ownerID)
|
size += protoutil.NestedStructureSize(bearerTokenBodyOwnerField, bt.ownerID)
|
||||||
size += protoutil.NestedStructureSize(bearerTokenBodyLifetimeField, bt.lifetime)
|
size += protoutil.NestedStructureSize(bearerTokenBodyLifetimeField, bt.lifetime)
|
||||||
size += protoutil.BoolSize(bearerTokenBodyImpersonate, bt.impersonate)
|
size += protoutil.BoolSize(bearerTokenBodyImpersonate, bt.impersonate)
|
||||||
size += protoutil.NestedStructureSize(bearerTokenTokenAPEChainsField, bt.apeOverride)
|
|
||||||
|
|
||||||
return size
|
return size
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package acltest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl"
|
||||||
apetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/test"
|
|
||||||
accountingtest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/test"
|
accountingtest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,20 +22,8 @@ func GenerateBearerTokenBody(empty bool) *acl.BearerTokenBody {
|
||||||
|
|
||||||
if !empty {
|
if !empty {
|
||||||
m.SetOwnerID(accountingtest.GenerateOwnerID(false))
|
m.SetOwnerID(accountingtest.GenerateOwnerID(false))
|
||||||
|
m.SetEACL(GenerateTable(false))
|
||||||
m.SetLifetime(GenerateTokenLifetime(false))
|
m.SetLifetime(GenerateTokenLifetime(false))
|
||||||
m.SetAPEOverride(GenerateAPEOverride(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateAPEOverride(empty bool) *acl.APEOverride {
|
|
||||||
var m *acl.APEOverride
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m = new(acl.APEOverride)
|
|
||||||
m.SetTarget(apetest.GenerateChainTarget(empty))
|
|
||||||
m.SetChains(apetest.GenerateRawChains(false, 3))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
|
49
acl/types.go
49
acl/types.go
|
@ -1,9 +1,6 @@
|
||||||
package acl
|
package acl
|
||||||
|
|
||||||
import (
|
import "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
|
||||||
)
|
|
||||||
|
|
||||||
// HeaderFilter is a unified structure of FilterInfo
|
// HeaderFilter is a unified structure of FilterInfo
|
||||||
// message from proto definition.
|
// message from proto definition.
|
||||||
|
@ -49,12 +46,6 @@ type TokenLifetime struct {
|
||||||
exp, nbf, iat uint64
|
exp, nbf, iat uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
type APEOverride struct {
|
|
||||||
target *ape.ChainTarget
|
|
||||||
|
|
||||||
chains []*ape.Chain
|
|
||||||
}
|
|
||||||
|
|
||||||
type BearerTokenBody struct {
|
type BearerTokenBody struct {
|
||||||
eacl *Table
|
eacl *Table
|
||||||
|
|
||||||
|
@ -62,8 +53,6 @@ type BearerTokenBody struct {
|
||||||
|
|
||||||
lifetime *TokenLifetime
|
lifetime *TokenLifetime
|
||||||
|
|
||||||
apeOverride *APEOverride
|
|
||||||
|
|
||||||
impersonate bool
|
impersonate bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,42 +318,6 @@ func (bt *BearerTokenBody) SetEACL(v *Table) {
|
||||||
bt.eacl = v
|
bt.eacl = v
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *APEOverride) GetTarget() *ape.ChainTarget {
|
|
||||||
if t == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return t.target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *APEOverride) GetChains() []*ape.Chain {
|
|
||||||
if t == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return t.chains
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *APEOverride) SetTarget(v *ape.ChainTarget) {
|
|
||||||
t.target = v
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *APEOverride) SetChains(v []*ape.Chain) {
|
|
||||||
t.chains = v
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bt *BearerTokenBody) GetAPEOverride() *APEOverride {
|
|
||||||
if bt != nil {
|
|
||||||
return bt.apeOverride
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bt *BearerTokenBody) SetAPEOverride(v *APEOverride) {
|
|
||||||
bt.apeOverride = v
|
|
||||||
}
|
|
||||||
|
|
||||||
func (bt *BearerTokenBody) GetOwnerID() *refs.OwnerID {
|
func (bt *BearerTokenBody) GetOwnerID() *refs.OwnerID {
|
||||||
if bt != nil {
|
if bt != nil {
|
||||||
return bt.ownerID
|
return bt.ownerID
|
||||||
|
|
132
ape/convert.go
132
ape/convert.go
|
@ -1,132 +0,0 @@
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
ape "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TargetTypeToGRPCField(typ TargetType) ape.TargetType {
|
|
||||||
switch typ {
|
|
||||||
case TargetTypeNamespace:
|
|
||||||
return ape.TargetType_NAMESPACE
|
|
||||||
case TargetTypeContainer:
|
|
||||||
return ape.TargetType_CONTAINER
|
|
||||||
case TargetTypeUser:
|
|
||||||
return ape.TargetType_USER
|
|
||||||
case TargetTypeGroup:
|
|
||||||
return ape.TargetType_GROUP
|
|
||||||
default:
|
|
||||||
return ape.TargetType_UNDEFINED
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TargetTypeFromGRPCField(typ ape.TargetType) TargetType {
|
|
||||||
switch typ {
|
|
||||||
case ape.TargetType_NAMESPACE:
|
|
||||||
return TargetTypeNamespace
|
|
||||||
case ape.TargetType_CONTAINER:
|
|
||||||
return TargetTypeContainer
|
|
||||||
case ape.TargetType_USER:
|
|
||||||
return TargetTypeUser
|
|
||||||
case ape.TargetType_GROUP:
|
|
||||||
return TargetTypeGroup
|
|
||||||
default:
|
|
||||||
return TargetTypeUndefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TargetTypeToGRPC(typ TargetType) ape.TargetType {
|
|
||||||
return ape.TargetType(typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TargetTypeFromGRPC(typ ape.TargetType) TargetType {
|
|
||||||
return TargetType(typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *ChainTarget) ToGRPCMessage() grpc.Message {
|
|
||||||
var mgrpc *ape.ChainTarget
|
|
||||||
|
|
||||||
if v2 != nil {
|
|
||||||
mgrpc = new(ape.ChainTarget)
|
|
||||||
|
|
||||||
mgrpc.SetType(TargetTypeToGRPC(v2.GetTargetType()))
|
|
||||||
mgrpc.SetName(v2.GetName())
|
|
||||||
}
|
|
||||||
|
|
||||||
return mgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *ChainTarget) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
mgrpc, ok := m.(*ape.ChainTarget)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, mgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
v2.SetTargetType(TargetTypeFromGRPC(mgrpc.GetType()))
|
|
||||||
v2.SetName(mgrpc.GetName())
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *ChainRaw) ToGRPCMessage() grpc.Message {
|
|
||||||
var mgrpc *ape.Chain_Raw
|
|
||||||
|
|
||||||
if v2 != nil {
|
|
||||||
mgrpc = new(ape.Chain_Raw)
|
|
||||||
|
|
||||||
mgrpc.SetRaw(v2.GetRaw())
|
|
||||||
}
|
|
||||||
|
|
||||||
return mgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *ChainRaw) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
mgrpc, ok := m.(*ape.Chain_Raw)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, mgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
v2.SetRaw(mgrpc.GetRaw())
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *Chain) ToGRPCMessage() grpc.Message {
|
|
||||||
var mgrpc *ape.Chain
|
|
||||||
|
|
||||||
if v2 != nil {
|
|
||||||
mgrpc = new(ape.Chain)
|
|
||||||
|
|
||||||
switch chainKind := v2.GetKind().(type) {
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("unsupported chain kind: %T", chainKind))
|
|
||||||
case *ChainRaw:
|
|
||||||
mgrpc.SetKind(chainKind.ToGRPCMessage().(*ape.Chain_Raw))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v2 *Chain) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
mgrpc, ok := m.(*ape.Chain)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, mgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch chainKind := mgrpc.GetKind().(type) {
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("unsupported chain kind: %T", chainKind)
|
|
||||||
case *ape.Chain_Raw:
|
|
||||||
chainRaw := new(ChainRaw)
|
|
||||||
if err := chainRaw.FromGRPCMessage(chainKind); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
v2.SetKind(chainRaw)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
430
ape/grpc/types_frostfs.pb.go
generated
430
ape/grpc/types_frostfs.pb.go
generated
|
@ -1,430 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
json "encoding/json"
|
|
||||||
fmt "fmt"
|
|
||||||
pool "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
|
|
||||||
proto "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
encoding "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/encoding"
|
|
||||||
easyproto "github.com/VictoriaMetrics/easyproto"
|
|
||||||
jlexer "github.com/mailru/easyjson/jlexer"
|
|
||||||
jwriter "github.com/mailru/easyjson/jwriter"
|
|
||||||
strconv "strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
type TargetType int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
TargetType_UNDEFINED TargetType = 0
|
|
||||||
TargetType_NAMESPACE TargetType = 1
|
|
||||||
TargetType_CONTAINER TargetType = 2
|
|
||||||
TargetType_USER TargetType = 3
|
|
||||||
TargetType_GROUP TargetType = 4
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
TargetType_name = map[int32]string{
|
|
||||||
0: "UNDEFINED",
|
|
||||||
1: "NAMESPACE",
|
|
||||||
2: "CONTAINER",
|
|
||||||
3: "USER",
|
|
||||||
4: "GROUP",
|
|
||||||
}
|
|
||||||
TargetType_value = map[string]int32{
|
|
||||||
"UNDEFINED": 0,
|
|
||||||
"NAMESPACE": 1,
|
|
||||||
"CONTAINER": 2,
|
|
||||||
"USER": 3,
|
|
||||||
"GROUP": 4,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x TargetType) String() string {
|
|
||||||
if v, ok := TargetType_name[int32(x)]; ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return strconv.FormatInt(int64(x), 10)
|
|
||||||
}
|
|
||||||
func (x *TargetType) FromString(s string) bool {
|
|
||||||
if v, ok := TargetType_value[s]; ok {
|
|
||||||
*x = TargetType(v)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
type ChainTarget struct {
|
|
||||||
Type TargetType `json:"type"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*ChainTarget)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*ChainTarget)(nil)
|
|
||||||
_ json.Marshaler = (*ChainTarget)(nil)
|
|
||||||
_ json.Unmarshaler = (*ChainTarget)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *ChainTarget) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.EnumSize(1, int32(x.Type))
|
|
||||||
size += proto.StringSize(2, x.Name)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *ChainTarget) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ChainTarget) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if int32(x.Type) != 0 {
|
|
||||||
mm.AppendInt32(1, int32(x.Type))
|
|
||||||
}
|
|
||||||
if len(x.Name) != 0 {
|
|
||||||
mm.AppendString(2, x.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *ChainTarget) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "ChainTarget")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Type
|
|
||||||
data, ok := fc.Int32()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Type")
|
|
||||||
}
|
|
||||||
x.Type = TargetType(data)
|
|
||||||
case 2: // Name
|
|
||||||
data, ok := fc.String()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Name")
|
|
||||||
}
|
|
||||||
x.Name = data
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) GetType() TargetType {
|
|
||||||
if x != nil {
|
|
||||||
return x.Type
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) SetType(v TargetType) {
|
|
||||||
x.Type = v
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) GetName() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Name
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) SetName(v string) {
|
|
||||||
x.Name = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *ChainTarget) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"type\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
v := int32(x.Type)
|
|
||||||
if vv, ok := TargetType_name[v]; ok {
|
|
||||||
out.String(vv)
|
|
||||||
} else {
|
|
||||||
out.Int32(v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"name\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.String(x.Name)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *ChainTarget) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *ChainTarget) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "type":
|
|
||||||
{
|
|
||||||
var f TargetType
|
|
||||||
var parsedValue TargetType
|
|
||||||
switch v := in.Interface().(type) {
|
|
||||||
case string:
|
|
||||||
if vv, ok := TargetType_value[v]; ok {
|
|
||||||
parsedValue = TargetType(vv)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
vv, err := strconv.ParseInt(v, 10, 32)
|
|
||||||
if err != nil {
|
|
||||||
in.AddError(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
parsedValue = TargetType(vv)
|
|
||||||
case float64:
|
|
||||||
parsedValue = TargetType(v)
|
|
||||||
}
|
|
||||||
f = parsedValue
|
|
||||||
x.Type = f
|
|
||||||
}
|
|
||||||
case "name":
|
|
||||||
{
|
|
||||||
var f string
|
|
||||||
f = in.String()
|
|
||||||
x.Name = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Chain struct {
|
|
||||||
Kind isChain_Kind
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*Chain)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*Chain)(nil)
|
|
||||||
_ json.Marshaler = (*Chain)(nil)
|
|
||||||
_ json.Unmarshaler = (*Chain)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *Chain) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
if inner, ok := x.Kind.(*Chain_Raw); ok {
|
|
||||||
size += proto.BytesSize(1, inner.Raw)
|
|
||||||
}
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *Chain) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Chain) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if inner, ok := x.Kind.(*Chain_Raw); ok {
|
|
||||||
if len(inner.Raw) != 0 {
|
|
||||||
mm.AppendBytes(1, inner.Raw)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *Chain) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "Chain")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Raw
|
|
||||||
data, ok := fc.Bytes()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Raw")
|
|
||||||
}
|
|
||||||
x.Kind = &Chain_Raw{Raw: data}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Chain) GetKind() isChain_Kind {
|
|
||||||
if x != nil {
|
|
||||||
return x.Kind
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Chain) SetKind(v isChain_Kind) {
|
|
||||||
x.Kind = v
|
|
||||||
}
|
|
||||||
func (x *Chain) GetRaw() []byte {
|
|
||||||
if xx, ok := x.GetKind().(*Chain_Raw); ok {
|
|
||||||
return xx.Raw
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Chain) SetRaw(v *Chain_Raw) {
|
|
||||||
x.Kind = v
|
|
||||||
}
|
|
||||||
func (x *Chain_Raw) GetRaw() []byte {
|
|
||||||
if x != nil {
|
|
||||||
return x.Raw
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Chain_Raw) SetRaw(v []byte) {
|
|
||||||
x.Raw = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *Chain) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *Chain) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
switch xx := x.Kind.(type) {
|
|
||||||
case *Chain_Raw:
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"raw\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
if xx.Raw != nil {
|
|
||||||
out.Base64Bytes(xx.Raw)
|
|
||||||
} else {
|
|
||||||
out.String("")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *Chain) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *Chain) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "raw":
|
|
||||||
xx := new(Chain_Raw)
|
|
||||||
x.Kind = xx
|
|
||||||
{
|
|
||||||
var f []byte
|
|
||||||
{
|
|
||||||
tmp := in.Bytes()
|
|
||||||
if len(tmp) == 0 {
|
|
||||||
tmp = nil
|
|
||||||
}
|
|
||||||
f = tmp
|
|
||||||
}
|
|
||||||
xx.Raw = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type isChain_Kind interface {
|
|
||||||
isChain_Kind()
|
|
||||||
}
|
|
||||||
|
|
||||||
type Chain_Raw struct {
|
|
||||||
Raw []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*Chain_Raw) isChain_Kind() {}
|
|
|
@ -1,45 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package ape
|
|
||||||
|
|
||||||
func DoFuzzProtoChainTarget(data []byte) int {
|
|
||||||
msg := new(ChainTarget)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONChainTarget(data []byte) int {
|
|
||||||
msg := new(ChainTarget)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoChain(data []byte) int {
|
|
||||||
msg := new(Chain)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONChain(data []byte) int {
|
|
||||||
msg := new(Chain)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoChainTarget(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoChainTarget(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONChainTarget(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONChainTarget(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoChain(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoChain(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONChain(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONChain(data)
|
|
||||||
})
|
|
||||||
}
|
|
14
ape/json.go
14
ape/json.go
|
@ -1,14 +0,0 @@
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
ape "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t *ChainTarget) MarshalJSON() ([]byte, error) {
|
|
||||||
return message.MarshalJSON(t)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *ChainTarget) UnmarshalJSON(data []byte) error {
|
|
||||||
return message.UnmarshalJSON(t, data, new(ape.ChainTarget))
|
|
||||||
}
|
|
|
@ -1,92 +0,0 @@
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
ape "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
chainTargetTargetTypeField = 1
|
|
||||||
chainTargetNameField = 2
|
|
||||||
|
|
||||||
chainRawField = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t *ChainTarget) StableSize() (size int) {
|
|
||||||
if t == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += proto.EnumSize(chainTargetTargetTypeField, int32(t.targeType))
|
|
||||||
size += proto.StringSize(chainTargetNameField, t.name)
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *ChainTarget) StableMarshal(buf []byte) []byte {
|
|
||||||
if t == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, t.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
offset += proto.EnumMarshal(chainTargetTargetTypeField, buf[offset:], int32(t.targeType))
|
|
||||||
proto.StringMarshal(chainTargetNameField, buf[offset:], t.name)
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *ChainTarget) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(t, data, new(ape.ChainTarget))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Chain) StableSize() (size int) {
|
|
||||||
if c == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
switch v := c.GetKind().(type) {
|
|
||||||
case *ChainRaw:
|
|
||||||
if v != nil {
|
|
||||||
size += proto.BytesSize(chainRawField, v.GetRaw())
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("unsupported chain kind: %T", v))
|
|
||||||
}
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Chain) StableMarshal(buf []byte) []byte {
|
|
||||||
if c == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, c.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
switch v := c.GetKind().(type) {
|
|
||||||
case *ChainRaw:
|
|
||||||
if v != nil {
|
|
||||||
proto.BytesMarshal(chainRawField, buf[offset:], v.GetRaw())
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprintf("unsupported chain kind: %T", v))
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Chain) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(c, data, new(ape.Chain))
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
package ape
|
|
||||||
|
|
||||||
import (
|
|
||||||
apegrpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (tt TargetType) String() string {
|
|
||||||
return TargetTypeToGRPCField(tt).String()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (tt *TargetType) FromString(s string) bool {
|
|
||||||
i, ok := apegrpc.TargetType_value[s]
|
|
||||||
if ok {
|
|
||||||
*tt = TargetType(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ok
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GenerateRawChains(empty bool, n int) []*ape.Chain {
|
|
||||||
if empty {
|
|
||||||
return []*ape.Chain{}
|
|
||||||
}
|
|
||||||
|
|
||||||
res := make([]*ape.Chain, n)
|
|
||||||
for i := range res {
|
|
||||||
res[i] = GenerateRawChain(empty)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateRawChain(empty bool) *ape.Chain {
|
|
||||||
chRaw := new(ape.ChainRaw)
|
|
||||||
|
|
||||||
if empty {
|
|
||||||
chRaw.SetRaw([]byte("{}"))
|
|
||||||
} else {
|
|
||||||
chRaw.SetRaw([]byte(`{
|
|
||||||
"ID": "",
|
|
||||||
"Rules": [
|
|
||||||
{
|
|
||||||
"Status": "Allow",
|
|
||||||
"Actions": {
|
|
||||||
"Inverted": false,
|
|
||||||
"Names": [
|
|
||||||
"GetObject"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Resources": {
|
|
||||||
"Inverted": false,
|
|
||||||
"Names": [
|
|
||||||
"native:object/*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Any": false,
|
|
||||||
"Condition": [
|
|
||||||
{
|
|
||||||
"Op": "StringEquals",
|
|
||||||
"Object": "Resource",
|
|
||||||
"Key": "Department",
|
|
||||||
"Value": "HR"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"MatchType": "DenyPriority"
|
|
||||||
}`))
|
|
||||||
}
|
|
||||||
|
|
||||||
ch := new(ape.Chain)
|
|
||||||
ch.SetKind(chRaw)
|
|
||||||
return ch
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateChainTarget(empty bool) *ape.ChainTarget {
|
|
||||||
m := new(ape.ChainTarget)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetTargetType(ape.TargetTypeContainer)
|
|
||||||
m.SetName("BzQw5HH3feoxFDD5tCT87Y1726qzgLfxEE7wgtoRzB3R")
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
79
ape/types.go
79
ape/types.go
|
@ -1,79 +0,0 @@
|
||||||
package ape
|
|
||||||
|
|
||||||
type TargetType uint32
|
|
||||||
|
|
||||||
const (
|
|
||||||
TargetTypeUndefined TargetType = iota
|
|
||||||
TargetTypeNamespace
|
|
||||||
TargetTypeContainer
|
|
||||||
TargetTypeUser
|
|
||||||
TargetTypeGroup
|
|
||||||
)
|
|
||||||
|
|
||||||
type ChainTarget struct {
|
|
||||||
targeType TargetType
|
|
||||||
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ct *ChainTarget) SetTargetType(targeType TargetType) {
|
|
||||||
ct.targeType = targeType
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ct *ChainTarget) SetName(name string) {
|
|
||||||
ct.name = name
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ct *ChainTarget) GetTargetType() TargetType {
|
|
||||||
if ct != nil {
|
|
||||||
return ct.targeType
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ct *ChainTarget) GetName() string {
|
|
||||||
if ct != nil {
|
|
||||||
return ct.name
|
|
||||||
}
|
|
||||||
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
type chainKind interface {
|
|
||||||
isChainKind()
|
|
||||||
}
|
|
||||||
|
|
||||||
type Chain struct {
|
|
||||||
kind chainKind
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Chain) SetKind(kind chainKind) {
|
|
||||||
c.kind = kind
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Chain) GetKind() chainKind {
|
|
||||||
if c == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return c.kind
|
|
||||||
}
|
|
||||||
|
|
||||||
type ChainRaw struct {
|
|
||||||
Raw []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ChainRaw) isChainKind() {}
|
|
||||||
|
|
||||||
func (c *ChainRaw) SetRaw(raw []byte) {
|
|
||||||
c.Raw = raw
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *ChainRaw) GetRaw() []byte {
|
|
||||||
if c == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return c.Raw
|
|
||||||
}
|
|
|
@ -1,358 +0,0 @@
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
ape "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
|
||||||
apeGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc"
|
|
||||||
apemanager "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (reqBody *AddChainRequestBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqBodygrpc *apemanager.AddChainRequest_Body
|
|
||||||
|
|
||||||
if reqBody != nil {
|
|
||||||
reqBodygrpc = new(apemanager.AddChainRequest_Body)
|
|
||||||
|
|
||||||
reqBodygrpc.SetTarget(reqBody.GetTarget().ToGRPCMessage().(*apeGRPC.ChainTarget))
|
|
||||||
reqBodygrpc.SetChain(reqBody.GetChain().ToGRPCMessage().(*apeGRPC.Chain))
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (reqBody *AddChainRequestBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqBodygrpc, ok := m.(*apemanager.AddChainRequest_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if targetgrpc := reqBodygrpc.GetTarget(); targetgrpc != nil {
|
|
||||||
reqBody.target = new(ape.ChainTarget)
|
|
||||||
if err := reqBody.target.FromGRPCMessage(targetgrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if chaingrpc := reqBodygrpc.GetChain(); chaingrpc != nil {
|
|
||||||
reqBody.chain = new(ape.Chain)
|
|
||||||
if err := reqBody.GetChain().FromGRPCMessage(chaingrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *AddChainRequest) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqgrpc *apemanager.AddChainRequest
|
|
||||||
|
|
||||||
if req != nil {
|
|
||||||
reqgrpc = new(apemanager.AddChainRequest)
|
|
||||||
|
|
||||||
reqgrpc.SetBody(req.GetBody().ToGRPCMessage().(*apemanager.AddChainRequest_Body))
|
|
||||||
req.RequestHeaders.ToMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *AddChainRequest) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqgrpc, ok := m.(*apemanager.AddChainRequest)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if reqBodygrpc := reqgrpc.GetBody(); reqBodygrpc != nil {
|
|
||||||
req.body = new(AddChainRequestBody)
|
|
||||||
if err := req.body.FromGRPCMessage(reqBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return req.RequestHeaders.FromMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *AddChainResponseBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var respBodygrpc *apemanager.AddChainResponse_Body
|
|
||||||
|
|
||||||
if respBody != nil {
|
|
||||||
respBodygrpc = new(apemanager.AddChainResponse_Body)
|
|
||||||
|
|
||||||
respBodygrpc.SetChainId(respBody.GetChainID())
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *AddChainResponseBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respBodygrpc, ok := m.(*apemanager.AddChainResponse_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
respBody.SetChainID(respBodygrpc.GetChainId())
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *AddChainResponse) ToGRPCMessage() grpc.Message {
|
|
||||||
var respgrpc *apemanager.AddChainResponse
|
|
||||||
|
|
||||||
if resp != nil {
|
|
||||||
respgrpc = new(apemanager.AddChainResponse)
|
|
||||||
|
|
||||||
respgrpc.SetBody(resp.body.ToGRPCMessage().(*apemanager.AddChainResponse_Body))
|
|
||||||
resp.ResponseHeaders.ToMessage(respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *AddChainResponse) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respgrpc, ok := m.(*apemanager.AddChainResponse)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if respBodygrpc := respgrpc.GetBody(); respBodygrpc != nil {
|
|
||||||
resp.body = new(AddChainResponseBody)
|
|
||||||
if err := resp.body.FromGRPCMessage(respBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.ResponseHeaders.FromMessage(respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (reqBody *RemoveChainRequestBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqBodygrpc *apemanager.RemoveChainRequest_Body
|
|
||||||
|
|
||||||
if reqBody != nil {
|
|
||||||
reqBodygrpc = new(apemanager.RemoveChainRequest_Body)
|
|
||||||
|
|
||||||
reqBodygrpc.SetTarget(reqBody.target.ToGRPCMessage().(*apeGRPC.ChainTarget))
|
|
||||||
reqBodygrpc.SetChainId(reqBody.GetChainID())
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (reqBody *RemoveChainRequestBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqBodygrpc, ok := m.(*apemanager.RemoveChainRequest_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if targetgrpc := reqBodygrpc.GetTarget(); targetgrpc != nil {
|
|
||||||
reqBody.target = new(ape.ChainTarget)
|
|
||||||
if err := reqBody.target.FromGRPCMessage(targetgrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
reqBody.SetChainID(reqBodygrpc.GetChainId())
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *RemoveChainRequest) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqgrpc *apemanager.RemoveChainRequest
|
|
||||||
|
|
||||||
if req != nil {
|
|
||||||
reqgrpc = new(apemanager.RemoveChainRequest)
|
|
||||||
|
|
||||||
reqgrpc.SetBody(req.body.ToGRPCMessage().(*apemanager.RemoveChainRequest_Body))
|
|
||||||
req.RequestHeaders.ToMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *RemoveChainRequest) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqgrpc, ok := m.(*apemanager.RemoveChainRequest)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if reqBodygrpc := reqgrpc.GetBody(); reqBodygrpc != nil {
|
|
||||||
req.body = new(RemoveChainRequestBody)
|
|
||||||
if err := req.body.FromGRPCMessage(reqBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return req.RequestHeaders.FromMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *RemoveChainResponseBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var respBodygrpc *apemanager.RemoveChainResponse_Body
|
|
||||||
|
|
||||||
if respBody != nil {
|
|
||||||
respBodygrpc = new(apemanager.RemoveChainResponse_Body)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *RemoveChainResponseBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respBodygrpc, ok := m.(*apemanager.RemoveChainResponse_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *RemoveChainResponse) ToGRPCMessage() grpc.Message {
|
|
||||||
var respgrpc *apemanager.RemoveChainResponse
|
|
||||||
|
|
||||||
if resp != nil {
|
|
||||||
respgrpc = new(apemanager.RemoveChainResponse)
|
|
||||||
|
|
||||||
respgrpc.SetBody(resp.body.ToGRPCMessage().(*apemanager.RemoveChainResponse_Body))
|
|
||||||
resp.ResponseHeaders.ToMessage(respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *RemoveChainResponse) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respgrpc, ok := m.(*apemanager.RemoveChainResponse)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if respBodygrpc := respgrpc.GetBody(); respBodygrpc != nil {
|
|
||||||
resp.body = new(RemoveChainResponseBody)
|
|
||||||
if err := resp.body.FromGRPCMessage(respBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.ResponseHeaders.FromMessage(respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (reqBody *ListChainsRequestBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqBodygrpc *apemanager.ListChainsRequest_Body
|
|
||||||
|
|
||||||
if reqBody != nil {
|
|
||||||
reqBodygrpc = new(apemanager.ListChainsRequest_Body)
|
|
||||||
|
|
||||||
reqBodygrpc.SetTarget(reqBody.target.ToGRPCMessage().(*apeGRPC.ChainTarget))
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (reqBody *ListChainsRequestBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqBodygrpc, ok := m.(*apemanager.ListChainsRequest_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if targetgrpc := reqBodygrpc.GetTarget(); targetgrpc != nil {
|
|
||||||
reqBody.target = new(ape.ChainTarget)
|
|
||||||
if err := reqBody.target.FromGRPCMessage(targetgrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *ListChainsRequest) ToGRPCMessage() grpc.Message {
|
|
||||||
var reqgrpc *apemanager.ListChainsRequest
|
|
||||||
|
|
||||||
if req != nil {
|
|
||||||
reqgrpc = new(apemanager.ListChainsRequest)
|
|
||||||
|
|
||||||
reqgrpc.SetBody(req.body.ToGRPCMessage().(*apemanager.ListChainsRequest_Body))
|
|
||||||
req.RequestHeaders.ToMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return reqgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (req *ListChainsRequest) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
reqgrpc, ok := m.(*apemanager.ListChainsRequest)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if reqBodygrpc := reqgrpc.GetBody(); reqBodygrpc != nil {
|
|
||||||
req.body = new(ListChainsRequestBody)
|
|
||||||
if err := req.body.FromGRPCMessage(reqBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return req.RequestHeaders.FromMessage(reqgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *ListChainsResponseBody) ToGRPCMessage() grpc.Message {
|
|
||||||
var respBodygrpc *apemanager.ListChainsResponse_Body
|
|
||||||
|
|
||||||
if respBody != nil {
|
|
||||||
respBodygrpc = new(apemanager.ListChainsResponse_Body)
|
|
||||||
|
|
||||||
chainsgrpc := make([]apeGRPC.Chain, 0, len(respBody.GetChains()))
|
|
||||||
for _, chain := range respBody.GetChains() {
|
|
||||||
chainsgrpc = append(chainsgrpc, *chain.ToGRPCMessage().(*apeGRPC.Chain))
|
|
||||||
}
|
|
||||||
|
|
||||||
respBodygrpc.SetChains(chainsgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBodygrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (respBody *ListChainsResponseBody) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respBodygrpc, ok := m.(*apemanager.ListChainsResponse_Body)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respBodygrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
chains := make([]*ape.Chain, 0, len(respBodygrpc.GetChains()))
|
|
||||||
|
|
||||||
for _, chaingrpc := range respBodygrpc.GetChains() {
|
|
||||||
chain := new(ape.Chain)
|
|
||||||
if err := chain.FromGRPCMessage(&chaingrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
chains = append(chains, chain)
|
|
||||||
}
|
|
||||||
|
|
||||||
respBody.SetChains(chains)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *ListChainsResponse) ToGRPCMessage() grpc.Message {
|
|
||||||
var respgrpc *apemanager.ListChainsResponse
|
|
||||||
|
|
||||||
if resp != nil {
|
|
||||||
respgrpc = new(apemanager.ListChainsResponse)
|
|
||||||
|
|
||||||
respgrpc.SetBody(resp.body.ToGRPCMessage().(*apemanager.ListChainsResponse_Body))
|
|
||||||
resp.ResponseHeaders.ToMessage(respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respgrpc
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resp *ListChainsResponse) FromGRPCMessage(m grpc.Message) error {
|
|
||||||
respgrpc, ok := m.(*apemanager.ListChainsResponse)
|
|
||||||
if !ok {
|
|
||||||
return message.NewUnexpectedMessageType(m, respgrpc)
|
|
||||||
}
|
|
||||||
|
|
||||||
if respBodygrpc := respgrpc.GetBody(); respBodygrpc != nil {
|
|
||||||
resp.body = new(ListChainsResponseBody)
|
|
||||||
if err := resp.body.FromGRPCMessage(respBodygrpc); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.ResponseHeaders.FromMessage(respgrpc)
|
|
||||||
}
|
|
2337
apemanager/grpc/service_frostfs.pb.go
generated
2337
apemanager/grpc/service_frostfs.pb.go
generated
File diff suppressed because it is too large
Load diff
|
@ -1,121 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package apemanager
|
|
||||||
|
|
||||||
func DoFuzzProtoAddChainRequest(data []byte) int {
|
|
||||||
msg := new(AddChainRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONAddChainRequest(data []byte) int {
|
|
||||||
msg := new(AddChainRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoAddChainResponse(data []byte) int {
|
|
||||||
msg := new(AddChainResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONAddChainResponse(data []byte) int {
|
|
||||||
msg := new(AddChainResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoRemoveChainRequest(data []byte) int {
|
|
||||||
msg := new(RemoveChainRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONRemoveChainRequest(data []byte) int {
|
|
||||||
msg := new(RemoveChainRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoRemoveChainResponse(data []byte) int {
|
|
||||||
msg := new(RemoveChainResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONRemoveChainResponse(data []byte) int {
|
|
||||||
msg := new(RemoveChainResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoListChainsRequest(data []byte) int {
|
|
||||||
msg := new(ListChainsRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONListChainsRequest(data []byte) int {
|
|
||||||
msg := new(ListChainsRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoListChainsResponse(data []byte) int {
|
|
||||||
msg := new(ListChainsResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONListChainsResponse(data []byte) int {
|
|
||||||
msg := new(ListChainsResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoAddChainRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoAddChainRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONAddChainRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONAddChainRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoAddChainResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoAddChainResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONAddChainResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONAddChainResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoRemoveChainRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoRemoveChainRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONRemoveChainRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONRemoveChainRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoRemoveChainResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoRemoveChainResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONRemoveChainResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONRemoveChainResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoListChainsRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoListChainsRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONListChainsRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONListChainsRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoListChainsResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoListChainsResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONListChainsResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONListChainsResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
245
apemanager/grpc/service_grpc.pb.go
generated
245
apemanager/grpc/service_grpc.pb.go
generated
|
@ -1,245 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
|
||||||
// - protoc v5.27.2
|
|
||||||
// source: apemanager/grpc/service.proto
|
|
||||||
|
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
context "context"
|
|
||||||
grpc "google.golang.org/grpc"
|
|
||||||
codes "google.golang.org/grpc/codes"
|
|
||||||
status "google.golang.org/grpc/status"
|
|
||||||
)
|
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
|
||||||
// is compatible with the grpc package it is being compiled against.
|
|
||||||
// Requires gRPC-Go v1.32.0 or later.
|
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
|
||||||
|
|
||||||
const (
|
|
||||||
APEManagerService_AddChain_FullMethodName = "/frostfs.v2.apemanager.APEManagerService/AddChain"
|
|
||||||
APEManagerService_RemoveChain_FullMethodName = "/frostfs.v2.apemanager.APEManagerService/RemoveChain"
|
|
||||||
APEManagerService_ListChains_FullMethodName = "/frostfs.v2.apemanager.APEManagerService/ListChains"
|
|
||||||
)
|
|
||||||
|
|
||||||
// APEManagerServiceClient is the client API for APEManagerService service.
|
|
||||||
//
|
|
||||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
|
||||||
type APEManagerServiceClient interface {
|
|
||||||
// Add a rule chain for a specific target to `Policy` smart contract.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// the chain has been successfully added;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
AddChain(ctx context.Context, in *AddChainRequest, opts ...grpc.CallOption) (*AddChainResponse, error)
|
|
||||||
// Remove a rule chain for a specific target from `Policy` smart contract.
|
|
||||||
// RemoveChain is an idempotent operation: removal of non-existing rule chain
|
|
||||||
// also means success.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// the chain has been successfully removed;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
RemoveChain(ctx context.Context, in *RemoveChainRequest, opts ...grpc.CallOption) (*RemoveChainResponse, error)
|
|
||||||
// List chains defined for a specific target from `Policy` smart contract.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// chains have been successfully listed;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
ListChains(ctx context.Context, in *ListChainsRequest, opts ...grpc.CallOption) (*ListChainsResponse, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type aPEManagerServiceClient struct {
|
|
||||||
cc grpc.ClientConnInterface
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewAPEManagerServiceClient(cc grpc.ClientConnInterface) APEManagerServiceClient {
|
|
||||||
return &aPEManagerServiceClient{cc}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *aPEManagerServiceClient) AddChain(ctx context.Context, in *AddChainRequest, opts ...grpc.CallOption) (*AddChainResponse, error) {
|
|
||||||
out := new(AddChainResponse)
|
|
||||||
err := c.cc.Invoke(ctx, APEManagerService_AddChain_FullMethodName, in, out, opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return out, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *aPEManagerServiceClient) RemoveChain(ctx context.Context, in *RemoveChainRequest, opts ...grpc.CallOption) (*RemoveChainResponse, error) {
|
|
||||||
out := new(RemoveChainResponse)
|
|
||||||
err := c.cc.Invoke(ctx, APEManagerService_RemoveChain_FullMethodName, in, out, opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return out, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *aPEManagerServiceClient) ListChains(ctx context.Context, in *ListChainsRequest, opts ...grpc.CallOption) (*ListChainsResponse, error) {
|
|
||||||
out := new(ListChainsResponse)
|
|
||||||
err := c.cc.Invoke(ctx, APEManagerService_ListChains_FullMethodName, in, out, opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return out, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// APEManagerServiceServer is the server API for APEManagerService service.
|
|
||||||
// All implementations should embed UnimplementedAPEManagerServiceServer
|
|
||||||
// for forward compatibility
|
|
||||||
type APEManagerServiceServer interface {
|
|
||||||
// Add a rule chain for a specific target to `Policy` smart contract.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// the chain has been successfully added;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
AddChain(context.Context, *AddChainRequest) (*AddChainResponse, error)
|
|
||||||
// Remove a rule chain for a specific target from `Policy` smart contract.
|
|
||||||
// RemoveChain is an idempotent operation: removal of non-existing rule chain
|
|
||||||
// also means success.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// the chain has been successfully removed;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
RemoveChain(context.Context, *RemoveChainRequest) (*RemoveChainResponse, error)
|
|
||||||
// List chains defined for a specific target from `Policy` smart contract.
|
|
||||||
//
|
|
||||||
// Statuses:
|
|
||||||
// - **OK** (0, SECTION_SUCCESS): \
|
|
||||||
// chains have been successfully listed;
|
|
||||||
// - Common failures (SECTION_FAILURE_COMMON);
|
|
||||||
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
|
||||||
// container (as target) not found;
|
|
||||||
// - **APE_MANAGER_ACCESS_DENIED** (5120, SECTION_APE_MANAGER): \
|
|
||||||
// the operation is denied by the service.
|
|
||||||
ListChains(context.Context, *ListChainsRequest) (*ListChainsResponse, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnimplementedAPEManagerServiceServer should be embedded to have forward compatible implementations.
|
|
||||||
type UnimplementedAPEManagerServiceServer struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (UnimplementedAPEManagerServiceServer) AddChain(context.Context, *AddChainRequest) (*AddChainResponse, error) {
|
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method AddChain not implemented")
|
|
||||||
}
|
|
||||||
func (UnimplementedAPEManagerServiceServer) RemoveChain(context.Context, *RemoveChainRequest) (*RemoveChainResponse, error) {
|
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method RemoveChain not implemented")
|
|
||||||
}
|
|
||||||
func (UnimplementedAPEManagerServiceServer) ListChains(context.Context, *ListChainsRequest) (*ListChainsResponse, error) {
|
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method ListChains not implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnsafeAPEManagerServiceServer may be embedded to opt out of forward compatibility for this service.
|
|
||||||
// Use of this interface is not recommended, as added methods to APEManagerServiceServer will
|
|
||||||
// result in compilation errors.
|
|
||||||
type UnsafeAPEManagerServiceServer interface {
|
|
||||||
mustEmbedUnimplementedAPEManagerServiceServer()
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterAPEManagerServiceServer(s grpc.ServiceRegistrar, srv APEManagerServiceServer) {
|
|
||||||
s.RegisterService(&APEManagerService_ServiceDesc, srv)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _APEManagerService_AddChain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
||||||
in := new(AddChainRequest)
|
|
||||||
if err := dec(in); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if interceptor == nil {
|
|
||||||
return srv.(APEManagerServiceServer).AddChain(ctx, in)
|
|
||||||
}
|
|
||||||
info := &grpc.UnaryServerInfo{
|
|
||||||
Server: srv,
|
|
||||||
FullMethod: APEManagerService_AddChain_FullMethodName,
|
|
||||||
}
|
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
||||||
return srv.(APEManagerServiceServer).AddChain(ctx, req.(*AddChainRequest))
|
|
||||||
}
|
|
||||||
return interceptor(ctx, in, info, handler)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _APEManagerService_RemoveChain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
||||||
in := new(RemoveChainRequest)
|
|
||||||
if err := dec(in); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if interceptor == nil {
|
|
||||||
return srv.(APEManagerServiceServer).RemoveChain(ctx, in)
|
|
||||||
}
|
|
||||||
info := &grpc.UnaryServerInfo{
|
|
||||||
Server: srv,
|
|
||||||
FullMethod: APEManagerService_RemoveChain_FullMethodName,
|
|
||||||
}
|
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
||||||
return srv.(APEManagerServiceServer).RemoveChain(ctx, req.(*RemoveChainRequest))
|
|
||||||
}
|
|
||||||
return interceptor(ctx, in, info, handler)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _APEManagerService_ListChains_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
||||||
in := new(ListChainsRequest)
|
|
||||||
if err := dec(in); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if interceptor == nil {
|
|
||||||
return srv.(APEManagerServiceServer).ListChains(ctx, in)
|
|
||||||
}
|
|
||||||
info := &grpc.UnaryServerInfo{
|
|
||||||
Server: srv,
|
|
||||||
FullMethod: APEManagerService_ListChains_FullMethodName,
|
|
||||||
}
|
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
||||||
return srv.(APEManagerServiceServer).ListChains(ctx, req.(*ListChainsRequest))
|
|
||||||
}
|
|
||||||
return interceptor(ctx, in, info, handler)
|
|
||||||
}
|
|
||||||
|
|
||||||
// APEManagerService_ServiceDesc is the grpc.ServiceDesc for APEManagerService service.
|
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
|
||||||
// and not to be introspected or modified (even as a copy)
|
|
||||||
var APEManagerService_ServiceDesc = grpc.ServiceDesc{
|
|
||||||
ServiceName: "frostfs.v2.apemanager.APEManagerService",
|
|
||||||
HandlerType: (*APEManagerServiceServer)(nil),
|
|
||||||
Methods: []grpc.MethodDesc{
|
|
||||||
{
|
|
||||||
MethodName: "AddChain",
|
|
||||||
Handler: _APEManagerService_AddChain_Handler,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
MethodName: "RemoveChain",
|
|
||||||
Handler: _APEManagerService_RemoveChain_Handler,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
MethodName: "ListChains",
|
|
||||||
Handler: _APEManagerService_ListChains_Handler,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Streams: []grpc.StreamDesc{},
|
|
||||||
Metadata: "apemanager/grpc/service.proto",
|
|
||||||
}
|
|
|
@ -1,205 +0,0 @@
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
apemanager "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
addChainReqBodyTargetField = 1
|
|
||||||
addChainReqBodyChainField = 2
|
|
||||||
|
|
||||||
addChainRespBodyChainIDField = 1
|
|
||||||
|
|
||||||
removeChainReqBodyTargetField = 1
|
|
||||||
removeChainReqBodyChainField = 2
|
|
||||||
|
|
||||||
/*
|
|
||||||
Fields for RemoveResponseBody are missed since RemoveResponseBody is empty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
listChainsReqBodyTargetField = 1
|
|
||||||
|
|
||||||
listChainsRespBodyChainsField = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += proto.NestedStructureSize(addChainReqBodyTargetField, rb.target)
|
|
||||||
size += proto.NestedStructureSize(addChainReqBodyChainField, rb.chain)
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
offset += proto.NestedStructureMarshal(addChainReqBodyTargetField, buf[offset:], rb.target)
|
|
||||||
proto.NestedStructureMarshal(addChainReqBodyChainField, buf[offset:], rb.chain)
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.AddChainRequest_Body))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainResponseBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += proto.BytesSize(addChainRespBodyChainIDField, rb.chainID)
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainResponseBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
proto.BytesMarshal(addChainRespBodyChainIDField, buf[offset:], rb.chainID)
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainResponseBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.AddChainResponse_Body))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += proto.NestedStructureSize(addChainReqBodyTargetField, rb.target)
|
|
||||||
size += proto.BytesSize(addChainReqBodyChainField, rb.chainID)
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
|
|
||||||
offset += proto.NestedStructureMarshal(removeChainReqBodyTargetField, buf[offset:], rb.target)
|
|
||||||
proto.BytesMarshal(removeChainReqBodyChainField, buf[offset:], rb.chainID)
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.RemoveChainRequest_Body))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainResponseBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainResponseBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainResponseBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.RemoveChainResponse_Body))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsRequestBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
size += proto.NestedStructureSize(listChainsReqBodyTargetField, rb.target)
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsRequestBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
proto.NestedStructureMarshal(addChainReqBodyTargetField, buf[offset:], rb.target)
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsRequestBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.ListChainsRequest_Body))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsResponseBody) StableSize() (size int) {
|
|
||||||
if rb == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, chain := range rb.GetChains() {
|
|
||||||
size += proto.NestedStructureSize(listChainsRespBodyChainsField, chain)
|
|
||||||
}
|
|
||||||
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsResponseBody) StableMarshal(buf []byte) []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
if buf == nil {
|
|
||||||
buf = make([]byte, rb.StableSize())
|
|
||||||
}
|
|
||||||
|
|
||||||
var offset int
|
|
||||||
for _, chain := range rb.GetChains() {
|
|
||||||
offset += proto.NestedStructureMarshal(listChainsRespBodyChainsField, buf[offset:], chain)
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsResponseBody) Unmarshal(data []byte) error {
|
|
||||||
return message.Unmarshal(rb, data, new(apemanager.ListChainsResponse_Body))
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package apemanager_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
apemanagertest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/test"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
|
||||||
messagetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message/test"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestMessageConvert(t *testing.T) {
|
|
||||||
messagetest.TestRPCMessage(t,
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateAddChainRequestBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateAddChainRequest(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateAddChainResponseBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateAddChainResponse(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateRemoveChainRequestBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateRemoveChainRequest(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateRemoveChainResponseBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateRemoveChainResponse(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateListChainsRequestBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateListChainsRequest(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateListChainsResponseBody(empty) },
|
|
||||||
func(empty bool) message.Message { return apemanagertest.GenerateListChainsResponse(empty) },
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status"
|
|
||||||
statusgrpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/grpc"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LocalizeFailStatus checks if passed global status.Code is related to ape manager failure and:
|
|
||||||
//
|
|
||||||
// then localizes the code and returns true,
|
|
||||||
// else leaves the code unchanged and returns false.
|
|
||||||
//
|
|
||||||
// Arg must be non-nil.
|
|
||||||
func LocalizeFailStatus(c *status.Code) bool {
|
|
||||||
return status.LocalizeIfInSection(c, uint32(statusgrpc.Section_SECTION_APE_MANAGER))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GlobalizeFail globalizes local code of ape manager failure.
|
|
||||||
//
|
|
||||||
// Arg must be non-nil.
|
|
||||||
func GlobalizeFail(c *status.Code) {
|
|
||||||
c.GlobalizeSection(uint32(statusgrpc.Section_SECTION_APE_MANAGER))
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
|
||||||
// StatusAPEManagerAccessDenied is a local status.Code value for
|
|
||||||
// ACCESS_DENIED ape manager failure.
|
|
||||||
StatusAPEManagerAccessDenied status.Code = iota
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// detailAccessDeniedDesc is a StatusAccessDenied detail ID for
|
|
||||||
// human-readable description.
|
|
||||||
detailAccessDeniedDesc = iota
|
|
||||||
)
|
|
||||||
|
|
||||||
// WriteAccessDeniedDesc writes human-readable description of StatusAccessDenied
|
|
||||||
// into status.Status as a detail. The status must not be nil.
|
|
||||||
//
|
|
||||||
// Existing details are expected to be ID-unique, otherwise undefined behavior.
|
|
||||||
func WriteAccessDeniedDesc(st *status.Status, desc string) {
|
|
||||||
var found bool
|
|
||||||
|
|
||||||
st.IterateDetails(func(d *status.Detail) bool {
|
|
||||||
if d.ID() == detailAccessDeniedDesc {
|
|
||||||
found = true
|
|
||||||
d.SetValue([]byte(desc))
|
|
||||||
}
|
|
||||||
|
|
||||||
return found
|
|
||||||
})
|
|
||||||
|
|
||||||
if !found {
|
|
||||||
var d status.Detail
|
|
||||||
|
|
||||||
d.SetID(detailAccessDeniedDesc)
|
|
||||||
d.SetValue([]byte(desc))
|
|
||||||
|
|
||||||
st.AppendDetails(d)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadAccessDeniedDesc looks up for status detail with human-readable description
|
|
||||||
// of StatusAccessDenied. Returns empty string if detail is missing.
|
|
||||||
func ReadAccessDeniedDesc(st status.Status) (desc string) {
|
|
||||||
st.IterateDetails(func(d *status.Detail) bool {
|
|
||||||
if d.ID() == detailAccessDeniedDesc {
|
|
||||||
desc = string(d.Value())
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
package apemanager_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status"
|
|
||||||
statustest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/test"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestStatusCodes(t *testing.T) {
|
|
||||||
statustest.TestCodes(t, apemanager.LocalizeFailStatus, apemanager.GlobalizeFail,
|
|
||||||
apemanager.StatusAPEManagerAccessDenied, 5120,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAccessDeniedDesc(t *testing.T) {
|
|
||||||
var st status.Status
|
|
||||||
|
|
||||||
require.Empty(t, apemanager.ReadAccessDeniedDesc(st))
|
|
||||||
|
|
||||||
const desc = "some description"
|
|
||||||
|
|
||||||
apemanager.WriteAccessDeniedDesc(&st, desc)
|
|
||||||
require.Equal(t, desc, apemanager.ReadAccessDeniedDesc(st))
|
|
||||||
|
|
||||||
apemanager.WriteAccessDeniedDesc(&st, desc+"1")
|
|
||||||
require.Equal(t, desc+"1", apemanager.ReadAccessDeniedDesc(st))
|
|
||||||
}
|
|
|
@ -1,143 +0,0 @@
|
||||||
package apemanagertest
|
|
||||||
|
|
||||||
import (
|
|
||||||
apetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/test"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager"
|
|
||||||
sessiontest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/test"
|
|
||||||
)
|
|
||||||
|
|
||||||
func generateChainID(empty bool) []byte {
|
|
||||||
if empty {
|
|
||||||
return []byte{}
|
|
||||||
}
|
|
||||||
|
|
||||||
return []byte("616c6c6f774f626a476574436e72")
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateAddChainRequestBody(empty bool) *apemanager.AddChainRequestBody {
|
|
||||||
m := new(apemanager.AddChainRequestBody)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetTarget(apetest.GenerateChainTarget(empty))
|
|
||||||
m.SetChain(apetest.GenerateRawChain(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateAddChainRequest(empty bool) *apemanager.AddChainRequest {
|
|
||||||
m := new(apemanager.AddChainRequest)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateAddChainRequestBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateAddChainResponseBody(empty bool) *apemanager.AddChainResponseBody {
|
|
||||||
m := new(apemanager.AddChainResponseBody)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetChainID(generateChainID(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateAddChainResponse(empty bool) *apemanager.AddChainResponse {
|
|
||||||
m := new(apemanager.AddChainResponse)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateAddChainResponseBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateRemoveChainRequestBody(empty bool) *apemanager.RemoveChainRequestBody {
|
|
||||||
m := new(apemanager.RemoveChainRequestBody)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetChainID(generateChainID(empty))
|
|
||||||
m.SetTarget(apetest.GenerateChainTarget(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateRemoveChainRequest(empty bool) *apemanager.RemoveChainRequest {
|
|
||||||
m := new(apemanager.RemoveChainRequest)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateRemoveChainRequestBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateRemoveChainResponseBody(_ bool) *apemanager.RemoveChainResponseBody {
|
|
||||||
return new(apemanager.RemoveChainResponseBody)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateRemoveChainResponse(empty bool) *apemanager.RemoveChainResponse {
|
|
||||||
m := new(apemanager.RemoveChainResponse)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateRemoveChainResponseBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateListChainsRequestBody(empty bool) *apemanager.ListChainsRequestBody {
|
|
||||||
m := new(apemanager.ListChainsRequestBody)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetTarget(apetest.GenerateChainTarget(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateListChainsRequest(empty bool) *apemanager.ListChainsRequest {
|
|
||||||
m := new(apemanager.ListChainsRequest)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateListChainsRequestBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateListChainsResponseBody(empty bool) *apemanager.ListChainsResponseBody {
|
|
||||||
m := new(apemanager.ListChainsResponseBody)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetChains(apetest.GenerateRawChains(empty, 10))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateListChainsResponse(empty bool) *apemanager.ListChainsResponse {
|
|
||||||
m := new(apemanager.ListChainsResponse)
|
|
||||||
|
|
||||||
if !empty {
|
|
||||||
m.SetBody(GenerateListChainsResponseBody(empty))
|
|
||||||
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
|
||||||
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
|
@ -1,226 +0,0 @@
|
||||||
package apemanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AddChainRequest struct {
|
|
||||||
body *AddChainRequestBody
|
|
||||||
|
|
||||||
session.RequestHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *AddChainRequest) SetBody(body *AddChainRequestBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *AddChainRequest) GetBody() *AddChainRequestBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddChainRequestBody struct {
|
|
||||||
target *ape.ChainTarget
|
|
||||||
|
|
||||||
chain *ape.Chain
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) SetTarget(target *ape.ChainTarget) {
|
|
||||||
rb.target = target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) GetTarget() *ape.ChainTarget {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) SetChain(chain *ape.Chain) {
|
|
||||||
rb.chain = chain
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainRequestBody) GetChain() *ape.Chain {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.chain
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddChainResponse struct {
|
|
||||||
body *AddChainResponseBody
|
|
||||||
|
|
||||||
session.ResponseHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *AddChainResponse) SetBody(body *AddChainResponseBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *AddChainResponse) GetBody() *AddChainResponseBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddChainResponseBody struct {
|
|
||||||
chainID []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainResponseBody) SetChainID(chainID []byte) {
|
|
||||||
rb.chainID = chainID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *AddChainResponseBody) GetChainID() []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.chainID
|
|
||||||
}
|
|
||||||
|
|
||||||
type RemoveChainRequest struct {
|
|
||||||
body *RemoveChainRequestBody
|
|
||||||
|
|
||||||
session.RequestHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *RemoveChainRequest) SetBody(body *RemoveChainRequestBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *RemoveChainRequest) GetBody() *RemoveChainRequestBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type RemoveChainRequestBody struct {
|
|
||||||
target *ape.ChainTarget
|
|
||||||
|
|
||||||
chainID []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) SetTarget(target *ape.ChainTarget) {
|
|
||||||
rb.target = target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) GetTarget() *ape.ChainTarget {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) SetChainID(chainID []byte) {
|
|
||||||
rb.chainID = chainID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *RemoveChainRequestBody) GetChainID() []byte {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.chainID
|
|
||||||
}
|
|
||||||
|
|
||||||
type RemoveChainResponse struct {
|
|
||||||
body *RemoveChainResponseBody
|
|
||||||
|
|
||||||
session.ResponseHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
type RemoveChainResponseBody struct{}
|
|
||||||
|
|
||||||
func (r *RemoveChainResponse) SetBody(body *RemoveChainResponseBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *RemoveChainResponse) GetBody() *RemoveChainResponseBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListChainsRequest struct {
|
|
||||||
body *ListChainsRequestBody
|
|
||||||
|
|
||||||
session.RequestHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsRequest) SetBody(body *ListChainsRequestBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsRequest) GetBody() *ListChainsRequestBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListChainsRequestBody struct {
|
|
||||||
target *ape.ChainTarget
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsRequestBody) SetTarget(target *ape.ChainTarget) {
|
|
||||||
rb.target = target
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rb *ListChainsRequestBody) GetTarget() *ape.ChainTarget {
|
|
||||||
if rb == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return rb.target
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListChainsResponse struct {
|
|
||||||
body *ListChainsResponseBody
|
|
||||||
|
|
||||||
session.ResponseHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsResponse) SetBody(body *ListChainsResponseBody) {
|
|
||||||
r.body = body
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsResponse) GetBody() *ListChainsResponseBody {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.body
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListChainsResponseBody struct {
|
|
||||||
chains []*ape.Chain
|
|
||||||
|
|
||||||
session.RequestHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsResponseBody) SetChains(chains []*ape.Chain) {
|
|
||||||
r.chains = chains
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *ListChainsResponseBody) GetChains() []*ape.Chain {
|
|
||||||
if r == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return r.chains
|
|
||||||
}
|
|
94
audit/convert.go
Normal file
94
audit/convert.go
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
audit "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit/grpc"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
|
refsGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a *DataAuditResult) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *audit.DataAuditResult
|
||||||
|
|
||||||
|
if a != nil {
|
||||||
|
m = new(audit.DataAuditResult)
|
||||||
|
|
||||||
|
m.SetAuditEpoch(a.auditEpoch)
|
||||||
|
m.SetPublicKey(a.pubKey)
|
||||||
|
m.SetContainerId(a.cid.ToGRPCMessage().(*refsGRPC.ContainerID))
|
||||||
|
m.SetComplete(a.complete)
|
||||||
|
m.SetVersion(a.version.ToGRPCMessage().(*refsGRPC.Version))
|
||||||
|
m.SetPassNodes(a.passNodes)
|
||||||
|
m.SetFailNodes(a.failNodes)
|
||||||
|
m.SetRetries(a.retries)
|
||||||
|
m.SetRequests(a.requests)
|
||||||
|
m.SetHit(a.hit)
|
||||||
|
m.SetMiss(a.miss)
|
||||||
|
m.SetFail(a.fail)
|
||||||
|
m.SetPassSg(refs.ObjectIDListToGRPCMessage(a.passSG))
|
||||||
|
m.SetFailSg(refs.ObjectIDListToGRPCMessage(a.failSG))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *DataAuditResult) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*audit.DataAuditResult)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
cid := v.GetContainerId()
|
||||||
|
if cid == nil {
|
||||||
|
a.cid = nil
|
||||||
|
} else {
|
||||||
|
if a.cid == nil {
|
||||||
|
a.cid = new(refs.ContainerID)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.cid.FromGRPCMessage(cid)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
version := v.GetVersion()
|
||||||
|
if version == nil {
|
||||||
|
a.version = nil
|
||||||
|
} else {
|
||||||
|
if a.version == nil {
|
||||||
|
a.version = new(refs.Version)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.version.FromGRPCMessage(version)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.passSG, err = refs.ObjectIDListFromGRPCMessage(v.GetPassSg())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
a.failSG, err = refs.ObjectIDListFromGRPCMessage(v.GetFailSg())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
a.auditEpoch = v.GetAuditEpoch()
|
||||||
|
a.pubKey = v.GetPublicKey()
|
||||||
|
a.complete = v.GetComplete()
|
||||||
|
a.passNodes = v.GetPassNodes()
|
||||||
|
a.failNodes = v.GetFailNodes()
|
||||||
|
a.retries = v.GetRetries()
|
||||||
|
a.requests = v.GetRequests()
|
||||||
|
a.hit = v.GetHit()
|
||||||
|
a.miss = v.GetMiss()
|
||||||
|
a.fail = v.GetFail()
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
75
audit/grpc/types.go
Normal file
75
audit/grpc/types.go
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetVersion is a Version field setter.
|
||||||
|
func (x *DataAuditResult) SetVersion(v *refs.Version) {
|
||||||
|
x.Version = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAuditEpoch is an AuditEpoch field setter.
|
||||||
|
func (x *DataAuditResult) SetAuditEpoch(v uint64) {
|
||||||
|
x.AuditEpoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId is a ContainerId field setter.
|
||||||
|
func (x *DataAuditResult) SetContainerId(v *refs.ContainerID) {
|
||||||
|
x.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPublicKey is a PublicKey field setter.
|
||||||
|
func (x *DataAuditResult) SetPublicKey(v []byte) {
|
||||||
|
x.PublicKey = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetComplete is a Complete field setter.
|
||||||
|
func (x *DataAuditResult) SetComplete(v bool) {
|
||||||
|
x.Complete = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRequests is a Requests field setter.
|
||||||
|
func (x *DataAuditResult) SetRequests(v uint32) {
|
||||||
|
x.Requests = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRetries is a Retries field setter.
|
||||||
|
func (x *DataAuditResult) SetRetries(v uint32) {
|
||||||
|
x.Retries = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPassSg is a PassSg field setter.
|
||||||
|
func (x *DataAuditResult) SetPassSg(v []*refs.ObjectID) {
|
||||||
|
x.PassSg = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFailSg is a FailSg field setter.
|
||||||
|
func (x *DataAuditResult) SetFailSg(v []*refs.ObjectID) {
|
||||||
|
x.FailSg = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHit is a Hit field setter.
|
||||||
|
func (x *DataAuditResult) SetHit(v uint32) {
|
||||||
|
x.Hit = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMiss is a Miss field setter.
|
||||||
|
func (x *DataAuditResult) SetMiss(v uint32) {
|
||||||
|
x.Miss = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFail is a Fail field setter.
|
||||||
|
func (x *DataAuditResult) SetFail(v uint32) {
|
||||||
|
x.Fail = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPassNodes is a PassNodes field setter.
|
||||||
|
func (x *DataAuditResult) SetPassNodes(v [][]byte) {
|
||||||
|
x.PassNodes = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFailNodes is a FailNodes field setter.
|
||||||
|
func (x *DataAuditResult) SetFailNodes(v [][]byte) {
|
||||||
|
x.FailNodes = v
|
||||||
|
}
|
311
audit/grpc/types.pb.go
generated
Normal file
311
audit/grpc/types.pb.go
generated
Normal file
|
@ -0,0 +1,311 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.33.0
|
||||||
|
// protoc v4.25.3
|
||||||
|
// source: audit/grpc/types.proto
|
||||||
|
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// DataAuditResult keeps record of conducted Data Audits. The detailed report is
|
||||||
|
// generated separately.
|
||||||
|
type DataAuditResult struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Data Audit Result format version. Effectively, the version of API library
|
||||||
|
// used to report DataAuditResult structure.
|
||||||
|
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
||||||
|
// Epoch number when the Data Audit was conducted
|
||||||
|
AuditEpoch uint64 `protobuf:"fixed64,2,opt,name=audit_epoch,json=auditEpoch,proto3" json:"audit_epoch,omitempty"`
|
||||||
|
// Container under audit
|
||||||
|
ContainerId *grpc.ContainerID `protobuf:"bytes,3,opt,name=container_id,json=containerID,proto3" json:"container_id,omitempty"`
|
||||||
|
// Public key of the auditing InnerRing node in a binary format
|
||||||
|
PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
|
||||||
|
// Shows if Data Audit process was complete in time or if it was cancelled
|
||||||
|
Complete bool `protobuf:"varint,5,opt,name=complete,proto3" json:"complete,omitempty"`
|
||||||
|
// Number of request done at PoR stage
|
||||||
|
Requests uint32 `protobuf:"varint,6,opt,name=requests,proto3" json:"requests,omitempty"`
|
||||||
|
// Number of retries done at PoR stage
|
||||||
|
Retries uint32 `protobuf:"varint,7,opt,name=retries,proto3" json:"retries,omitempty"`
|
||||||
|
// List of Storage Groups that passed audit PoR stage
|
||||||
|
PassSg []*grpc.ObjectID `protobuf:"bytes,8,rep,name=pass_sg,json=passSG,proto3" json:"pass_sg,omitempty"`
|
||||||
|
// List of Storage Groups that failed audit PoR stage
|
||||||
|
FailSg []*grpc.ObjectID `protobuf:"bytes,9,rep,name=fail_sg,json=failSG,proto3" json:"fail_sg,omitempty"`
|
||||||
|
// Number of sampled objects under the audit placed in an optimal way
|
||||||
|
// according to the containers placement policy when checking PoP
|
||||||
|
Hit uint32 `protobuf:"varint,10,opt,name=hit,proto3" json:"hit,omitempty"`
|
||||||
|
// Number of sampled objects under the audit placed in suboptimal way
|
||||||
|
// according to the containers placement policy, but still at a satisfactory
|
||||||
|
// level when checking PoP
|
||||||
|
Miss uint32 `protobuf:"varint,11,opt,name=miss,proto3" json:"miss,omitempty"`
|
||||||
|
// Number of sampled objects under the audit stored inconsistently with the
|
||||||
|
// placement policy or not found at all when checking PoP
|
||||||
|
Fail uint32 `protobuf:"varint,12,opt,name=fail,proto3" json:"fail,omitempty"`
|
||||||
|
// List of storage node public keys that passed at least one PDP
|
||||||
|
PassNodes [][]byte `protobuf:"bytes,13,rep,name=pass_nodes,json=passNodes,proto3" json:"pass_nodes,omitempty"`
|
||||||
|
// List of storage node public keys that failed at least one PDP
|
||||||
|
FailNodes [][]byte `protobuf:"bytes,14,rep,name=fail_nodes,json=failNodes,proto3" json:"fail_nodes,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) Reset() {
|
||||||
|
*x = DataAuditResult{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_audit_grpc_types_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*DataAuditResult) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_audit_grpc_types_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use DataAuditResult.ProtoReflect.Descriptor instead.
|
||||||
|
func (*DataAuditResult) Descriptor() ([]byte, []int) {
|
||||||
|
return file_audit_grpc_types_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetVersion() *grpc.Version {
|
||||||
|
if x != nil {
|
||||||
|
return x.Version
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetAuditEpoch() uint64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.AuditEpoch
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetContainerId() *grpc.ContainerID {
|
||||||
|
if x != nil {
|
||||||
|
return x.ContainerId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetPublicKey() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.PublicKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetComplete() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.Complete
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetRequests() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Requests
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetRetries() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Retries
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetPassSg() []*grpc.ObjectID {
|
||||||
|
if x != nil {
|
||||||
|
return x.PassSg
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetFailSg() []*grpc.ObjectID {
|
||||||
|
if x != nil {
|
||||||
|
return x.FailSg
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetHit() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Hit
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetMiss() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Miss
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetFail() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Fail
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetPassNodes() [][]byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.PassNodes
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DataAuditResult) GetFailNodes() [][]byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.FailNodes
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_audit_grpc_types_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_audit_grpc_types_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x16, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70,
|
||||||
|
0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73,
|
||||||
|
0x2e, 0x76, 0x32, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73, 0x2f,
|
||||||
|
0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
0x22, 0xf4, 0x03, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65,
|
||||||
|
0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
|
||||||
|
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76,
|
||||||
|
0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07,
|
||||||
|
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74,
|
||||||
|
0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x61, 0x75,
|
||||||
|
0x64, 0x69, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74,
|
||||||
|
0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
|
||||||
|
0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e,
|
||||||
|
0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x52, 0x0b, 0x63, 0x6f, 0x6e,
|
||||||
|
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c,
|
||||||
|
0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75,
|
||||||
|
0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
|
||||||
|
0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
|
||||||
|
0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
|
||||||
|
0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12,
|
||||||
|
0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d,
|
||||||
|
0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x73,
|
||||||
|
0x73, 0x5f, 0x73, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f,
|
||||||
|
0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65,
|
||||||
|
0x63, 0x74, 0x49, 0x44, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x53, 0x47, 0x12, 0x31, 0x0a, 0x07,
|
||||||
|
0x66, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x67, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e,
|
||||||
|
0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f,
|
||||||
|
0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x47, 0x12,
|
||||||
|
0x10, 0x0a, 0x03, 0x68, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x68, 0x69,
|
||||||
|
0x74, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x69, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
||||||
|
0x04, 0x6d, 0x69, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20,
|
||||||
|
0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73,
|
||||||
|
0x73, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x70,
|
||||||
|
0x61, 0x73, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c,
|
||||||
|
0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x61,
|
||||||
|
0x69, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x5e, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x2e, 0x66,
|
||||||
|
0x72, 0x6f, 0x73, 0x74, 0x66, 0x73, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x54, 0x72, 0x75, 0x65,
|
||||||
|
0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x61, 0x62, 0x2f, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66, 0x73,
|
||||||
|
0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74,
|
||||||
|
0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x61, 0x75, 0x64, 0x69, 0x74, 0xaa, 0x02, 0x19, 0x4e, 0x65,
|
||||||
|
0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x50,
|
||||||
|
0x49, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_audit_grpc_types_proto_rawDescOnce sync.Once
|
||||||
|
file_audit_grpc_types_proto_rawDescData = file_audit_grpc_types_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_audit_grpc_types_proto_rawDescGZIP() []byte {
|
||||||
|
file_audit_grpc_types_proto_rawDescOnce.Do(func() {
|
||||||
|
file_audit_grpc_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_audit_grpc_types_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_audit_grpc_types_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_audit_grpc_types_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||||
|
var file_audit_grpc_types_proto_goTypes = []interface{}{
|
||||||
|
(*DataAuditResult)(nil), // 0: neo.fs.v2.audit.DataAuditResult
|
||||||
|
(*grpc.Version)(nil), // 1: neo.fs.v2.refs.Version
|
||||||
|
(*grpc.ContainerID)(nil), // 2: neo.fs.v2.refs.ContainerID
|
||||||
|
(*grpc.ObjectID)(nil), // 3: neo.fs.v2.refs.ObjectID
|
||||||
|
}
|
||||||
|
var file_audit_grpc_types_proto_depIdxs = []int32{
|
||||||
|
1, // 0: neo.fs.v2.audit.DataAuditResult.version:type_name -> neo.fs.v2.refs.Version
|
||||||
|
2, // 1: neo.fs.v2.audit.DataAuditResult.container_id:type_name -> neo.fs.v2.refs.ContainerID
|
||||||
|
3, // 2: neo.fs.v2.audit.DataAuditResult.pass_sg:type_name -> neo.fs.v2.refs.ObjectID
|
||||||
|
3, // 3: neo.fs.v2.audit.DataAuditResult.fail_sg:type_name -> neo.fs.v2.refs.ObjectID
|
||||||
|
4, // [4:4] is the sub-list for method output_type
|
||||||
|
4, // [4:4] is the sub-list for method input_type
|
||||||
|
4, // [4:4] is the sub-list for extension type_name
|
||||||
|
4, // [4:4] is the sub-list for extension extendee
|
||||||
|
0, // [0:4] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_audit_grpc_types_proto_init() }
|
||||||
|
func file_audit_grpc_types_proto_init() {
|
||||||
|
if File_audit_grpc_types_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_audit_grpc_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*DataAuditResult); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_audit_grpc_types_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 1,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_audit_grpc_types_proto_goTypes,
|
||||||
|
DependencyIndexes: file_audit_grpc_types_proto_depIdxs,
|
||||||
|
MessageInfos: file_audit_grpc_types_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_audit_grpc_types_proto = out.File
|
||||||
|
file_audit_grpc_types_proto_rawDesc = nil
|
||||||
|
file_audit_grpc_types_proto_goTypes = nil
|
||||||
|
file_audit_grpc_types_proto_depIdxs = nil
|
||||||
|
}
|
14
audit/json.go
Normal file
14
audit/json.go
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
audit "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit/grpc"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a *DataAuditResult) MarshalJSON() ([]byte, error) {
|
||||||
|
return message.MarshalJSON(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *DataAuditResult) UnmarshalJSON(data []byte) error {
|
||||||
|
return message.UnmarshalJSON(a, data, new(audit.DataAuditResult))
|
||||||
|
}
|
88
audit/marshal.go
Normal file
88
audit/marshal.go
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
audit "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit/grpc"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
_ = iota
|
||||||
|
versionFNum
|
||||||
|
auditEpochFNum
|
||||||
|
cidFNum
|
||||||
|
pubKeyFNum
|
||||||
|
completeFNum
|
||||||
|
requestsFNum
|
||||||
|
retriesFNum
|
||||||
|
passSGFNum
|
||||||
|
failSGFNum
|
||||||
|
hitFNum
|
||||||
|
missFNum
|
||||||
|
failFNum
|
||||||
|
passNodesFNum
|
||||||
|
failNodesFNum
|
||||||
|
)
|
||||||
|
|
||||||
|
// StableMarshal marshals unified DataAuditResult structure into a protobuf
|
||||||
|
// binary format without field order shuffle.
|
||||||
|
func (a *DataAuditResult) StableMarshal(buf []byte) []byte {
|
||||||
|
if a == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, a.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset int
|
||||||
|
|
||||||
|
offset += proto.NestedStructureMarshal(versionFNum, buf[offset:], a.version)
|
||||||
|
offset += proto.Fixed64Marshal(auditEpochFNum, buf[offset:], a.auditEpoch)
|
||||||
|
offset += proto.NestedStructureMarshal(cidFNum, buf[offset:], a.cid)
|
||||||
|
offset += proto.BytesMarshal(pubKeyFNum, buf[offset:], a.pubKey)
|
||||||
|
offset += proto.BoolMarshal(completeFNum, buf[offset:], a.complete)
|
||||||
|
offset += proto.UInt32Marshal(requestsFNum, buf[offset:], a.requests)
|
||||||
|
offset += proto.UInt32Marshal(retriesFNum, buf[offset:], a.retries)
|
||||||
|
offset += refs.ObjectIDNestedListMarshal(passSGFNum, buf[offset:], a.passSG)
|
||||||
|
offset += refs.ObjectIDNestedListMarshal(failSGFNum, buf[offset:], a.failSG)
|
||||||
|
offset += proto.UInt32Marshal(hitFNum, buf[offset:], a.hit)
|
||||||
|
offset += proto.UInt32Marshal(missFNum, buf[offset:], a.miss)
|
||||||
|
offset += proto.UInt32Marshal(failFNum, buf[offset:], a.fail)
|
||||||
|
offset += proto.RepeatedBytesMarshal(passNodesFNum, buf[offset:], a.passNodes)
|
||||||
|
proto.RepeatedBytesMarshal(failNodesFNum, buf[offset:], a.failNodes)
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
// StableSize returns byte length of DataAuditResult structure
|
||||||
|
// marshaled by StableMarshal function.
|
||||||
|
func (a *DataAuditResult) StableSize() (size int) {
|
||||||
|
if a == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += proto.NestedStructureSize(versionFNum, a.version)
|
||||||
|
size += proto.Fixed64Size(auditEpochFNum, a.auditEpoch)
|
||||||
|
size += proto.NestedStructureSize(cidFNum, a.cid)
|
||||||
|
size += proto.BytesSize(pubKeyFNum, a.pubKey)
|
||||||
|
size += proto.BoolSize(completeFNum, a.complete)
|
||||||
|
size += proto.UInt32Size(requestsFNum, a.requests)
|
||||||
|
size += proto.UInt32Size(retriesFNum, a.retries)
|
||||||
|
size += refs.ObjectIDNestedListSize(passSGFNum, a.passSG)
|
||||||
|
size += refs.ObjectIDNestedListSize(failSGFNum, a.failSG)
|
||||||
|
size += proto.UInt32Size(hitFNum, a.hit)
|
||||||
|
size += proto.UInt32Size(missFNum, a.miss)
|
||||||
|
size += proto.UInt32Size(failFNum, a.fail)
|
||||||
|
size += proto.RepeatedBytesSize(passNodesFNum, a.passNodes)
|
||||||
|
size += proto.RepeatedBytesSize(failNodesFNum, a.failNodes)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal unmarshals DataAuditResult structure from its protobuf
|
||||||
|
// binary representation.
|
||||||
|
func (a *DataAuditResult) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(a, data, new(audit.DataAuditResult))
|
||||||
|
}
|
|
@ -1,15 +1,15 @@
|
||||||
package ape_test
|
package audit_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
apetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/test"
|
audittest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit/test"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
|
||||||
messagetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message/test"
|
messagetest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMessageConvert(t *testing.T) {
|
func TestMessageConvert(t *testing.T) {
|
||||||
messagetest.TestRPCMessage(t,
|
messagetest.TestRPCMessage(t,
|
||||||
func(empty bool) message.Message { return apetest.GenerateChainTarget(empty) },
|
func(empty bool) message.Message { return audittest.GenerateDataAuditResult(empty) },
|
||||||
)
|
)
|
||||||
}
|
}
|
29
audit/test/generate.go
Normal file
29
audit/test/generate.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
package audittest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/audit"
|
||||||
|
refstest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/test"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GenerateDataAuditResult(empty bool) *audit.DataAuditResult {
|
||||||
|
m := new(audit.DataAuditResult)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetPublicKey([]byte{1, 2, 3})
|
||||||
|
m.SetAuditEpoch(13)
|
||||||
|
m.SetHit(100)
|
||||||
|
m.SetMiss(200)
|
||||||
|
m.SetFail(300)
|
||||||
|
m.SetComplete(true)
|
||||||
|
m.SetPassNodes([][]byte{{1}, {2}})
|
||||||
|
m.SetFailNodes([][]byte{{3}, {4}})
|
||||||
|
m.SetRequests(666)
|
||||||
|
m.SetRetries(777)
|
||||||
|
m.SetVersion(refstest.GenerateVersion(false))
|
||||||
|
m.SetContainerID(refstest.GenerateContainerID(false))
|
||||||
|
m.SetPassSG(refstest.GenerateObjectIDs(false))
|
||||||
|
m.SetFailSG(refstest.GenerateObjectIDs(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
243
audit/types.go
Normal file
243
audit/types.go
Normal file
|
@ -0,0 +1,243 @@
|
||||||
|
package audit
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DataAuditResult is a unified structure of
|
||||||
|
// DataAuditResult message from proto definition.
|
||||||
|
type DataAuditResult struct {
|
||||||
|
version *refs.Version
|
||||||
|
|
||||||
|
auditEpoch uint64
|
||||||
|
|
||||||
|
requests, retries uint32
|
||||||
|
|
||||||
|
hit, miss, fail uint32
|
||||||
|
|
||||||
|
cid *refs.ContainerID
|
||||||
|
|
||||||
|
pubKey []byte
|
||||||
|
|
||||||
|
passSG, failSG []refs.ObjectID
|
||||||
|
|
||||||
|
failNodes, passNodes [][]byte
|
||||||
|
|
||||||
|
complete bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetVersion returns version of Data Audit structure.
|
||||||
|
func (a *DataAuditResult) GetVersion() *refs.Version {
|
||||||
|
if a != nil {
|
||||||
|
return a.version
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVersion sets version of Data Audit structure.
|
||||||
|
func (a *DataAuditResult) SetVersion(v *refs.Version) {
|
||||||
|
a.version = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAuditEpoch returns epoch number when the Data Audit was conducted.
|
||||||
|
func (a *DataAuditResult) GetAuditEpoch() uint64 {
|
||||||
|
if a != nil {
|
||||||
|
return a.auditEpoch
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAuditEpoch sets epoch number when the Data Audit was conducted.
|
||||||
|
func (a *DataAuditResult) SetAuditEpoch(v uint64) {
|
||||||
|
a.auditEpoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetContainerID returns container under audit.
|
||||||
|
func (a *DataAuditResult) GetContainerID() *refs.ContainerID {
|
||||||
|
if a != nil {
|
||||||
|
return a.cid
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerID sets container under audit.
|
||||||
|
func (a *DataAuditResult) SetContainerID(v *refs.ContainerID) {
|
||||||
|
a.cid = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPublicKey returns public key of the auditing InnerRing node in a binary format.
|
||||||
|
func (a *DataAuditResult) GetPublicKey() []byte {
|
||||||
|
if a != nil {
|
||||||
|
return a.pubKey
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPublicKey sets public key of the auditing InnerRing node in a binary format.
|
||||||
|
func (a *DataAuditResult) SetPublicKey(v []byte) {
|
||||||
|
a.pubKey = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPassSG returns list of Storage Groups that passed audit PoR stage.
|
||||||
|
func (a *DataAuditResult) GetPassSG() []refs.ObjectID {
|
||||||
|
if a != nil {
|
||||||
|
return a.passSG
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPassSG sets list of Storage Groups that passed audit PoR stage.
|
||||||
|
func (a *DataAuditResult) SetPassSG(v []refs.ObjectID) {
|
||||||
|
a.passSG = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFailSG returns list of Storage Groups that failed audit PoR stage.
|
||||||
|
func (a *DataAuditResult) GetFailSG() []refs.ObjectID {
|
||||||
|
if a != nil {
|
||||||
|
return a.failSG
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFailSG sets list of Storage Groups that failed audit PoR stage.
|
||||||
|
func (a *DataAuditResult) SetFailSG(v []refs.ObjectID) {
|
||||||
|
a.failSG = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRequests returns number of requests made by PoR audit check to get
|
||||||
|
// all headers of the objects inside storage groups.
|
||||||
|
func (a *DataAuditResult) GetRequests() uint32 {
|
||||||
|
if a != nil {
|
||||||
|
return a.requests
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRequests sets number of requests made by PoR audit check to get
|
||||||
|
// all headers of the objects inside storage groups.
|
||||||
|
func (a *DataAuditResult) SetRequests(v uint32) {
|
||||||
|
a.requests = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRetries returns number of retries made by PoR audit check to get
|
||||||
|
// all headers of the objects inside storage groups.
|
||||||
|
func (a *DataAuditResult) GetRetries() uint32 {
|
||||||
|
if a != nil {
|
||||||
|
return a.retries
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRetries sets number of retries made by PoR audit check to get
|
||||||
|
// all headers of the objects inside storage groups.
|
||||||
|
func (a *DataAuditResult) SetRetries(v uint32) {
|
||||||
|
a.retries = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetHit returns number of sampled objects under audit placed
|
||||||
|
// in an optimal way according to the containers placement policy
|
||||||
|
// when checking PoP.
|
||||||
|
func (a *DataAuditResult) GetHit() uint32 {
|
||||||
|
if a != nil {
|
||||||
|
return a.hit
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetHit sets number of sampled objects under audit placed
|
||||||
|
// in an optimal way according to the containers placement policy
|
||||||
|
// when checking PoP.
|
||||||
|
func (a *DataAuditResult) SetHit(v uint32) {
|
||||||
|
a.hit = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMiss returns number of sampled objects under audit placed
|
||||||
|
// in suboptimal way according to the containers placement policy,
|
||||||
|
// but still at a satisfactory level when checking PoP.
|
||||||
|
func (a *DataAuditResult) GetMiss() uint32 {
|
||||||
|
if a != nil {
|
||||||
|
return a.miss
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMiss sets number of sampled objects under audit placed
|
||||||
|
// in suboptimal way according to the containers placement policy,
|
||||||
|
// but still at a satisfactory level when checking PoP.
|
||||||
|
func (a *DataAuditResult) SetMiss(v uint32) {
|
||||||
|
a.miss = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFail returns number of sampled objects under audit stored
|
||||||
|
// in a way not confirming placement policy or not found at all
|
||||||
|
// when checking PoP.
|
||||||
|
func (a *DataAuditResult) GetFail() uint32 {
|
||||||
|
if a != nil {
|
||||||
|
return a.fail
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFail sets number of sampled objects under audit stored
|
||||||
|
// in a way not confirming placement policy or not found at all
|
||||||
|
// when checking PoP.
|
||||||
|
func (a *DataAuditResult) SetFail(v uint32) {
|
||||||
|
a.fail = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPassNodes returns list of storage node public keys that
|
||||||
|
// passed at least one PDP.
|
||||||
|
func (a *DataAuditResult) GetPassNodes() [][]byte {
|
||||||
|
if a != nil {
|
||||||
|
return a.passNodes
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPassNodes sets list of storage node public keys that
|
||||||
|
// passed at least one PDP.
|
||||||
|
func (a *DataAuditResult) SetPassNodes(v [][]byte) {
|
||||||
|
a.passNodes = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFailNodes returns list of storage node public keys that
|
||||||
|
// failed at least one PDP.
|
||||||
|
func (a *DataAuditResult) GetFailNodes() [][]byte {
|
||||||
|
if a != nil {
|
||||||
|
return a.failNodes
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFailNodes sets list of storage node public keys that
|
||||||
|
// failed at least one PDP.
|
||||||
|
func (a *DataAuditResult) SetFailNodes(v [][]byte) {
|
||||||
|
a.failNodes = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetComplete returns boolean completion statement of audit result.
|
||||||
|
func (a *DataAuditResult) GetComplete() bool {
|
||||||
|
if a != nil {
|
||||||
|
return a.complete
|
||||||
|
}
|
||||||
|
|
||||||
|
return false // bool default
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetComplete sets boolean completion statement of audit result.
|
||||||
|
func (a *DataAuditResult) SetComplete(v bool) {
|
||||||
|
a.complete = v
|
||||||
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl"
|
||||||
|
aclGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc"
|
||||||
container "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc"
|
container "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap"
|
||||||
netmapGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc"
|
netmapGRPC "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc"
|
||||||
|
@ -37,26 +39,28 @@ func (a *Attribute) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func AttributesToGRPC(xs []Attribute) (res []container.Container_Attribute) {
|
func AttributesToGRPC(xs []Attribute) (res []*container.Container_Attribute) {
|
||||||
if xs != nil {
|
if xs != nil {
|
||||||
res = make([]container.Container_Attribute, 0, len(xs))
|
res = make([]*container.Container_Attribute, 0, len(xs))
|
||||||
|
|
||||||
for i := range xs {
|
for i := range xs {
|
||||||
res = append(res, *xs[i].ToGRPCMessage().(*container.Container_Attribute))
|
res = append(res, xs[i].ToGRPCMessage().(*container.Container_Attribute))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func AttributesFromGRPC(xs []container.Container_Attribute) (res []Attribute, err error) {
|
func AttributesFromGRPC(xs []*container.Container_Attribute) (res []Attribute, err error) {
|
||||||
if xs != nil {
|
if xs != nil {
|
||||||
res = make([]Attribute, len(xs))
|
res = make([]Attribute, len(xs))
|
||||||
|
|
||||||
for i := range xs {
|
for i := range xs {
|
||||||
err = res[i].FromGRPCMessage(&xs[i])
|
if xs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(xs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -762,3 +766,515 @@ func (r *ListResponse) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
|
||||||
return r.ResponseHeaders.FromMessage(v)
|
return r.ResponseHeaders.FromMessage(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.SetExtendedACLRequest_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.SetExtendedACLRequest_Body)
|
||||||
|
|
||||||
|
m.SetEacl(r.eacl.ToGRPCMessage().(*aclGRPC.EACLTable))
|
||||||
|
m.SetSignature(toSignatureRFC6979(r.sig))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.SetExtendedACLRequest_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
eacl := v.GetEacl()
|
||||||
|
if eacl == nil {
|
||||||
|
r.eacl = nil
|
||||||
|
} else {
|
||||||
|
if r.eacl == nil {
|
||||||
|
r.eacl = new(acl.Table)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.eacl.FromGRPCMessage(eacl)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sig := v.GetSignature()
|
||||||
|
if sig == nil {
|
||||||
|
r.sig = nil
|
||||||
|
} else {
|
||||||
|
if r.sig == nil {
|
||||||
|
r.sig = new(refs.Signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.sig.SetKey(sig.GetKey())
|
||||||
|
r.sig.SetSign(sig.GetSign())
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequest) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.SetExtendedACLRequest
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.SetExtendedACLRequest)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.SetExtendedACLRequest_Body))
|
||||||
|
r.RequestHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequest) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.SetExtendedACLRequest)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(SetExtendedACLRequestBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.RequestHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponseBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.SetExtendedACLResponse_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.SetExtendedACLResponse_Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponseBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.SetExtendedACLResponse_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponse) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.SetExtendedACLResponse
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.SetExtendedACLResponse)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.SetExtendedACLResponse_Body))
|
||||||
|
r.ResponseHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponse) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.SetExtendedACLResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(SetExtendedACLResponseBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.ResponseHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.GetExtendedACLRequest_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.GetExtendedACLRequest_Body)
|
||||||
|
|
||||||
|
m.SetContainerId(r.cid.ToGRPCMessage().(*refsGRPC.ContainerID))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.GetExtendedACLRequest_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
cid := v.GetContainerId()
|
||||||
|
if cid == nil {
|
||||||
|
r.cid = nil
|
||||||
|
} else {
|
||||||
|
if r.cid == nil {
|
||||||
|
r.cid = new(refs.ContainerID)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.cid.FromGRPCMessage(cid)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequest) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.GetExtendedACLRequest
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.GetExtendedACLRequest)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.GetExtendedACLRequest_Body))
|
||||||
|
r.RequestHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequest) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.GetExtendedACLRequest)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(GetExtendedACLRequestBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.RequestHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.GetExtendedACLResponse_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.GetExtendedACLResponse_Body)
|
||||||
|
|
||||||
|
m.SetEacl(r.eacl.ToGRPCMessage().(*aclGRPC.EACLTable))
|
||||||
|
m.SetSignature(toSignatureRFC6979(r.sig))
|
||||||
|
m.SetSessionToken(r.token.ToGRPCMessage().(*sessionGRPC.SessionToken))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.GetExtendedACLResponse_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
eacl := v.GetEacl()
|
||||||
|
if eacl == nil {
|
||||||
|
r.eacl = nil
|
||||||
|
} else {
|
||||||
|
if r.eacl == nil {
|
||||||
|
r.eacl = new(acl.Table)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.eacl.FromGRPCMessage(eacl)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sig := v.GetSignature()
|
||||||
|
if sig == nil {
|
||||||
|
r.sig = nil
|
||||||
|
} else {
|
||||||
|
if r.sig == nil {
|
||||||
|
r.sig = new(refs.Signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.sig.SetKey(sig.GetKey())
|
||||||
|
r.sig.SetSign(sig.GetSign())
|
||||||
|
}
|
||||||
|
|
||||||
|
token := v.GetSessionToken()
|
||||||
|
if token == nil {
|
||||||
|
r.token = nil
|
||||||
|
} else {
|
||||||
|
if r.token == nil {
|
||||||
|
r.token = new(session.Token)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.token.FromGRPCMessage(token)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponse) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.GetExtendedACLResponse
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.GetExtendedACLResponse)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.GetExtendedACLResponse_Body))
|
||||||
|
r.ResponseHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponse) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.GetExtendedACLResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(GetExtendedACLResponseBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.ResponseHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.AnnounceUsedSpaceRequest_Body_Announcement
|
||||||
|
|
||||||
|
if a != nil {
|
||||||
|
m = new(container.AnnounceUsedSpaceRequest_Body_Announcement)
|
||||||
|
|
||||||
|
m.SetContainerId(a.cid.ToGRPCMessage().(*refsGRPC.ContainerID))
|
||||||
|
m.SetEpoch(a.epoch)
|
||||||
|
m.SetUsedSpace(a.usedSpace)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.AnnounceUsedSpaceRequest_Body_Announcement)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
cid := v.GetContainerId()
|
||||||
|
if cid == nil {
|
||||||
|
a.cid = nil
|
||||||
|
} else {
|
||||||
|
if a.cid == nil {
|
||||||
|
a.cid = new(refs.ContainerID)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.cid.FromGRPCMessage(cid)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.epoch = v.GetEpoch()
|
||||||
|
a.usedSpace = v.GetUsedSpace()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func UsedSpaceAnnouncementsToGRPCMessage(
|
||||||
|
ids []UsedSpaceAnnouncement,
|
||||||
|
) (res []*container.AnnounceUsedSpaceRequest_Body_Announcement) {
|
||||||
|
if ids != nil {
|
||||||
|
res = make([]*container.AnnounceUsedSpaceRequest_Body_Announcement, 0, len(ids))
|
||||||
|
|
||||||
|
for i := range ids {
|
||||||
|
res = append(res, ids[i].ToGRPCMessage().(*container.AnnounceUsedSpaceRequest_Body_Announcement))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func UsedSpaceAnnouncementssFromGRPCMessage(
|
||||||
|
asV2 []*container.AnnounceUsedSpaceRequest_Body_Announcement,
|
||||||
|
) (res []UsedSpaceAnnouncement, err error) {
|
||||||
|
if asV2 != nil {
|
||||||
|
res = make([]UsedSpaceAnnouncement, len(asV2))
|
||||||
|
|
||||||
|
for i := range asV2 {
|
||||||
|
if asV2[i] != nil {
|
||||||
|
err = res[i].FromGRPCMessage(asV2[i])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.AnnounceUsedSpaceRequest_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.AnnounceUsedSpaceRequest_Body)
|
||||||
|
|
||||||
|
m.SetAnnouncements(UsedSpaceAnnouncementsToGRPCMessage(r.announcements))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.AnnounceUsedSpaceRequest_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
r.announcements, err = UsedSpaceAnnouncementssFromGRPCMessage(v.GetAnnouncements())
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequest) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.AnnounceUsedSpaceRequest
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.AnnounceUsedSpaceRequest)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.AnnounceUsedSpaceRequest_Body))
|
||||||
|
r.RequestHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequest) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.AnnounceUsedSpaceRequest)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(AnnounceUsedSpaceRequestBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.RequestHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponseBody) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.AnnounceUsedSpaceResponse_Body
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.AnnounceUsedSpaceResponse_Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponseBody) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.AnnounceUsedSpaceResponse_Body)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponse) ToGRPCMessage() grpc.Message {
|
||||||
|
var m *container.AnnounceUsedSpaceResponse
|
||||||
|
|
||||||
|
if r != nil {
|
||||||
|
m = new(container.AnnounceUsedSpaceResponse)
|
||||||
|
|
||||||
|
m.SetBody(r.body.ToGRPCMessage().(*container.AnnounceUsedSpaceResponse_Body))
|
||||||
|
r.ResponseHeaders.ToMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponse) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
v, ok := m.(*container.AnnounceUsedSpaceResponse)
|
||||||
|
if !ok {
|
||||||
|
return message.NewUnexpectedMessageType(m, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
body := v.GetBody()
|
||||||
|
if body == nil {
|
||||||
|
r.body = nil
|
||||||
|
} else {
|
||||||
|
if r.body == nil {
|
||||||
|
r.body = new(AnnounceUsedSpaceResponseBody)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.body.FromGRPCMessage(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.ResponseHeaders.FromMessage(v)
|
||||||
|
}
|
||||||
|
|
324
container/grpc/service.go
Normal file
324
container/grpc/service.go
Normal file
|
@ -0,0 +1,324 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
acl "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc"
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetContainer sets container of the request.
|
||||||
|
func (m *PutRequest_Body) SetContainer(v *Container) {
|
||||||
|
m.Container = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the container structure.
|
||||||
|
func (m *PutRequest_Body) SetSignature(v *refs.SignatureRFC6979) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *PutRequest) SetBody(v *PutRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *PutRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *PutRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets identifier of the container.
|
||||||
|
func (m *PutResponse_Body) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *PutResponse) SetBody(v *PutResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *PutResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *PutResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets identifier of the container.
|
||||||
|
func (m *DeleteRequest_Body) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the container identifier.
|
||||||
|
func (m *DeleteRequest_Body) SetSignature(v *refs.SignatureRFC6979) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *DeleteRequest) SetBody(v *DeleteRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *DeleteRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *DeleteRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *DeleteResponse) SetBody(v *DeleteResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *DeleteResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *DeleteResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets identifier of the container.
|
||||||
|
func (m *GetRequest_Body) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *GetRequest) SetBody(v *GetRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *GetRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *GetRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainer sets the container structure.
|
||||||
|
func (m *GetResponse_Body) SetContainer(v *Container) {
|
||||||
|
m.Container = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSessionToken sets token of the session within which requested
|
||||||
|
// container was created.
|
||||||
|
func (m *GetResponse_Body) SetSessionToken(v *session.SessionToken) {
|
||||||
|
m.SessionToken = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the container structure.
|
||||||
|
func (m *GetResponse_Body) SetSignature(v *refs.SignatureRFC6979) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *GetResponse) SetBody(v *GetResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *GetResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *GetResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOwnerId sets identifier of the container owner.
|
||||||
|
func (m *ListRequest_Body) SetOwnerId(v *refs.OwnerID) {
|
||||||
|
m.OwnerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *ListRequest) SetBody(v *ListRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *ListRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *ListRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerIds sets list of the container identifiers.
|
||||||
|
func (m *ListResponse_Body) SetContainerIds(v []*refs.ContainerID) {
|
||||||
|
m.ContainerIds = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *ListResponse) SetBody(v *ListResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *ListResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *ListResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEacl sets eACL table structure.
|
||||||
|
func (m *SetExtendedACLRequest_Body) SetEacl(v *acl.EACLTable) {
|
||||||
|
m.Eacl = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the eACL table structure.
|
||||||
|
func (m *SetExtendedACLRequest_Body) SetSignature(v *refs.SignatureRFC6979) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *SetExtendedACLRequest) SetBody(v *SetExtendedACLRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *SetExtendedACLRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *SetExtendedACLRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *SetExtendedACLResponse) SetBody(v *SetExtendedACLResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *SetExtendedACLResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *SetExtendedACLResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets identifier of the container.
|
||||||
|
func (m *GetExtendedACLRequest_Body) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *GetExtendedACLRequest) SetBody(v *GetExtendedACLRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *GetExtendedACLRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *GetExtendedACLRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEacl sets eACL table structure.
|
||||||
|
func (m *GetExtendedACLResponse_Body) SetEacl(v *acl.EACLTable) {
|
||||||
|
m.Eacl = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSignature sets signature of the eACL table structure.
|
||||||
|
func (m *GetExtendedACLResponse_Body) SetSignature(v *refs.SignatureRFC6979) {
|
||||||
|
m.Signature = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSessionToken sets token of the session within which requested
|
||||||
|
// eACl table was set.
|
||||||
|
func (m *GetExtendedACLResponse_Body) SetSessionToken(v *session.SessionToken) {
|
||||||
|
m.SessionToken = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *GetExtendedACLResponse) SetBody(v *GetExtendedACLResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *GetExtendedACLResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *GetExtendedACLResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEpoch sets epoch of the size estimation.
|
||||||
|
func (m *AnnounceUsedSpaceRequest_Body_Announcement) SetEpoch(v uint64) {
|
||||||
|
m.Epoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerId sets identifier of the container.
|
||||||
|
func (m *AnnounceUsedSpaceRequest_Body_Announcement) SetContainerId(v *refs.ContainerID) {
|
||||||
|
m.ContainerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUsedSpace sets used space value of the container.
|
||||||
|
func (m *AnnounceUsedSpaceRequest_Body_Announcement) SetUsedSpace(v uint64) {
|
||||||
|
m.UsedSpace = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAnnouncements sets list of announcement for shared containers between nodes.
|
||||||
|
func (m *AnnounceUsedSpaceRequest_Body) SetAnnouncements(v []*AnnounceUsedSpaceRequest_Body_Announcement) {
|
||||||
|
m.Announcements = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *AnnounceUsedSpaceRequest) SetBody(v *AnnounceUsedSpaceRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *AnnounceUsedSpaceRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *AnnounceUsedSpaceRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *AnnounceUsedSpaceResponse) SetBody(v *AnnounceUsedSpaceResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *AnnounceUsedSpaceResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *AnnounceUsedSpaceResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
2685
container/grpc/service.pb.go
generated
Normal file
2685
container/grpc/service.pb.go
generated
Normal file
File diff suppressed because it is too large
Load diff
3157
container/grpc/service_frostfs.pb.go
generated
3157
container/grpc/service_frostfs.pb.go
generated
File diff suppressed because it is too large
Load diff
|
@ -1,159 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package container
|
|
||||||
|
|
||||||
func DoFuzzProtoPutRequest(data []byte) int {
|
|
||||||
msg := new(PutRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONPutRequest(data []byte) int {
|
|
||||||
msg := new(PutRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoPutResponse(data []byte) int {
|
|
||||||
msg := new(PutResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONPutResponse(data []byte) int {
|
|
||||||
msg := new(PutResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoDeleteRequest(data []byte) int {
|
|
||||||
msg := new(DeleteRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONDeleteRequest(data []byte) int {
|
|
||||||
msg := new(DeleteRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoDeleteResponse(data []byte) int {
|
|
||||||
msg := new(DeleteResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONDeleteResponse(data []byte) int {
|
|
||||||
msg := new(DeleteResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoGetRequest(data []byte) int {
|
|
||||||
msg := new(GetRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONGetRequest(data []byte) int {
|
|
||||||
msg := new(GetRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoGetResponse(data []byte) int {
|
|
||||||
msg := new(GetResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONGetResponse(data []byte) int {
|
|
||||||
msg := new(GetResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoListRequest(data []byte) int {
|
|
||||||
msg := new(ListRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONListRequest(data []byte) int {
|
|
||||||
msg := new(ListRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoListResponse(data []byte) int {
|
|
||||||
msg := new(ListResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONListResponse(data []byte) int {
|
|
||||||
msg := new(ListResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,91 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package container
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoPutRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoPutRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONPutRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONPutRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoPutResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoPutResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONPutResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONPutResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoDeleteRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoDeleteRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONDeleteRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONDeleteRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoDeleteResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoDeleteResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONDeleteResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONDeleteResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoGetRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoGetRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONGetRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONGetRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoGetResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoGetResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONGetResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONGetResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoListRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoListRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONListRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONListRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoListResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoListResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONListResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONListResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
179
container/grpc/service_grpc.pb.go
generated
179
container/grpc/service_grpc.pb.go
generated
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
// - protoc-gen-go-grpc v1.3.0
|
||||||
// - protoc v5.27.2
|
// - protoc v4.25.3
|
||||||
// source: container/grpc/service.proto
|
// source: container/grpc/service.proto
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
@ -19,10 +19,13 @@ import (
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
const _ = grpc.SupportPackageIsVersion7
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ContainerService_Put_FullMethodName = "/neo.fs.v2.container.ContainerService/Put"
|
ContainerService_Put_FullMethodName = "/neo.fs.v2.container.ContainerService/Put"
|
||||||
ContainerService_Delete_FullMethodName = "/neo.fs.v2.container.ContainerService/Delete"
|
ContainerService_Delete_FullMethodName = "/neo.fs.v2.container.ContainerService/Delete"
|
||||||
ContainerService_Get_FullMethodName = "/neo.fs.v2.container.ContainerService/Get"
|
ContainerService_Get_FullMethodName = "/neo.fs.v2.container.ContainerService/Get"
|
||||||
ContainerService_List_FullMethodName = "/neo.fs.v2.container.ContainerService/List"
|
ContainerService_List_FullMethodName = "/neo.fs.v2.container.ContainerService/List"
|
||||||
|
ContainerService_SetExtendedACL_FullMethodName = "/neo.fs.v2.container.ContainerService/SetExtendedACL"
|
||||||
|
ContainerService_GetExtendedACL_FullMethodName = "/neo.fs.v2.container.ContainerService/GetExtendedACL"
|
||||||
|
ContainerService_AnnounceUsedSpace_FullMethodName = "/neo.fs.v2.container.ContainerService/AnnounceUsedSpace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContainerServiceClient is the client API for ContainerService service.
|
// ContainerServiceClient is the client API for ContainerService service.
|
||||||
|
@ -73,6 +76,38 @@ type ContainerServiceClient interface {
|
||||||
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
// container list access denied.
|
// container list access denied.
|
||||||
List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
|
List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
|
||||||
|
// Invokes 'SetEACL' method of 'Container` smart contract and returns response
|
||||||
|
// immediately. After one more block in sidechain, changes in an Extended ACL
|
||||||
|
// are added into smart contract storage.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// request to save container eACL has been sent to the sidechain;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON);
|
||||||
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
|
// set container eACL access denied.
|
||||||
|
SetExtendedACL(ctx context.Context, in *SetExtendedACLRequest, opts ...grpc.CallOption) (*SetExtendedACLResponse, error)
|
||||||
|
// Returns Extended ACL table and signature from `Container` smart contract
|
||||||
|
// storage.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// container eACL has been successfully read;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON);
|
||||||
|
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
||||||
|
// container not found;
|
||||||
|
// - **EACL_NOT_FOUND** (3073, SECTION_CONTAINER): \
|
||||||
|
// eACL table not found;
|
||||||
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
|
// access to container eACL is denied.
|
||||||
|
GetExtendedACL(ctx context.Context, in *GetExtendedACLRequest, opts ...grpc.CallOption) (*GetExtendedACLResponse, error)
|
||||||
|
// Announces the space values used by the container for P2P synchronization.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// estimation of used space has been successfully announced;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
|
AnnounceUsedSpace(ctx context.Context, in *AnnounceUsedSpaceRequest, opts ...grpc.CallOption) (*AnnounceUsedSpaceResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type containerServiceClient struct {
|
type containerServiceClient struct {
|
||||||
|
@ -119,6 +154,33 @@ func (c *containerServiceClient) List(ctx context.Context, in *ListRequest, opts
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *containerServiceClient) SetExtendedACL(ctx context.Context, in *SetExtendedACLRequest, opts ...grpc.CallOption) (*SetExtendedACLResponse, error) {
|
||||||
|
out := new(SetExtendedACLResponse)
|
||||||
|
err := c.cc.Invoke(ctx, ContainerService_SetExtendedACL_FullMethodName, in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *containerServiceClient) GetExtendedACL(ctx context.Context, in *GetExtendedACLRequest, opts ...grpc.CallOption) (*GetExtendedACLResponse, error) {
|
||||||
|
out := new(GetExtendedACLResponse)
|
||||||
|
err := c.cc.Invoke(ctx, ContainerService_GetExtendedACL_FullMethodName, in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *containerServiceClient) AnnounceUsedSpace(ctx context.Context, in *AnnounceUsedSpaceRequest, opts ...grpc.CallOption) (*AnnounceUsedSpaceResponse, error) {
|
||||||
|
out := new(AnnounceUsedSpaceResponse)
|
||||||
|
err := c.cc.Invoke(ctx, ContainerService_AnnounceUsedSpace_FullMethodName, in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ContainerServiceServer is the server API for ContainerService service.
|
// ContainerServiceServer is the server API for ContainerService service.
|
||||||
// All implementations should embed UnimplementedContainerServiceServer
|
// All implementations should embed UnimplementedContainerServiceServer
|
||||||
// for forward compatibility
|
// for forward compatibility
|
||||||
|
@ -167,6 +229,38 @@ type ContainerServiceServer interface {
|
||||||
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
// container list access denied.
|
// container list access denied.
|
||||||
List(context.Context, *ListRequest) (*ListResponse, error)
|
List(context.Context, *ListRequest) (*ListResponse, error)
|
||||||
|
// Invokes 'SetEACL' method of 'Container` smart contract and returns response
|
||||||
|
// immediately. After one more block in sidechain, changes in an Extended ACL
|
||||||
|
// are added into smart contract storage.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// request to save container eACL has been sent to the sidechain;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON);
|
||||||
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
|
// set container eACL access denied.
|
||||||
|
SetExtendedACL(context.Context, *SetExtendedACLRequest) (*SetExtendedACLResponse, error)
|
||||||
|
// Returns Extended ACL table and signature from `Container` smart contract
|
||||||
|
// storage.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// container eACL has been successfully read;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON);
|
||||||
|
// - **CONTAINER_NOT_FOUND** (3072, SECTION_CONTAINER): \
|
||||||
|
// container not found;
|
||||||
|
// - **EACL_NOT_FOUND** (3073, SECTION_CONTAINER): \
|
||||||
|
// eACL table not found;
|
||||||
|
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
|
||||||
|
// access to container eACL is denied.
|
||||||
|
GetExtendedACL(context.Context, *GetExtendedACLRequest) (*GetExtendedACLResponse, error)
|
||||||
|
// Announces the space values used by the container for P2P synchronization.
|
||||||
|
//
|
||||||
|
// Statuses:
|
||||||
|
// - **OK** (0, SECTION_SUCCESS): \
|
||||||
|
// estimation of used space has been successfully announced;
|
||||||
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
|
AnnounceUsedSpace(context.Context, *AnnounceUsedSpaceRequest) (*AnnounceUsedSpaceResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnimplementedContainerServiceServer should be embedded to have forward compatible implementations.
|
// UnimplementedContainerServiceServer should be embedded to have forward compatible implementations.
|
||||||
|
@ -185,6 +279,15 @@ func (UnimplementedContainerServiceServer) Get(context.Context, *GetRequest) (*G
|
||||||
func (UnimplementedContainerServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) {
|
func (UnimplementedContainerServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedContainerServiceServer) SetExtendedACL(context.Context, *SetExtendedACLRequest) (*SetExtendedACLResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method SetExtendedACL not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedContainerServiceServer) GetExtendedACL(context.Context, *GetExtendedACLRequest) (*GetExtendedACLResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method GetExtendedACL not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedContainerServiceServer) AnnounceUsedSpace(context.Context, *AnnounceUsedSpaceRequest) (*AnnounceUsedSpaceResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method AnnounceUsedSpace not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
// UnsafeContainerServiceServer may be embedded to opt out of forward compatibility for this service.
|
// UnsafeContainerServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||||
// Use of this interface is not recommended, as added methods to ContainerServiceServer will
|
// Use of this interface is not recommended, as added methods to ContainerServiceServer will
|
||||||
|
@ -269,6 +372,60 @@ func _ContainerService_List_Handler(srv interface{}, ctx context.Context, dec fu
|
||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _ContainerService_SetExtendedACL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(SetExtendedACLRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ContainerServiceServer).SetExtendedACL(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ContainerService_SetExtendedACL_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ContainerServiceServer).SetExtendedACL(ctx, req.(*SetExtendedACLRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ContainerService_GetExtendedACL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(GetExtendedACLRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ContainerServiceServer).GetExtendedACL(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ContainerService_GetExtendedACL_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ContainerServiceServer).GetExtendedACL(ctx, req.(*GetExtendedACLRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ContainerService_AnnounceUsedSpace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(AnnounceUsedSpaceRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ContainerServiceServer).AnnounceUsedSpace(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ContainerService_AnnounceUsedSpace_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ContainerServiceServer).AnnounceUsedSpace(ctx, req.(*AnnounceUsedSpaceRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
// ContainerService_ServiceDesc is the grpc.ServiceDesc for ContainerService service.
|
// ContainerService_ServiceDesc is the grpc.ServiceDesc for ContainerService service.
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
// and not to be introspected or modified (even as a copy)
|
// and not to be introspected or modified (even as a copy)
|
||||||
|
@ -292,6 +449,18 @@ var ContainerService_ServiceDesc = grpc.ServiceDesc{
|
||||||
MethodName: "List",
|
MethodName: "List",
|
||||||
Handler: _ContainerService_List_Handler,
|
Handler: _ContainerService_List_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "SetExtendedACL",
|
||||||
|
Handler: _ContainerService_SetExtendedACL_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetExtendedACL",
|
||||||
|
Handler: _ContainerService_GetExtendedACL_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "AnnounceUsedSpace",
|
||||||
|
Handler: _ContainerService_AnnounceUsedSpace_Handler,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Streams: []grpc.StreamDesc{},
|
Streams: []grpc.StreamDesc{},
|
||||||
Metadata: "container/grpc/service.proto",
|
Metadata: "container/grpc/service.proto",
|
||||||
|
|
46
container/grpc/types.go
Normal file
46
container/grpc/types.go
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
netmap "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc"
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetKey sets key to the container attribute.
|
||||||
|
func (m *Container_Attribute) SetKey(v string) {
|
||||||
|
m.Key = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue sets value of the container attribute.
|
||||||
|
func (m *Container_Attribute) SetValue(v string) {
|
||||||
|
m.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOwnerId sets identifier of the container owner,
|
||||||
|
func (m *Container) SetOwnerId(v *refs.OwnerID) {
|
||||||
|
m.OwnerId = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNonce sets nonce of the container structure.
|
||||||
|
func (m *Container) SetNonce(v []byte) {
|
||||||
|
m.Nonce = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBasicAcl sets basic ACL of the container.
|
||||||
|
func (m *Container) SetBasicAcl(v uint32) {
|
||||||
|
m.BasicAcl = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAttributes sets list of the container attributes.
|
||||||
|
func (m *Container) SetAttributes(v []*Container_Attribute) {
|
||||||
|
m.Attributes = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPlacementPolicy sets placement policy of the container.
|
||||||
|
func (m *Container) SetPlacementPolicy(v *netmap.PlacementPolicy) {
|
||||||
|
m.PlacementPolicy = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVersion sets version of the container.
|
||||||
|
func (m *Container) SetVersion(v *refs.Version) {
|
||||||
|
m.Version = v
|
||||||
|
}
|
337
container/grpc/types.pb.go
generated
Normal file
337
container/grpc/types.pb.go
generated
Normal file
|
@ -0,0 +1,337 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.33.0
|
||||||
|
// protoc v4.25.3
|
||||||
|
// source: container/grpc/types.proto
|
||||||
|
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
grpc1 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc"
|
||||||
|
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Container is a structure that defines object placement behaviour. Objects can
|
||||||
|
// be stored only within containers. They define placement rule, attributes and
|
||||||
|
// access control information. An ID of a container is a 32 byte long SHA256
|
||||||
|
// hash of stable-marshalled container message.
|
||||||
|
type Container struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Container format version. Effectively, the version of API library used to
|
||||||
|
// create the container.
|
||||||
|
Version *grpc.Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
||||||
|
// Identifier of the container owner
|
||||||
|
OwnerId *grpc.OwnerID `protobuf:"bytes,2,opt,name=owner_id,json=ownerID,proto3" json:"owner_id,omitempty"`
|
||||||
|
// Nonce is a 16 byte UUIDv4, used to avoid collisions of `ContainerID`s
|
||||||
|
Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
|
||||||
|
// `BasicACL` contains access control rules for the owner, system and others
|
||||||
|
// groups, as well as permission bits for `BearerToken` and `Extended ACL`
|
||||||
|
BasicAcl uint32 `protobuf:"varint,4,opt,name=basic_acl,json=basicACL,proto3" json:"basic_acl,omitempty"`
|
||||||
|
// Attributes represent immutable container's meta data
|
||||||
|
Attributes []*Container_Attribute `protobuf:"bytes,5,rep,name=attributes,proto3" json:"attributes,omitempty"`
|
||||||
|
// Placement policy for the object inside the container
|
||||||
|
PlacementPolicy *grpc1.PlacementPolicy `protobuf:"bytes,6,opt,name=placement_policy,json=placementPolicy,proto3" json:"placement_policy,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) Reset() {
|
||||||
|
*x = Container{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_container_grpc_types_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Container) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Container) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_container_grpc_types_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Container.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Container) Descriptor() ([]byte, []int) {
|
||||||
|
return file_container_grpc_types_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetVersion() *grpc.Version {
|
||||||
|
if x != nil {
|
||||||
|
return x.Version
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetOwnerId() *grpc.OwnerID {
|
||||||
|
if x != nil {
|
||||||
|
return x.OwnerId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetNonce() []byte {
|
||||||
|
if x != nil {
|
||||||
|
return x.Nonce
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetBasicAcl() uint32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.BasicAcl
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetAttributes() []*Container_Attribute {
|
||||||
|
if x != nil {
|
||||||
|
return x.Attributes
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container) GetPlacementPolicy() *grpc1.PlacementPolicy {
|
||||||
|
if x != nil {
|
||||||
|
return x.PlacementPolicy
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// `Attribute` is a user-defined Key-Value metadata pair attached to the
|
||||||
|
// container. Container attributes are immutable. They are set at the moment
|
||||||
|
// of container creation and can never be added or updated.
|
||||||
|
//
|
||||||
|
// Key name must be a container-unique valid UTF-8 string. Value can't be
|
||||||
|
// empty. Containers with duplicated attribute names or attributes with empty
|
||||||
|
// values will be considered invalid.
|
||||||
|
//
|
||||||
|
// There are some "well-known" attributes affecting system behaviour:
|
||||||
|
//
|
||||||
|
// - [ __SYSTEM__NAME ] \
|
||||||
|
// (`__NEOFS__NAME` is deprecated) \
|
||||||
|
// String of a human-friendly container name registered as a domain in
|
||||||
|
// NNS contract.
|
||||||
|
// - [ __SYSTEM__ZONE ] \
|
||||||
|
// (`__NEOFS__ZONE` is deprecated) \
|
||||||
|
// String of a zone for `__SYSTEM__NAME` (`__NEOFS__NAME` is deprecated).
|
||||||
|
// Used as a TLD of a domain name in NNS contract. If no zone is specified,
|
||||||
|
// use default zone: `container`.
|
||||||
|
// - [ __SYSTEM__DISABLE_HOMOMORPHIC_HASHING ] \
|
||||||
|
// (`__NEOFS__DISABLE_HOMOMORPHIC_HASHING` is deprecated) \
|
||||||
|
// Disables homomorphic hashing for the container if the value equals "true"
|
||||||
|
// string. Any other values are interpreted as missing attribute. Container
|
||||||
|
// could be accepted in a NeoFS network only if the global network hashing
|
||||||
|
// configuration value corresponds with that attribute's value. After
|
||||||
|
// container inclusion, network setting is ignored.
|
||||||
|
//
|
||||||
|
// And some well-known attributes used by applications only:
|
||||||
|
//
|
||||||
|
// - Name \
|
||||||
|
// Human-friendly name
|
||||||
|
// - Timestamp \
|
||||||
|
// User-defined local time of container creation in Unix Timestamp format
|
||||||
|
type Container_Attribute struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Attribute name key
|
||||||
|
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
|
||||||
|
// Attribute value
|
||||||
|
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container_Attribute) Reset() {
|
||||||
|
*x = Container_Attribute{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_container_grpc_types_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container_Attribute) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Container_Attribute) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Container_Attribute) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_container_grpc_types_proto_msgTypes[1]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Container_Attribute.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Container_Attribute) Descriptor() ([]byte, []int) {
|
||||||
|
return file_container_grpc_types_proto_rawDescGZIP(), []int{0, 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container_Attribute) GetKey() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Key
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Container_Attribute) GetValue() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_container_grpc_types_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_container_grpc_types_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63,
|
||||||
|
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x6e, 0x65,
|
||||||
|
0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
|
||||||
|
0x72, 0x1a, 0x17, 0x6e, 0x65, 0x74, 0x6d, 0x61, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74,
|
||||||
|
0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73,
|
||||||
|
0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
|
0x6f, 0x22, 0xf2, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12,
|
||||||
|
0x31, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
|
||||||
|
0x32, 0x17, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66,
|
||||||
|
0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
|
||||||
|
0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
|
||||||
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32,
|
||||||
|
0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x52, 0x07, 0x6f,
|
||||||
|
0x77, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18,
|
||||||
|
0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09,
|
||||||
|
0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
||||||
|
0x08, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x43, 0x4c, 0x12, 0x48, 0x0a, 0x0a, 0x61, 0x74, 0x74,
|
||||||
|
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
|
||||||
|
0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
|
||||||
|
0x6e, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x74,
|
||||||
|
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
|
||||||
|
0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
|
||||||
|
0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
|
||||||
|
0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e, 0x76, 0x32, 0x2e, 0x6e, 0x65, 0x74, 0x6d, 0x61, 0x70,
|
||||||
|
0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
|
||||||
|
0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,
|
||||||
|
0x79, 0x1a, 0x33, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10,
|
||||||
|
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
|
||||||
|
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
|
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x6a, 0x5a, 0x48, 0x67, 0x69, 0x74, 0x2e, 0x66, 0x72,
|
||||||
|
0x6f, 0x73, 0x74, 0x66, 0x73, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x54, 0x72, 0x75, 0x65, 0x43,
|
||||||
|
0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x61, 0x62, 0x2f, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66, 0x73, 0x2d,
|
||||||
|
0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
|
||||||
|
0x6e, 0x65, 0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
|
||||||
|
0x65, 0x72, 0xaa, 0x02, 0x1d, 0x4e, 0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f,
|
||||||
|
0x72, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
|
||||||
|
0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_container_grpc_types_proto_rawDescOnce sync.Once
|
||||||
|
file_container_grpc_types_proto_rawDescData = file_container_grpc_types_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_container_grpc_types_proto_rawDescGZIP() []byte {
|
||||||
|
file_container_grpc_types_proto_rawDescOnce.Do(func() {
|
||||||
|
file_container_grpc_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_container_grpc_types_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_container_grpc_types_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_container_grpc_types_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
||||||
|
var file_container_grpc_types_proto_goTypes = []interface{}{
|
||||||
|
(*Container)(nil), // 0: neo.fs.v2.container.Container
|
||||||
|
(*Container_Attribute)(nil), // 1: neo.fs.v2.container.Container.Attribute
|
||||||
|
(*grpc.Version)(nil), // 2: neo.fs.v2.refs.Version
|
||||||
|
(*grpc.OwnerID)(nil), // 3: neo.fs.v2.refs.OwnerID
|
||||||
|
(*grpc1.PlacementPolicy)(nil), // 4: neo.fs.v2.netmap.PlacementPolicy
|
||||||
|
}
|
||||||
|
var file_container_grpc_types_proto_depIdxs = []int32{
|
||||||
|
2, // 0: neo.fs.v2.container.Container.version:type_name -> neo.fs.v2.refs.Version
|
||||||
|
3, // 1: neo.fs.v2.container.Container.owner_id:type_name -> neo.fs.v2.refs.OwnerID
|
||||||
|
1, // 2: neo.fs.v2.container.Container.attributes:type_name -> neo.fs.v2.container.Container.Attribute
|
||||||
|
4, // 3: neo.fs.v2.container.Container.placement_policy:type_name -> neo.fs.v2.netmap.PlacementPolicy
|
||||||
|
4, // [4:4] is the sub-list for method output_type
|
||||||
|
4, // [4:4] is the sub-list for method input_type
|
||||||
|
4, // [4:4] is the sub-list for extension type_name
|
||||||
|
4, // [4:4] is the sub-list for extension extendee
|
||||||
|
0, // [0:4] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_container_grpc_types_proto_init() }
|
||||||
|
func file_container_grpc_types_proto_init() {
|
||||||
|
if File_container_grpc_types_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_container_grpc_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Container); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_container_grpc_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Container_Attribute); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_container_grpc_types_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 2,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_container_grpc_types_proto_goTypes,
|
||||||
|
DependencyIndexes: file_container_grpc_types_proto_depIdxs,
|
||||||
|
MessageInfos: file_container_grpc_types_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_container_grpc_types_proto = out.File
|
||||||
|
file_container_grpc_types_proto_rawDesc = nil
|
||||||
|
file_container_grpc_types_proto_goTypes = nil
|
||||||
|
file_container_grpc_types_proto_depIdxs = nil
|
||||||
|
}
|
554
container/grpc/types_frostfs.pb.go
generated
554
container/grpc/types_frostfs.pb.go
generated
|
@ -1,554 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package container
|
|
||||||
|
|
||||||
import (
|
|
||||||
json "encoding/json"
|
|
||||||
fmt "fmt"
|
|
||||||
grpc1 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc"
|
|
||||||
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
|
||||||
pool "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
|
|
||||||
proto "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
encoding "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/encoding"
|
|
||||||
easyproto "github.com/VictoriaMetrics/easyproto"
|
|
||||||
jlexer "github.com/mailru/easyjson/jlexer"
|
|
||||||
jwriter "github.com/mailru/easyjson/jwriter"
|
|
||||||
strconv "strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Container_Attribute struct {
|
|
||||||
Key string `json:"key"`
|
|
||||||
Value string `json:"value"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*Container_Attribute)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*Container_Attribute)(nil)
|
|
||||||
_ json.Marshaler = (*Container_Attribute)(nil)
|
|
||||||
_ json.Unmarshaler = (*Container_Attribute)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *Container_Attribute) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.StringSize(1, x.Key)
|
|
||||||
size += proto.StringSize(2, x.Value)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *Container_Attribute) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Container_Attribute) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if len(x.Key) != 0 {
|
|
||||||
mm.AppendString(1, x.Key)
|
|
||||||
}
|
|
||||||
if len(x.Value) != 0 {
|
|
||||||
mm.AppendString(2, x.Value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *Container_Attribute) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "Container_Attribute")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Key
|
|
||||||
data, ok := fc.String()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Key")
|
|
||||||
}
|
|
||||||
x.Key = data
|
|
||||||
case 2: // Value
|
|
||||||
data, ok := fc.String()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Value")
|
|
||||||
}
|
|
||||||
x.Value = data
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) GetKey() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Key
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) SetKey(v string) {
|
|
||||||
x.Key = v
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) GetValue() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Value
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) SetValue(v string) {
|
|
||||||
x.Value = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *Container_Attribute) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"key\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.String(x.Key)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"value\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.String(x.Value)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *Container_Attribute) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *Container_Attribute) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "key":
|
|
||||||
{
|
|
||||||
var f string
|
|
||||||
f = in.String()
|
|
||||||
x.Key = f
|
|
||||||
}
|
|
||||||
case "value":
|
|
||||||
{
|
|
||||||
var f string
|
|
||||||
f = in.String()
|
|
||||||
x.Value = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Container struct {
|
|
||||||
Version *grpc.Version `json:"version"`
|
|
||||||
OwnerId *grpc.OwnerID `json:"ownerID"`
|
|
||||||
Nonce []byte `json:"nonce"`
|
|
||||||
BasicAcl uint32 `json:"basicACL"`
|
|
||||||
Attributes []Container_Attribute `json:"attributes"`
|
|
||||||
PlacementPolicy *grpc1.PlacementPolicy `json:"placementPolicy"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*Container)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*Container)(nil)
|
|
||||||
_ json.Marshaler = (*Container)(nil)
|
|
||||||
_ json.Unmarshaler = (*Container)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *Container) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(1, x.Version)
|
|
||||||
size += proto.NestedStructureSize(2, x.OwnerId)
|
|
||||||
size += proto.BytesSize(3, x.Nonce)
|
|
||||||
size += proto.UInt32Size(4, x.BasicAcl)
|
|
||||||
for i := range x.Attributes {
|
|
||||||
size += proto.NestedStructureSizeUnchecked(5, &x.Attributes[i])
|
|
||||||
}
|
|
||||||
size += proto.NestedStructureSize(6, x.PlacementPolicy)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *Container) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Container) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if x.Version != nil {
|
|
||||||
x.Version.EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
if x.OwnerId != nil {
|
|
||||||
x.OwnerId.EmitProtobuf(mm.AppendMessage(2))
|
|
||||||
}
|
|
||||||
if len(x.Nonce) != 0 {
|
|
||||||
mm.AppendBytes(3, x.Nonce)
|
|
||||||
}
|
|
||||||
if x.BasicAcl != 0 {
|
|
||||||
mm.AppendUint32(4, x.BasicAcl)
|
|
||||||
}
|
|
||||||
for i := range x.Attributes {
|
|
||||||
x.Attributes[i].EmitProtobuf(mm.AppendMessage(5))
|
|
||||||
}
|
|
||||||
if x.PlacementPolicy != nil {
|
|
||||||
x.PlacementPolicy.EmitProtobuf(mm.AppendMessage(6))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *Container) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "Container")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Version
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Version")
|
|
||||||
}
|
|
||||||
x.Version = new(grpc.Version)
|
|
||||||
if err := x.Version.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 2: // OwnerId
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "OwnerId")
|
|
||||||
}
|
|
||||||
x.OwnerId = new(grpc.OwnerID)
|
|
||||||
if err := x.OwnerId.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 3: // Nonce
|
|
||||||
data, ok := fc.Bytes()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Nonce")
|
|
||||||
}
|
|
||||||
x.Nonce = data
|
|
||||||
case 4: // BasicAcl
|
|
||||||
data, ok := fc.Uint32()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "BasicAcl")
|
|
||||||
}
|
|
||||||
x.BasicAcl = data
|
|
||||||
case 5: // Attributes
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Attributes")
|
|
||||||
}
|
|
||||||
x.Attributes = append(x.Attributes, Container_Attribute{})
|
|
||||||
ff := &x.Attributes[len(x.Attributes)-1]
|
|
||||||
if err := ff.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
case 6: // PlacementPolicy
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "PlacementPolicy")
|
|
||||||
}
|
|
||||||
x.PlacementPolicy = new(grpc1.PlacementPolicy)
|
|
||||||
if err := x.PlacementPolicy.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) GetVersion() *grpc.Version {
|
|
||||||
if x != nil {
|
|
||||||
return x.Version
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) SetVersion(v *grpc.Version) {
|
|
||||||
x.Version = v
|
|
||||||
}
|
|
||||||
func (x *Container) GetOwnerId() *grpc.OwnerID {
|
|
||||||
if x != nil {
|
|
||||||
return x.OwnerId
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) SetOwnerId(v *grpc.OwnerID) {
|
|
||||||
x.OwnerId = v
|
|
||||||
}
|
|
||||||
func (x *Container) GetNonce() []byte {
|
|
||||||
if x != nil {
|
|
||||||
return x.Nonce
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) SetNonce(v []byte) {
|
|
||||||
x.Nonce = v
|
|
||||||
}
|
|
||||||
func (x *Container) GetBasicAcl() uint32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.BasicAcl
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
func (x *Container) SetBasicAcl(v uint32) {
|
|
||||||
x.BasicAcl = v
|
|
||||||
}
|
|
||||||
func (x *Container) GetAttributes() []Container_Attribute {
|
|
||||||
if x != nil {
|
|
||||||
return x.Attributes
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) SetAttributes(v []Container_Attribute) {
|
|
||||||
x.Attributes = v
|
|
||||||
}
|
|
||||||
func (x *Container) GetPlacementPolicy() *grpc1.PlacementPolicy {
|
|
||||||
if x != nil {
|
|
||||||
return x.PlacementPolicy
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Container) SetPlacementPolicy(v *grpc1.PlacementPolicy) {
|
|
||||||
x.PlacementPolicy = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *Container) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *Container) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"version\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.Version.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"ownerID\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.OwnerId.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"nonce\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
if x.Nonce != nil {
|
|
||||||
out.Base64Bytes(x.Nonce)
|
|
||||||
} else {
|
|
||||||
out.String("")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"basicACL\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.Uint32(x.BasicAcl)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"attributes\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.RawByte('[')
|
|
||||||
for i := range x.Attributes {
|
|
||||||
if i != 0 {
|
|
||||||
out.RawByte(',')
|
|
||||||
}
|
|
||||||
x.Attributes[i].MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte(']')
|
|
||||||
}
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"placementPolicy\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
x.PlacementPolicy.MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *Container) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *Container) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "version":
|
|
||||||
{
|
|
||||||
var f *grpc.Version
|
|
||||||
f = new(grpc.Version)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.Version = f
|
|
||||||
}
|
|
||||||
case "ownerID":
|
|
||||||
{
|
|
||||||
var f *grpc.OwnerID
|
|
||||||
f = new(grpc.OwnerID)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.OwnerId = f
|
|
||||||
}
|
|
||||||
case "nonce":
|
|
||||||
{
|
|
||||||
var f []byte
|
|
||||||
{
|
|
||||||
tmp := in.Bytes()
|
|
||||||
if len(tmp) == 0 {
|
|
||||||
tmp = nil
|
|
||||||
}
|
|
||||||
f = tmp
|
|
||||||
}
|
|
||||||
x.Nonce = f
|
|
||||||
}
|
|
||||||
case "basicACL":
|
|
||||||
{
|
|
||||||
var f uint32
|
|
||||||
r := in.JsonNumber()
|
|
||||||
n := r.String()
|
|
||||||
v, err := strconv.ParseUint(n, 10, 32)
|
|
||||||
if err != nil {
|
|
||||||
in.AddError(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
pv := uint32(v)
|
|
||||||
f = pv
|
|
||||||
x.BasicAcl = f
|
|
||||||
}
|
|
||||||
case "attributes":
|
|
||||||
{
|
|
||||||
var f Container_Attribute
|
|
||||||
var list []Container_Attribute
|
|
||||||
in.Delim('[')
|
|
||||||
for !in.IsDelim(']') {
|
|
||||||
f = Container_Attribute{}
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
list = append(list, f)
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
x.Attributes = list
|
|
||||||
in.Delim(']')
|
|
||||||
}
|
|
||||||
case "placementPolicy":
|
|
||||||
{
|
|
||||||
var f *grpc1.PlacementPolicy
|
|
||||||
f = new(grpc1.PlacementPolicy)
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
x.PlacementPolicy = f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package container
|
|
||||||
|
|
||||||
func DoFuzzProtoContainer(data []byte) int {
|
|
||||||
msg := new(Container)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONContainer(data []byte) int {
|
|
||||||
msg := new(Container)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package container
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoContainer(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoContainer(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONContainer(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONContainer(data)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -34,6 +34,21 @@ const (
|
||||||
listReqBodyOwnerField = 1
|
listReqBodyOwnerField = 1
|
||||||
|
|
||||||
listRespBodyIDsField = 1
|
listRespBodyIDsField = 1
|
||||||
|
|
||||||
|
setEACLReqBodyTableField = 1
|
||||||
|
setEACLReqBodySignatureField = 2
|
||||||
|
|
||||||
|
getEACLReqBodyIDField = 1
|
||||||
|
|
||||||
|
getEACLRespBodyTableField = 1
|
||||||
|
getEACLRespBodySignatureField = 2
|
||||||
|
getEACLRespBodyTokenField = 3
|
||||||
|
|
||||||
|
usedSpaceAnnounceEpochField = 1
|
||||||
|
usedSpaceAnnounceCIDField = 2
|
||||||
|
usedSpaceAnnounceUsedSpaceField = 3
|
||||||
|
|
||||||
|
usedSpaceReqBodyAnnouncementsField = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
func (a *Attribute) StableMarshal(buf []byte) []byte {
|
func (a *Attribute) StableMarshal(buf []byte) []byte {
|
||||||
|
@ -343,3 +358,189 @@ func (r *ListResponseBody) StableSize() (size int) {
|
||||||
func (r *ListResponseBody) Unmarshal(data []byte) error {
|
func (r *ListResponseBody) Unmarshal(data []byte) error {
|
||||||
return message.Unmarshal(r, data, new(container.ListResponse_Body))
|
return message.Unmarshal(r, data, new(container.ListResponse_Body))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) StableMarshal(buf []byte) []byte {
|
||||||
|
if r == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, r.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset int
|
||||||
|
|
||||||
|
offset += protoutil.NestedStructureMarshal(setEACLReqBodyTableField, buf[offset:], r.eacl)
|
||||||
|
protoutil.NestedStructureMarshal(setEACLReqBodySignatureField, buf[offset:], r.sig)
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) StableSize() (size int) {
|
||||||
|
if r == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += protoutil.NestedStructureSize(setEACLReqBodyTableField, r.eacl)
|
||||||
|
size += protoutil.NestedStructureSize(setEACLReqBodySignatureField, r.sig)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(r, data, new(container.SetExtendedACLRequest_Body))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponseBody) StableMarshal(_ []byte) []byte {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponseBody) StableSize() (size int) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponseBody) Unmarshal([]byte) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) StableMarshal(buf []byte) []byte {
|
||||||
|
if r == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, r.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
protoutil.NestedStructureMarshal(getEACLReqBodyIDField, buf, r.cid)
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) StableSize() (size int) {
|
||||||
|
if r == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += protoutil.NestedStructureSize(getEACLReqBodyIDField, r.cid)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(r, data, new(container.GetExtendedACLRequest_Body))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) StableMarshal(buf []byte) []byte {
|
||||||
|
if r == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, r.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset int
|
||||||
|
|
||||||
|
offset += protoutil.NestedStructureMarshal(getEACLRespBodyTableField, buf[offset:], r.eacl)
|
||||||
|
offset += protoutil.NestedStructureMarshal(getEACLRespBodySignatureField, buf[offset:], r.sig)
|
||||||
|
protoutil.NestedStructureMarshal(getEACLRespBodyTokenField, buf[offset:], r.token)
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) StableSize() (size int) {
|
||||||
|
if r == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += protoutil.NestedStructureSize(getEACLRespBodyTableField, r.eacl)
|
||||||
|
size += protoutil.NestedStructureSize(getEACLRespBodySignatureField, r.sig)
|
||||||
|
size += protoutil.NestedStructureSize(getEACLRespBodyTokenField, r.token)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(r, data, new(container.GetExtendedACLResponse_Body))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) StableMarshal(buf []byte) []byte {
|
||||||
|
if a == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, a.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset int
|
||||||
|
|
||||||
|
offset += protoutil.UInt64Marshal(usedSpaceAnnounceEpochField, buf[offset:], a.epoch)
|
||||||
|
offset += protoutil.NestedStructureMarshal(usedSpaceAnnounceCIDField, buf[offset:], a.cid)
|
||||||
|
protoutil.UInt64Marshal(usedSpaceAnnounceUsedSpaceField, buf[offset:], a.usedSpace)
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) StableSize() (size int) {
|
||||||
|
if a == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
size += protoutil.UInt64Size(usedSpaceAnnounceEpochField, a.epoch)
|
||||||
|
size += protoutil.NestedStructureSize(usedSpaceAnnounceCIDField, a.cid)
|
||||||
|
size += protoutil.UInt64Size(usedSpaceAnnounceUsedSpaceField, a.usedSpace)
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(a, data, new(container.AnnounceUsedSpaceRequest_Body_Announcement))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) StableMarshal(buf []byte) []byte {
|
||||||
|
if r == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if buf == nil {
|
||||||
|
buf = make([]byte, r.StableSize())
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset int
|
||||||
|
|
||||||
|
for i := range r.announcements {
|
||||||
|
offset += protoutil.NestedStructureMarshal(usedSpaceReqBodyAnnouncementsField, buf[offset:], &r.announcements[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) StableSize() (size int) {
|
||||||
|
if r == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range r.announcements {
|
||||||
|
size += protoutil.NestedStructureSize(usedSpaceReqBodyAnnouncementsField, &r.announcements[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) Unmarshal(data []byte) error {
|
||||||
|
return message.Unmarshal(r, data, new(container.AnnounceUsedSpaceRequest_Body))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponseBody) StableMarshal(_ []byte) []byte {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponseBody) StableSize() (size int) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponseBody) Unmarshal([]byte) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -28,9 +28,20 @@ func TestMessageConvert(t *testing.T) {
|
||||||
func(empty bool) message.Message { return containertest.GenerateListRequest(empty) },
|
func(empty bool) message.Message { return containertest.GenerateListRequest(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateListResponseBody(empty) },
|
func(empty bool) message.Message { return containertest.GenerateListResponseBody(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateListResponse(empty) },
|
func(empty bool) message.Message { return containertest.GenerateListResponse(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateSetExtendedACLRequestBody(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateSetExtendedACLRequest(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateGetRequestBody(empty) },
|
func(empty bool) message.Message { return containertest.GenerateGetRequestBody(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateGetRequest(empty) },
|
func(empty bool) message.Message { return containertest.GenerateGetRequest(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateGetResponseBody(empty) },
|
func(empty bool) message.Message { return containertest.GenerateGetResponseBody(empty) },
|
||||||
func(empty bool) message.Message { return containertest.GenerateGetResponse(empty) },
|
func(empty bool) message.Message { return containertest.GenerateGetResponse(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateGetExtendedACLRequestBody(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateGetExtendedACLRequest(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateGetExtendedACLResponseBody(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateGetExtendedACLResponse(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateUsedSpaceAnnouncement(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateAnnounceUsedSpaceRequestBody(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateAnnounceUsedSpaceRequest(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateAnnounceUsedSpaceResponseBody(empty) },
|
||||||
|
func(empty bool) message.Message { return containertest.GenerateAnnounceUsedSpaceResponse(empty) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package containertest
|
package containertest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
acltest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/test"
|
||||||
|
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
||||||
netmaptest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/test"
|
netmaptest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/test"
|
||||||
refstest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/test"
|
refstest "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/test"
|
||||||
|
@ -37,11 +36,8 @@ func GenerateContainer(empty bool) *container.Container {
|
||||||
m := new(container.Container)
|
m := new(container.Container)
|
||||||
|
|
||||||
if !empty {
|
if !empty {
|
||||||
nonce := make([]byte, 16)
|
|
||||||
_, _ = rand.Read(nonce)
|
|
||||||
|
|
||||||
m.SetBasicACL(12)
|
m.SetBasicACL(12)
|
||||||
m.SetNonce(nonce)
|
m.SetNonce([]byte{1, 2, 3})
|
||||||
m.SetOwnerID(refstest.GenerateOwnerID(false))
|
m.SetOwnerID(refstest.GenerateOwnerID(false))
|
||||||
m.SetAttributes(GenerateAttributes(false))
|
m.SetAttributes(GenerateAttributes(false))
|
||||||
m.SetPlacementPolicy(netmaptest.GeneratePlacementPolicy(false))
|
m.SetPlacementPolicy(netmaptest.GeneratePlacementPolicy(false))
|
||||||
|
@ -238,3 +234,163 @@ func GenerateListResponse(empty bool) *container.ListResponse {
|
||||||
|
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GenerateSetExtendedACLRequestBody(empty bool) *container.SetExtendedACLRequestBody {
|
||||||
|
m := new(container.SetExtendedACLRequestBody)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetEACL(acltest.GenerateTable(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetSignature(refstest.GenerateSignature(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateSetExtendedACLRequest(empty bool) *container.SetExtendedACLRequest {
|
||||||
|
m := new(container.SetExtendedACLRequest)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateSetExtendedACLRequestBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateSetExtendedACLResponseBody(_ bool) *container.SetExtendedACLResponseBody {
|
||||||
|
m := new(container.SetExtendedACLResponseBody)
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateSetExtendedACLResponse(empty bool) *container.SetExtendedACLResponse {
|
||||||
|
m := new(container.SetExtendedACLResponse)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateSetExtendedACLResponseBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateGetExtendedACLRequestBody(empty bool) *container.GetExtendedACLRequestBody {
|
||||||
|
m := new(container.GetExtendedACLRequestBody)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetContainerID(refstest.GenerateContainerID(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateGetExtendedACLRequest(empty bool) *container.GetExtendedACLRequest {
|
||||||
|
m := new(container.GetExtendedACLRequest)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateGetExtendedACLRequestBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateGetExtendedACLResponseBody(empty bool) *container.GetExtendedACLResponseBody {
|
||||||
|
m := new(container.GetExtendedACLResponseBody)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetEACL(acltest.GenerateTable(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetSignature(refstest.GenerateSignature(empty))
|
||||||
|
m.SetSessionToken(sessiontest.GenerateSessionToken(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateGetExtendedACLResponse(empty bool) *container.GetExtendedACLResponse {
|
||||||
|
m := new(container.GetExtendedACLResponse)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateGetExtendedACLResponseBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateUsedSpaceAnnouncement(empty bool) *container.UsedSpaceAnnouncement {
|
||||||
|
m := new(container.UsedSpaceAnnouncement)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetContainerID(refstest.GenerateContainerID(false))
|
||||||
|
m.SetEpoch(1)
|
||||||
|
m.SetUsedSpace(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateUsedSpaceAnnouncements(empty bool) []container.UsedSpaceAnnouncement {
|
||||||
|
var res []container.UsedSpaceAnnouncement
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
res = append(res,
|
||||||
|
*GenerateUsedSpaceAnnouncement(false),
|
||||||
|
*GenerateUsedSpaceAnnouncement(false),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateAnnounceUsedSpaceRequestBody(empty bool) *container.AnnounceUsedSpaceRequestBody {
|
||||||
|
m := new(container.AnnounceUsedSpaceRequestBody)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetAnnouncements(GenerateUsedSpaceAnnouncements(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateAnnounceUsedSpaceRequest(empty bool) *container.AnnounceUsedSpaceRequest {
|
||||||
|
m := new(container.AnnounceUsedSpaceRequest)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateAnnounceUsedSpaceRequestBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateAnnounceUsedSpaceResponseBody(_ bool) *container.AnnounceUsedSpaceResponseBody {
|
||||||
|
m := new(container.AnnounceUsedSpaceResponseBody)
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateAnnounceUsedSpaceResponse(empty bool) *container.AnnounceUsedSpaceResponse {
|
||||||
|
m := new(container.AnnounceUsedSpaceResponse)
|
||||||
|
|
||||||
|
if !empty {
|
||||||
|
m.SetBody(GenerateAnnounceUsedSpaceResponseBody(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
||||||
|
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
||||||
|
@ -109,6 +110,76 @@ type ListResponse struct {
|
||||||
session.ResponseHeaders
|
session.ResponseHeaders
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SetExtendedACLRequestBody struct {
|
||||||
|
eacl *acl.Table
|
||||||
|
|
||||||
|
sig *refs.Signature
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetExtendedACLRequest struct {
|
||||||
|
body *SetExtendedACLRequestBody
|
||||||
|
|
||||||
|
session.RequestHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetExtendedACLResponseBody struct{}
|
||||||
|
|
||||||
|
type SetExtendedACLResponse struct {
|
||||||
|
body *SetExtendedACLResponseBody
|
||||||
|
|
||||||
|
session.ResponseHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetExtendedACLRequestBody struct {
|
||||||
|
cid *refs.ContainerID
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetExtendedACLRequest struct {
|
||||||
|
body *GetExtendedACLRequestBody
|
||||||
|
|
||||||
|
session.RequestHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetExtendedACLResponseBody struct {
|
||||||
|
eacl *acl.Table
|
||||||
|
|
||||||
|
sig *refs.Signature
|
||||||
|
|
||||||
|
token *session.Token
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetExtendedACLResponse struct {
|
||||||
|
body *GetExtendedACLResponseBody
|
||||||
|
|
||||||
|
session.ResponseHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type UsedSpaceAnnouncement struct {
|
||||||
|
epoch uint64
|
||||||
|
|
||||||
|
cid *refs.ContainerID
|
||||||
|
|
||||||
|
usedSpace uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
type AnnounceUsedSpaceRequestBody struct {
|
||||||
|
announcements []UsedSpaceAnnouncement
|
||||||
|
}
|
||||||
|
|
||||||
|
type AnnounceUsedSpaceRequest struct {
|
||||||
|
body *AnnounceUsedSpaceRequestBody
|
||||||
|
|
||||||
|
session.RequestHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type AnnounceUsedSpaceResponseBody struct{}
|
||||||
|
|
||||||
|
type AnnounceUsedSpaceResponse struct {
|
||||||
|
body *AnnounceUsedSpaceResponseBody
|
||||||
|
|
||||||
|
session.ResponseHeaders
|
||||||
|
}
|
||||||
|
|
||||||
func (a *Attribute) GetKey() string {
|
func (a *Attribute) GetKey() string {
|
||||||
if a != nil {
|
if a != nil {
|
||||||
return a.key
|
return a.key
|
||||||
|
@ -444,3 +515,203 @@ func (r *ListResponse) GetBody() *ListResponseBody {
|
||||||
func (r *ListResponse) SetBody(v *ListResponseBody) {
|
func (r *ListResponse) SetBody(v *ListResponseBody) {
|
||||||
r.body = v
|
r.body = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) GetEACL() *acl.Table {
|
||||||
|
if r != nil {
|
||||||
|
return r.eacl
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) SetEACL(v *acl.Table) {
|
||||||
|
r.eacl = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) GetSignature() *refs.Signature {
|
||||||
|
if r != nil {
|
||||||
|
return r.sig
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequestBody) SetSignature(v *refs.Signature) {
|
||||||
|
// TODO: (neofs-api-go#381) avoid this hack (e.g. create refs.SignatureRFC6979 type)
|
||||||
|
v.SetScheme(0)
|
||||||
|
r.sig = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequest) GetBody() *SetExtendedACLRequestBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLRequest) SetBody(v *SetExtendedACLRequestBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponse) GetBody() *SetExtendedACLResponseBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *SetExtendedACLResponse) SetBody(v *SetExtendedACLResponseBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) GetContainerID() *refs.ContainerID {
|
||||||
|
if r != nil {
|
||||||
|
return r.cid
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequestBody) SetContainerID(v *refs.ContainerID) {
|
||||||
|
r.cid = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequest) GetBody() *GetExtendedACLRequestBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLRequest) SetBody(v *GetExtendedACLRequestBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) GetEACL() *acl.Table {
|
||||||
|
if r != nil {
|
||||||
|
return r.eacl
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) SetEACL(v *acl.Table) {
|
||||||
|
r.eacl = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) GetSignature() *refs.Signature {
|
||||||
|
if r != nil {
|
||||||
|
return r.sig
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponseBody) SetSignature(v *refs.Signature) {
|
||||||
|
// TODO: (neofs-api-go#381) avoid this hack (e.g. create refs.SignatureRFC6979 type)
|
||||||
|
v.SetScheme(0)
|
||||||
|
r.sig = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSessionToken returns token of the session within which requested
|
||||||
|
// eACL table was set.
|
||||||
|
func (r *GetExtendedACLResponseBody) GetSessionToken() *session.Token {
|
||||||
|
if r != nil {
|
||||||
|
return r.token
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSessionToken sets token of the session within which requested
|
||||||
|
// eACL table was set.
|
||||||
|
func (r *GetExtendedACLResponseBody) SetSessionToken(v *session.Token) {
|
||||||
|
r.token = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponse) GetBody() *GetExtendedACLResponseBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GetExtendedACLResponse) SetBody(v *GetExtendedACLResponseBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) GetEpoch() uint64 {
|
||||||
|
if a != nil {
|
||||||
|
return a.epoch
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) SetEpoch(v uint64) {
|
||||||
|
a.epoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) GetUsedSpace() uint64 {
|
||||||
|
if a != nil {
|
||||||
|
return a.usedSpace
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) SetUsedSpace(v uint64) {
|
||||||
|
a.usedSpace = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) GetContainerID() *refs.ContainerID {
|
||||||
|
if a != nil {
|
||||||
|
return a.cid
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *UsedSpaceAnnouncement) SetContainerID(v *refs.ContainerID) {
|
||||||
|
a.cid = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) GetAnnouncements() []UsedSpaceAnnouncement {
|
||||||
|
if r != nil {
|
||||||
|
return r.announcements
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequestBody) SetAnnouncements(v []UsedSpaceAnnouncement) {
|
||||||
|
r.announcements = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequest) GetBody() *AnnounceUsedSpaceRequestBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceRequest) SetBody(v *AnnounceUsedSpaceRequestBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponse) GetBody() *AnnounceUsedSpaceResponseBody {
|
||||||
|
if r != nil {
|
||||||
|
return r.body
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *AnnounceUsedSpaceResponse) SetBody(v *AnnounceUsedSpaceResponseBody) {
|
||||||
|
r.body = v
|
||||||
|
}
|
||||||
|
|
|
@ -35,11 +35,11 @@ Tag a release (must be signed) and push it:
|
||||||
$ git tag -s vX.Y.Z[-rc.N] && git push origin vX.Y.Z[-rc.N]
|
$ git tag -s vX.Y.Z[-rc.N] && git push origin vX.Y.Z[-rc.N]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Make a proper release
|
## Make a Github release
|
||||||
|
|
||||||
Using git.frostfs.info web interface create a new release based on just created tag
|
Using Github's web interface create a new release based on just created tag
|
||||||
with the same changes from changelog and publish it.
|
with the same changes from changelog and publish it.
|
||||||
|
|
||||||
## Close milestone
|
## Close github milestone
|
||||||
|
|
||||||
Close corresponding vX.Y.Z milestone.
|
Close corresponding vX.Y.Z github milestone.
|
||||||
|
|
20
go.mod
20
go.mod
|
@ -1,28 +1,26 @@
|
||||||
module git.frostfs.info/TrueCloudLab/frostfs-api-go/v2
|
module git.frostfs.info/TrueCloudLab/frostfs-api-go/v2
|
||||||
|
|
||||||
go 1.22
|
go 1.20
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0
|
git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0
|
||||||
github.com/VictoriaMetrics/easyproto v0.1.4
|
|
||||||
github.com/mailru/easyjson v0.7.7
|
|
||||||
github.com/stretchr/testify v1.8.3
|
github.com/stretchr/testify v1.8.3
|
||||||
golang.org/x/sync v0.7.0
|
golang.org/x/sync v0.2.0
|
||||||
google.golang.org/grpc v1.66.2
|
google.golang.org/grpc v1.55.0
|
||||||
google.golang.org/protobuf v1.34.1
|
google.golang.org/protobuf v1.33.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0 // indirect
|
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
github.com/kr/pretty v0.1.0 // indirect
|
||||||
github.com/mr-tron/base58 v1.2.0 // indirect
|
github.com/mr-tron/base58 v1.2.0 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
golang.org/x/net v0.26.0 // indirect
|
golang.org/x/net v0.10.0 // indirect
|
||||||
golang.org/x/sys v0.21.0 // indirect
|
golang.org/x/sys v0.8.0 // indirect
|
||||||
golang.org/x/text v0.16.0 // indirect
|
golang.org/x/text v0.9.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect
|
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
44
go.sum
44
go.sum
|
@ -2,22 +2,19 @@ git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0 h1:FxqFDhQYYgpe41qsIHVOcdzSV
|
||||||
git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0/go.mod h1:RUIKZATQLJ+TaYQa60X2fTDwfuhMfm8Ar60bQ5fr+vU=
|
git.frostfs.info/TrueCloudLab/frostfs-crypto v0.6.0/go.mod h1:RUIKZATQLJ+TaYQa60X2fTDwfuhMfm8Ar60bQ5fr+vU=
|
||||||
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0 h1:M2KR3iBj7WpY3hP10IevfIB9MURr4O9mwVfJ+SjT3HA=
|
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0 h1:M2KR3iBj7WpY3hP10IevfIB9MURr4O9mwVfJ+SjT3HA=
|
||||||
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0/go.mod h1:okpbKfVYf/BpejtfFTfhZqFP+sZ8rsHrP8Rr/jYPNRc=
|
git.frostfs.info/TrueCloudLab/rfc6979 v0.4.0/go.mod h1:okpbKfVYf/BpejtfFTfhZqFP+sZ8rsHrP8Rr/jYPNRc=
|
||||||
github.com/VictoriaMetrics/easyproto v0.1.4 h1:r8cNvo8o6sR4QShBXQd1bKw/VVLSQma/V2KhTBPf+Sc=
|
|
||||||
github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
|
||||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
|
||||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
||||||
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
@ -26,20 +23,23 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
|
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
|
||||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
|
||||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
|
||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
|
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||||
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
|
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
|
||||||
google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
|
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
|
||||||
google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
|
google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
|
||||||
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
|
||||||
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||||
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|
8
lock/grpc/types.go
Normal file
8
lock/grpc/types.go
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package lock
|
||||||
|
|
||||||
|
import refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
|
||||||
|
// SetMembers sets `members` field.
|
||||||
|
func (x *Lock) SetMembers(ids []*refs.ObjectID) {
|
||||||
|
x.Members = ids
|
||||||
|
}
|
160
lock/grpc/types.pb.go
generated
Normal file
160
lock/grpc/types.pb.go
generated
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.33.0
|
||||||
|
// protoc v4.25.3
|
||||||
|
// source: lock/grpc/types.proto
|
||||||
|
|
||||||
|
package lock
|
||||||
|
|
||||||
|
import (
|
||||||
|
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Lock objects protects a list of objects from being deleted. The lifetime of a
|
||||||
|
// lock object is limited similar to regular objects in
|
||||||
|
// `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated)
|
||||||
|
// attribute. Lock object MUST have expiration epoch. It is impossible to delete
|
||||||
|
// a lock object via ObjectService.Delete RPC call.
|
||||||
|
type Lock struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// List of objects to lock. Must not be empty or carry empty IDs.
|
||||||
|
// All members must be of the `REGULAR` type.
|
||||||
|
Members []*grpc.ObjectID `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Lock) Reset() {
|
||||||
|
*x = Lock{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_lock_grpc_types_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Lock) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Lock) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Lock) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_lock_grpc_types_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Lock.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Lock) Descriptor() ([]byte, []int) {
|
||||||
|
return file_lock_grpc_types_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Lock) GetMembers() []*grpc.ObjectID {
|
||||||
|
if x != nil {
|
||||||
|
return x.Members
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_lock_grpc_types_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_lock_grpc_types_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65,
|
||||||
|
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73, 0x2e,
|
||||||
|
0x76, 0x32, 0x2e, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x15, 0x72, 0x65, 0x66, 0x73, 0x2f, 0x67, 0x72,
|
||||||
|
0x70, 0x63, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a,
|
||||||
|
0x0a, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
|
||||||
|
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x65, 0x6f, 0x2e, 0x66, 0x73,
|
||||||
|
0x2e, 0x76, 0x32, 0x2e, 0x72, 0x65, 0x66, 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49,
|
||||||
|
0x44, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x5b, 0x5a, 0x3e, 0x67, 0x69,
|
||||||
|
0x74, 0x2e, 0x66, 0x72, 0x6f, 0x73, 0x74, 0x66, 0x73, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x54,
|
||||||
|
0x72, 0x75, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4c, 0x61, 0x62, 0x2f, 0x66, 0x72, 0x6f, 0x73,
|
||||||
|
0x74, 0x66, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2d, 0x67, 0x6f, 0x2f, 0x76, 0x32, 0x2f, 0x6c, 0x6f,
|
||||||
|
0x63, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x3b, 0x6c, 0x6f, 0x63, 0x6b, 0xaa, 0x02, 0x18, 0x4e,
|
||||||
|
0x65, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x41,
|
||||||
|
0x50, 0x49, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_lock_grpc_types_proto_rawDescOnce sync.Once
|
||||||
|
file_lock_grpc_types_proto_rawDescData = file_lock_grpc_types_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_lock_grpc_types_proto_rawDescGZIP() []byte {
|
||||||
|
file_lock_grpc_types_proto_rawDescOnce.Do(func() {
|
||||||
|
file_lock_grpc_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_lock_grpc_types_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_lock_grpc_types_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_lock_grpc_types_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||||
|
var file_lock_grpc_types_proto_goTypes = []interface{}{
|
||||||
|
(*Lock)(nil), // 0: neo.fs.v2.lock.Lock
|
||||||
|
(*grpc.ObjectID)(nil), // 1: neo.fs.v2.refs.ObjectID
|
||||||
|
}
|
||||||
|
var file_lock_grpc_types_proto_depIdxs = []int32{
|
||||||
|
1, // 0: neo.fs.v2.lock.Lock.members:type_name -> neo.fs.v2.refs.ObjectID
|
||||||
|
1, // [1:1] is the sub-list for method output_type
|
||||||
|
1, // [1:1] is the sub-list for method input_type
|
||||||
|
1, // [1:1] is the sub-list for extension type_name
|
||||||
|
1, // [1:1] is the sub-list for extension extendee
|
||||||
|
0, // [0:1] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_lock_grpc_types_proto_init() }
|
||||||
|
func file_lock_grpc_types_proto_init() {
|
||||||
|
if File_lock_grpc_types_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_lock_grpc_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Lock); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_lock_grpc_types_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 1,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_lock_grpc_types_proto_goTypes,
|
||||||
|
DependencyIndexes: file_lock_grpc_types_proto_depIdxs,
|
||||||
|
MessageInfos: file_lock_grpc_types_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_lock_grpc_types_proto = out.File
|
||||||
|
file_lock_grpc_types_proto_rawDesc = nil
|
||||||
|
file_lock_grpc_types_proto_goTypes = nil
|
||||||
|
file_lock_grpc_types_proto_depIdxs = nil
|
||||||
|
}
|
171
lock/grpc/types_frostfs.pb.go
generated
171
lock/grpc/types_frostfs.pb.go
generated
|
@ -1,171 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package lock
|
|
||||||
|
|
||||||
import (
|
|
||||||
json "encoding/json"
|
|
||||||
fmt "fmt"
|
|
||||||
grpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
|
||||||
pool "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
|
|
||||||
proto "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
|
|
||||||
encoding "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto/encoding"
|
|
||||||
easyproto "github.com/VictoriaMetrics/easyproto"
|
|
||||||
jlexer "github.com/mailru/easyjson/jlexer"
|
|
||||||
jwriter "github.com/mailru/easyjson/jwriter"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Lock struct {
|
|
||||||
Members []grpc.ObjectID `json:"members"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
_ encoding.ProtoMarshaler = (*Lock)(nil)
|
|
||||||
_ encoding.ProtoUnmarshaler = (*Lock)(nil)
|
|
||||||
_ json.Marshaler = (*Lock)(nil)
|
|
||||||
_ json.Unmarshaler = (*Lock)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
// StableSize returns the size of x in protobuf format.
|
|
||||||
//
|
|
||||||
// Structures with the same field values have the same binary size.
|
|
||||||
func (x *Lock) StableSize() (size int) {
|
|
||||||
if x == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
for i := range x.Members {
|
|
||||||
size += proto.NestedStructureSizeUnchecked(1, &x.Members[i])
|
|
||||||
}
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalProtobuf implements the encoding.ProtoMarshaler interface.
|
|
||||||
func (x *Lock) MarshalProtobuf(dst []byte) []byte {
|
|
||||||
m := pool.MarshalerPool.Get()
|
|
||||||
defer pool.MarshalerPool.Put(m)
|
|
||||||
x.EmitProtobuf(m.MessageMarshaler())
|
|
||||||
dst = m.Marshal(dst)
|
|
||||||
return dst
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Lock) EmitProtobuf(mm *easyproto.MessageMarshaler) {
|
|
||||||
if x == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for i := range x.Members {
|
|
||||||
x.Members[i].EmitProtobuf(mm.AppendMessage(1))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalProtobuf implements the encoding.ProtoUnmarshaler interface.
|
|
||||||
func (x *Lock) UnmarshalProtobuf(src []byte) (err error) {
|
|
||||||
var fc easyproto.FieldContext
|
|
||||||
for len(src) > 0 {
|
|
||||||
src, err = fc.NextField(src)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot read next field in %s", "Lock")
|
|
||||||
}
|
|
||||||
switch fc.FieldNum {
|
|
||||||
case 1: // Members
|
|
||||||
data, ok := fc.MessageData()
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("cannot unmarshal field %s", "Members")
|
|
||||||
}
|
|
||||||
x.Members = append(x.Members, grpc.ObjectID{})
|
|
||||||
ff := &x.Members[len(x.Members)-1]
|
|
||||||
if err := ff.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return fmt.Errorf("unmarshal: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Lock) GetMembers() []grpc.ObjectID {
|
|
||||||
if x != nil {
|
|
||||||
return x.Members
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (x *Lock) SetMembers(v []grpc.ObjectID) {
|
|
||||||
x.Members = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface.
|
|
||||||
func (x *Lock) MarshalJSON() ([]byte, error) {
|
|
||||||
w := jwriter.Writer{}
|
|
||||||
x.MarshalEasyJSON(&w)
|
|
||||||
return w.Buffer.BuildBytes(), w.Error
|
|
||||||
}
|
|
||||||
func (x *Lock) MarshalEasyJSON(out *jwriter.Writer) {
|
|
||||||
if x == nil {
|
|
||||||
out.RawString("null")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
first := true
|
|
||||||
out.RawByte('{')
|
|
||||||
{
|
|
||||||
if !first {
|
|
||||||
out.RawByte(',')
|
|
||||||
} else {
|
|
||||||
first = false
|
|
||||||
}
|
|
||||||
const prefix string = "\"members\":"
|
|
||||||
out.RawString(prefix)
|
|
||||||
out.RawByte('[')
|
|
||||||
for i := range x.Members {
|
|
||||||
if i != 0 {
|
|
||||||
out.RawByte(',')
|
|
||||||
}
|
|
||||||
x.Members[i].MarshalEasyJSON(out)
|
|
||||||
}
|
|
||||||
out.RawByte(']')
|
|
||||||
}
|
|
||||||
out.RawByte('}')
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
|
||||||
func (x *Lock) UnmarshalJSON(data []byte) error {
|
|
||||||
r := jlexer.Lexer{Data: data}
|
|
||||||
x.UnmarshalEasyJSON(&r)
|
|
||||||
return r.Error()
|
|
||||||
}
|
|
||||||
func (x *Lock) UnmarshalEasyJSON(in *jlexer.Lexer) {
|
|
||||||
isTopLevel := in.IsStart()
|
|
||||||
if in.IsNull() {
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
in.Skip()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
in.Delim('{')
|
|
||||||
for !in.IsDelim('}') {
|
|
||||||
key := in.UnsafeFieldName(false)
|
|
||||||
in.WantColon()
|
|
||||||
if in.IsNull() {
|
|
||||||
in.Skip()
|
|
||||||
in.WantComma()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
switch key {
|
|
||||||
case "members":
|
|
||||||
{
|
|
||||||
var f grpc.ObjectID
|
|
||||||
var list []grpc.ObjectID
|
|
||||||
in.Delim('[')
|
|
||||||
for !in.IsDelim(']') {
|
|
||||||
f = grpc.ObjectID{}
|
|
||||||
f.UnmarshalEasyJSON(in)
|
|
||||||
list = append(list, f)
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
x.Members = list
|
|
||||||
in.Delim(']')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in.WantComma()
|
|
||||||
}
|
|
||||||
in.Delim('}')
|
|
||||||
if isTopLevel {
|
|
||||||
in.Consumed()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package lock
|
|
||||||
|
|
||||||
func DoFuzzProtoLock(data []byte) int {
|
|
||||||
msg := new(Lock)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONLock(data []byte) int {
|
|
||||||
msg := new(Lock)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package lock
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoLock(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoLock(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONLock(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONLock(data)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -45,26 +45,28 @@ func (f *Filter) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func FiltersToGRPC(fs []Filter) (res []netmap.Filter) {
|
func FiltersToGRPC(fs []Filter) (res []*netmap.Filter) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]netmap.Filter, 0, len(fs))
|
res = make([]*netmap.Filter, 0, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
res = append(res, *fs[i].ToGRPCMessage().(*netmap.Filter))
|
res = append(res, fs[i].ToGRPCMessage().(*netmap.Filter))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func FiltersFromGRPC(fs []netmap.Filter) (res []Filter, err error) {
|
func FiltersFromGRPC(fs []*netmap.Filter) (res []Filter, err error) {
|
||||||
if fs != nil {
|
if fs != nil {
|
||||||
res = make([]Filter, len(fs))
|
res = make([]Filter, len(fs))
|
||||||
|
|
||||||
for i := range fs {
|
for i := range fs {
|
||||||
err = res[i].FromGRPCMessage(&fs[i])
|
if fs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(fs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,26 +105,28 @@ func (s *Selector) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SelectorsToGRPC(ss []Selector) (res []netmap.Selector) {
|
func SelectorsToGRPC(ss []Selector) (res []*netmap.Selector) {
|
||||||
if ss != nil {
|
if ss != nil {
|
||||||
res = make([]netmap.Selector, 0, len(ss))
|
res = make([]*netmap.Selector, 0, len(ss))
|
||||||
|
|
||||||
for i := range ss {
|
for i := range ss {
|
||||||
res = append(res, *ss[i].ToGRPCMessage().(*netmap.Selector))
|
res = append(res, ss[i].ToGRPCMessage().(*netmap.Selector))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func SelectorsFromGRPC(ss []netmap.Selector) (res []Selector, err error) {
|
func SelectorsFromGRPC(ss []*netmap.Selector) (res []Selector, err error) {
|
||||||
if ss != nil {
|
if ss != nil {
|
||||||
res = make([]Selector, len(ss))
|
res = make([]Selector, len(ss))
|
||||||
|
|
||||||
for i := range ss {
|
for i := range ss {
|
||||||
err = res[i].FromGRPCMessage(&ss[i])
|
if ss[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(ss[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,26 +163,28 @@ func (r *Replica) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReplicasToGRPC(rs []Replica) (res []netmap.Replica) {
|
func ReplicasToGRPC(rs []Replica) (res []*netmap.Replica) {
|
||||||
if rs != nil {
|
if rs != nil {
|
||||||
res = make([]netmap.Replica, 0, len(rs))
|
res = make([]*netmap.Replica, 0, len(rs))
|
||||||
|
|
||||||
for i := range rs {
|
for i := range rs {
|
||||||
res = append(res, *rs[i].ToGRPCMessage().(*netmap.Replica))
|
res = append(res, rs[i].ToGRPCMessage().(*netmap.Replica))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReplicasFromGRPC(rs []netmap.Replica) (res []Replica, err error) {
|
func ReplicasFromGRPC(rs []*netmap.Replica) (res []Replica, err error) {
|
||||||
if rs != nil {
|
if rs != nil {
|
||||||
res = make([]Replica, len(rs))
|
res = make([]Replica, len(rs))
|
||||||
|
|
||||||
for i := range rs {
|
for i := range rs {
|
||||||
err = res[i].FromGRPCMessage(&rs[i])
|
if rs[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(rs[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -283,26 +289,28 @@ func (a *Attribute) FromGRPCMessage(m grpc.Message) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func AttributesToGRPC(as []Attribute) (res []netmap.NodeInfo_Attribute) {
|
func AttributesToGRPC(as []Attribute) (res []*netmap.NodeInfo_Attribute) {
|
||||||
if as != nil {
|
if as != nil {
|
||||||
res = make([]netmap.NodeInfo_Attribute, 0, len(as))
|
res = make([]*netmap.NodeInfo_Attribute, 0, len(as))
|
||||||
|
|
||||||
for i := range as {
|
for i := range as {
|
||||||
res = append(res, *as[i].ToGRPCMessage().(*netmap.NodeInfo_Attribute))
|
res = append(res, as[i].ToGRPCMessage().(*netmap.NodeInfo_Attribute))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func AttributesFromGRPC(as []netmap.NodeInfo_Attribute) (res []Attribute, err error) {
|
func AttributesFromGRPC(as []*netmap.NodeInfo_Attribute) (res []Attribute, err error) {
|
||||||
if as != nil {
|
if as != nil {
|
||||||
res = make([]Attribute, len(as))
|
res = make([]Attribute, len(as))
|
||||||
|
|
||||||
for i := range as {
|
for i := range as {
|
||||||
err = res[i].FromGRPCMessage(&as[i])
|
if as[i] != nil {
|
||||||
if err != nil {
|
err = res[i].FromGRPCMessage(as[i])
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -520,13 +528,13 @@ func (x *NetworkConfig) ToGRPCMessage() grpc.Message {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
m = new(netmap.NetworkConfig)
|
m = new(netmap.NetworkConfig)
|
||||||
|
|
||||||
var ps []netmap.NetworkConfig_Parameter
|
var ps []*netmap.NetworkConfig_Parameter
|
||||||
|
|
||||||
if ln := len(x.ps); ln > 0 {
|
if ln := len(x.ps); ln > 0 {
|
||||||
ps = make([]netmap.NetworkConfig_Parameter, 0, ln)
|
ps = make([]*netmap.NetworkConfig_Parameter, 0, ln)
|
||||||
|
|
||||||
for i := range ln {
|
for i := 0; i < ln; i++ {
|
||||||
ps = append(ps, *x.ps[i].ToGRPCMessage().(*netmap.NetworkConfig_Parameter))
|
ps = append(ps, x.ps[i].ToGRPCMessage().(*netmap.NetworkConfig_Parameter))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,9 +560,11 @@ func (x *NetworkConfig) FromGRPCMessage(m grpc.Message) error {
|
||||||
|
|
||||||
ps = make([]NetworkParameter, ln)
|
ps = make([]NetworkParameter, ln)
|
||||||
|
|
||||||
for i := range ln {
|
for i := 0; i < ln; i++ {
|
||||||
if err := ps[i].FromGRPCMessage(&psV2[i]); err != nil {
|
if psV2[i] != nil {
|
||||||
return err
|
if err := ps[i].FromGRPCMessage(psV2[i]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -746,10 +756,10 @@ func (x *NetMap) ToGRPCMessage() grpc.Message {
|
||||||
m.SetEpoch(x.epoch)
|
m.SetEpoch(x.epoch)
|
||||||
|
|
||||||
if x.nodes != nil {
|
if x.nodes != nil {
|
||||||
nodes := make([]netmap.NodeInfo, len(x.nodes))
|
nodes := make([]*netmap.NodeInfo, len(x.nodes))
|
||||||
|
|
||||||
for i := range x.nodes {
|
for i := range x.nodes {
|
||||||
nodes[i] = *x.nodes[i].ToGRPCMessage().(*netmap.NodeInfo)
|
nodes[i] = x.nodes[i].ToGRPCMessage().(*netmap.NodeInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.SetNodes(nodes)
|
m.SetNodes(nodes)
|
||||||
|
@ -774,7 +784,7 @@ func (x *NetMap) FromGRPCMessage(m grpc.Message) error {
|
||||||
x.nodes = make([]NodeInfo, len(nodes))
|
x.nodes = make([]NodeInfo, len(nodes))
|
||||||
|
|
||||||
for i := range nodes {
|
for i := range nodes {
|
||||||
err = x.nodes[i].FromGRPCMessage(&nodes[i])
|
err = x.nodes[i].FromGRPCMessage(nodes[i])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
116
netmap/grpc/service.go
Normal file
116
netmap/grpc/service.go
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
package netmap
|
||||||
|
|
||||||
|
import (
|
||||||
|
refs "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
|
||||||
|
session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (m *LocalNodeInfoRequest) SetBody(v *LocalNodeInfoRequest_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (m *LocalNodeInfoRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (m *LocalNodeInfoRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVersion sets version of response body.
|
||||||
|
func (m *LocalNodeInfoResponse_Body) SetVersion(v *refs.Version) {
|
||||||
|
m.Version = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNodeInfo sets node info of response body.
|
||||||
|
func (m *LocalNodeInfoResponse_Body) SetNodeInfo(v *NodeInfo) {
|
||||||
|
m.NodeInfo = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (m *LocalNodeInfoResponse) SetBody(v *LocalNodeInfoResponse_Body) {
|
||||||
|
m.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (m *LocalNodeInfoResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
m.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (m *LocalNodeInfoResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
m.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (x *NetworkInfoRequest) SetBody(v *NetworkInfoRequest_Body) {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (x *NetworkInfoRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
x.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (x *NetworkInfoRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
x.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNetworkInfo sets information about the network.
|
||||||
|
func (x *NetworkInfoResponse_Body) SetNetworkInfo(v *NetworkInfo) {
|
||||||
|
x.NetworkInfo = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (x *NetworkInfoResponse) SetBody(v *NetworkInfoResponse_Body) {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (x *NetworkInfoResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
x.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (x *NetworkInfoResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
x.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the request.
|
||||||
|
func (x *NetmapSnapshotRequest) SetBody(v *NetmapSnapshotRequest_Body) {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the request.
|
||||||
|
func (x *NetmapSnapshotRequest) SetMetaHeader(v *session.RequestMetaHeader) {
|
||||||
|
x.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the request.
|
||||||
|
func (x *NetmapSnapshotRequest) SetVerifyHeader(v *session.RequestVerificationHeader) {
|
||||||
|
x.VerifyHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNetmap sets current Netmap.
|
||||||
|
func (x *NetmapSnapshotResponse_Body) SetNetmap(v *Netmap) {
|
||||||
|
x.Netmap = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBody sets body of the response.
|
||||||
|
func (x *NetmapSnapshotResponse) SetBody(v *NetmapSnapshotResponse_Body) {
|
||||||
|
x.Body = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMetaHeader sets meta header of the response.
|
||||||
|
func (x *NetmapSnapshotResponse) SetMetaHeader(v *session.ResponseMetaHeader) {
|
||||||
|
x.MetaHeader = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetVerifyHeader sets verification header of the response.
|
||||||
|
func (x *NetmapSnapshotResponse) SetVerifyHeader(v *session.ResponseVerificationHeader) {
|
||||||
|
x.VerifyHeader = v
|
||||||
|
}
|
1108
netmap/grpc/service.pb.go
generated
Normal file
1108
netmap/grpc/service.pb.go
generated
Normal file
File diff suppressed because it is too large
Load diff
2180
netmap/grpc/service_frostfs.pb.go
generated
2180
netmap/grpc/service_frostfs.pb.go
generated
File diff suppressed because it is too large
Load diff
|
@ -1,121 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package netmap
|
|
||||||
|
|
||||||
func DoFuzzProtoLocalNodeInfoRequest(data []byte) int {
|
|
||||||
msg := new(LocalNodeInfoRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONLocalNodeInfoRequest(data []byte) int {
|
|
||||||
msg := new(LocalNodeInfoRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoLocalNodeInfoResponse(data []byte) int {
|
|
||||||
msg := new(LocalNodeInfoResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONLocalNodeInfoResponse(data []byte) int {
|
|
||||||
msg := new(LocalNodeInfoResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetworkInfoRequest(data []byte) int {
|
|
||||||
msg := new(NetworkInfoRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetworkInfoRequest(data []byte) int {
|
|
||||||
msg := new(NetworkInfoRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetworkInfoResponse(data []byte) int {
|
|
||||||
msg := new(NetworkInfoResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetworkInfoResponse(data []byte) int {
|
|
||||||
msg := new(NetworkInfoResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetmapSnapshotRequest(data []byte) int {
|
|
||||||
msg := new(NetmapSnapshotRequest)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetmapSnapshotRequest(data []byte) int {
|
|
||||||
msg := new(NetmapSnapshotRequest)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetmapSnapshotResponse(data []byte) int {
|
|
||||||
msg := new(NetmapSnapshotResponse)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetmapSnapshotResponse(data []byte) int {
|
|
||||||
msg := new(NetmapSnapshotResponse)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package netmap
|
|
||||||
|
|
||||||
import (
|
|
||||||
testing "testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FuzzProtoLocalNodeInfoRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoLocalNodeInfoRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONLocalNodeInfoRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONLocalNodeInfoRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoLocalNodeInfoResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoLocalNodeInfoResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONLocalNodeInfoResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONLocalNodeInfoResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoNetworkInfoRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoNetworkInfoRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONNetworkInfoRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONNetworkInfoRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoNetworkInfoResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoNetworkInfoResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONNetworkInfoResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONNetworkInfoResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoNetmapSnapshotRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoNetmapSnapshotRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONNetmapSnapshotRequest(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONNetmapSnapshotRequest(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzProtoNetmapSnapshotResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzProtoNetmapSnapshotResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
func FuzzJSONNetmapSnapshotResponse(f *testing.F) {
|
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
|
||||||
DoFuzzJSONNetmapSnapshotResponse(data)
|
|
||||||
})
|
|
||||||
}
|
|
10
netmap/grpc/service_grpc.pb.go
generated
10
netmap/grpc/service_grpc.pb.go
generated
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// - protoc-gen-go-grpc v1.3.0
|
// - protoc-gen-go-grpc v1.3.0
|
||||||
// - protoc v5.27.2
|
// - protoc v4.25.3
|
||||||
// source: netmap/grpc/service.proto
|
// source: netmap/grpc/service.proto
|
||||||
|
|
||||||
package netmap
|
package netmap
|
||||||
|
@ -40,14 +40,14 @@ type NetmapServiceClient interface {
|
||||||
// information about the server has been successfully read;
|
// information about the server has been successfully read;
|
||||||
// - Common failures (SECTION_FAILURE_COMMON).
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
LocalNodeInfo(ctx context.Context, in *LocalNodeInfoRequest, opts ...grpc.CallOption) (*LocalNodeInfoResponse, error)
|
LocalNodeInfo(ctx context.Context, in *LocalNodeInfoRequest, opts ...grpc.CallOption) (*LocalNodeInfoResponse, error)
|
||||||
// Read recent information about the FrostFS network.
|
// Read recent information about the NeoFS network.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
// information about the current network state has been successfully read;
|
// information about the current network state has been successfully read;
|
||||||
// - Common failures (SECTION_FAILURE_COMMON).
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
NetworkInfo(ctx context.Context, in *NetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error)
|
NetworkInfo(ctx context.Context, in *NetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfoResponse, error)
|
||||||
// Returns network map snapshot of the current FrostFS epoch.
|
// Returns network map snapshot of the current NeoFS epoch.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
|
@ -107,14 +107,14 @@ type NetmapServiceServer interface {
|
||||||
// information about the server has been successfully read;
|
// information about the server has been successfully read;
|
||||||
// - Common failures (SECTION_FAILURE_COMMON).
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
LocalNodeInfo(context.Context, *LocalNodeInfoRequest) (*LocalNodeInfoResponse, error)
|
LocalNodeInfo(context.Context, *LocalNodeInfoRequest) (*LocalNodeInfoResponse, error)
|
||||||
// Read recent information about the FrostFS network.
|
// Read recent information about the NeoFS network.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
// information about the current network state has been successfully read;
|
// information about the current network state has been successfully read;
|
||||||
// - Common failures (SECTION_FAILURE_COMMON).
|
// - Common failures (SECTION_FAILURE_COMMON).
|
||||||
NetworkInfo(context.Context, *NetworkInfoRequest) (*NetworkInfoResponse, error)
|
NetworkInfo(context.Context, *NetworkInfoRequest) (*NetworkInfoResponse, error)
|
||||||
// Returns network map snapshot of the current FrostFS epoch.
|
// Returns network map snapshot of the current NeoFS epoch.
|
||||||
//
|
//
|
||||||
// Statuses:
|
// Statuses:
|
||||||
// - **OK** (0, SECTION_SUCCESS):
|
// - **OK** (0, SECTION_SUCCESS):
|
||||||
|
|
212
netmap/grpc/types.go
Normal file
212
netmap/grpc/types.go
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
package netmap
|
||||||
|
|
||||||
|
// SetReplicas of placement policy.
|
||||||
|
func (m *PlacementPolicy) SetReplicas(v []*Replica) {
|
||||||
|
m.Replicas = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetContainerBackupFactor of placement policy.
|
||||||
|
func (m *PlacementPolicy) SetContainerBackupFactor(v uint32) {
|
||||||
|
m.ContainerBackupFactor = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSelectors of placement policy.
|
||||||
|
func (m *PlacementPolicy) SetSelectors(v []*Selector) {
|
||||||
|
m.Selectors = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFilters of placement policy.
|
||||||
|
func (m *PlacementPolicy) SetFilters(v []*Filter) {
|
||||||
|
m.Filters = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUnique of placement policy.
|
||||||
|
func (m *PlacementPolicy) SetUnique(unique bool) {
|
||||||
|
m.Unique = unique
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetName of placement filter.
|
||||||
|
func (m *Filter) SetName(v string) {
|
||||||
|
m.Name = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKey of placement filter.
|
||||||
|
func (m *Filter) SetKey(v string) {
|
||||||
|
m.Key = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOperation of placement filter.
|
||||||
|
func (m *Filter) SetOp(v Operation) {
|
||||||
|
m.Op = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue of placement filter.
|
||||||
|
func (m *Filter) SetValue(v string) {
|
||||||
|
m.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFilters sets sub-filters of placement filter.
|
||||||
|
func (m *Filter) SetFilters(v []*Filter) {
|
||||||
|
m.Filters = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetName of placement selector.
|
||||||
|
func (m *Selector) SetName(v string) {
|
||||||
|
m.Name = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCount of nodes of placement selector.
|
||||||
|
func (m *Selector) SetCount(v uint32) {
|
||||||
|
m.Count = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAttribute of nodes of placement selector.
|
||||||
|
func (m *Selector) SetAttribute(v string) {
|
||||||
|
m.Attribute = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFilter of placement selector.
|
||||||
|
func (m *Selector) SetFilter(v string) {
|
||||||
|
m.Filter = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetClause of placement selector.
|
||||||
|
func (m *Selector) SetClause(v Clause) {
|
||||||
|
m.Clause = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCount of object replica.
|
||||||
|
func (m *Replica) SetCount(v uint32) {
|
||||||
|
m.Count = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSelector of object replica.
|
||||||
|
func (m *Replica) SetSelector(v string) {
|
||||||
|
m.Selector = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKey sets key to the node attribute.
|
||||||
|
func (m *NodeInfo_Attribute) SetKey(v string) {
|
||||||
|
m.Key = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue sets value of the node attribute.
|
||||||
|
func (m *NodeInfo_Attribute) SetValue(v string) {
|
||||||
|
m.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetParent sets value of the node parents.
|
||||||
|
func (m *NodeInfo_Attribute) SetParents(v []string) {
|
||||||
|
m.Parents = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAddress sets node network address.
|
||||||
|
//
|
||||||
|
// Deprecated: use SetAddresses.
|
||||||
|
func (m *NodeInfo) SetAddress(v string) {
|
||||||
|
m.SetAddresses([]string{v})
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAddresses sets list of network addresses of the node.
|
||||||
|
func (m *NodeInfo) SetAddresses(v []string) {
|
||||||
|
m.Addresses = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPublicKey sets node public key in a binary format.
|
||||||
|
func (m *NodeInfo) SetPublicKey(v []byte) {
|
||||||
|
m.PublicKey = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAttributes sets list of the node attributes.
|
||||||
|
func (m *NodeInfo) SetAttributes(v []*NodeInfo_Attribute) {
|
||||||
|
m.Attributes = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetState sets node state.
|
||||||
|
func (m *NodeInfo) SetState(v NodeInfo_State) {
|
||||||
|
m.State = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCurrentEpoch sets number of the current epoch.
|
||||||
|
func (x *NetworkInfo) SetCurrentEpoch(v uint64) {
|
||||||
|
x.CurrentEpoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMagicNumber sets magic number of the sidechain.
|
||||||
|
func (x *NetworkInfo) SetMagicNumber(v uint64) {
|
||||||
|
x.MagicNumber = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMsPerBlock sets MillisecondsPerBlock network parameter.
|
||||||
|
func (x *NetworkInfo) SetMsPerBlock(v int64) {
|
||||||
|
x.MsPerBlock = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNetworkConfig sets NeoFS network configuration.
|
||||||
|
func (x *NetworkInfo) SetNetworkConfig(v *NetworkConfig) {
|
||||||
|
x.NetworkConfig = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses Clause from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *Clause) FromString(s string) bool {
|
||||||
|
i, ok := Clause_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = Clause(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses Operation from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *Operation) FromString(s string) bool {
|
||||||
|
i, ok := Operation_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = Operation(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString parses NodeInfo_State from a string representation,
|
||||||
|
// It is a reverse action to String().
|
||||||
|
//
|
||||||
|
// Returns true if s was parsed successfully.
|
||||||
|
func (x *NodeInfo_State) FromString(s string) bool {
|
||||||
|
i, ok := NodeInfo_State_value[s]
|
||||||
|
if ok {
|
||||||
|
*x = NodeInfo_State(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKey sets parameter key.
|
||||||
|
func (x *NetworkConfig_Parameter) SetKey(v []byte) {
|
||||||
|
x.Key = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue sets parameter value.
|
||||||
|
func (x *NetworkConfig_Parameter) SetValue(v []byte) {
|
||||||
|
x.Value = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetParameters sets NeoFS network parameters.
|
||||||
|
func (x *NetworkConfig) SetParameters(v []*NetworkConfig_Parameter) {
|
||||||
|
x.Parameters = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetEpoch sets revision number of the Netmap.
|
||||||
|
func (x *Netmap) SetEpoch(v uint64) {
|
||||||
|
x.Epoch = v
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetNodes sets nodes presented in the Netmap.
|
||||||
|
func (x *Netmap) SetNodes(v []*NodeInfo) {
|
||||||
|
x.Nodes = v
|
||||||
|
}
|
1366
netmap/grpc/types.pb.go
generated
Normal file
1366
netmap/grpc/types.pb.go
generated
Normal file
File diff suppressed because it is too large
Load diff
2749
netmap/grpc/types_frostfs.pb.go
generated
2749
netmap/grpc/types_frostfs.pb.go
generated
File diff suppressed because it is too large
Load diff
|
@ -1,159 +0,0 @@
|
||||||
//go:build gofuzz
|
|
||||||
// +build gofuzz
|
|
||||||
|
|
||||||
// Code generated by protoc-gen-go-frostfs. DO NOT EDIT.
|
|
||||||
|
|
||||||
package netmap
|
|
||||||
|
|
||||||
func DoFuzzProtoFilter(data []byte) int {
|
|
||||||
msg := new(Filter)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONFilter(data []byte) int {
|
|
||||||
msg := new(Filter)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoSelector(data []byte) int {
|
|
||||||
msg := new(Selector)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONSelector(data []byte) int {
|
|
||||||
msg := new(Selector)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoReplica(data []byte) int {
|
|
||||||
msg := new(Replica)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONReplica(data []byte) int {
|
|
||||||
msg := new(Replica)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoPlacementPolicy(data []byte) int {
|
|
||||||
msg := new(PlacementPolicy)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONPlacementPolicy(data []byte) int {
|
|
||||||
msg := new(PlacementPolicy)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNodeInfo(data []byte) int {
|
|
||||||
msg := new(NodeInfo)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNodeInfo(data []byte) int {
|
|
||||||
msg := new(NodeInfo)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetmap(data []byte) int {
|
|
||||||
msg := new(Netmap)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetmap(data []byte) int {
|
|
||||||
msg := new(Netmap)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetworkConfig(data []byte) int {
|
|
||||||
msg := new(NetworkConfig)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetworkConfig(data []byte) int {
|
|
||||||
msg := new(NetworkConfig)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzProtoNetworkInfo(data []byte) int {
|
|
||||||
msg := new(NetworkInfo)
|
|
||||||
if err := msg.UnmarshalProtobuf(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_ = msg.MarshalProtobuf(nil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
func DoFuzzJSONNetworkInfo(data []byte) int {
|
|
||||||
msg := new(NetworkInfo)
|
|
||||||
if err := msg.UnmarshalJSON(data); err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
_, err := msg.MarshalJSON()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue