[#276] Merge repo with frostfs-api-go
Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
parent
4c310ae1c7
commit
349d6b6140
334 changed files with 28249 additions and 279 deletions
|
@ -1,10 +1,10 @@
|
|||
package accounting
|
||||
|
||||
import "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting"
|
||||
import "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting"
|
||||
|
||||
// Decimal represents decimal number for accounting operations.
|
||||
//
|
||||
// Decimal is mutually compatible with git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting.Decimal
|
||||
// Decimal is mutually compatible with git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting.Decimal
|
||||
// message. See ReadFromV2 / WriteToV2 methods.
|
||||
//
|
||||
// Instances can be created using built-in var declaration.
|
||||
|
|
|
@ -3,8 +3,8 @@ package accounting_test
|
|||
import (
|
||||
"testing"
|
||||
|
||||
v2accounting "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/accounting"
|
||||
v2accounting "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Instances can be also used to process FrostFS API V2 protocol messages
|
|||
|
||||
On client side:
|
||||
|
||||
import "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting"
|
||||
import "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting"
|
||||
|
||||
var msg accounting.Decimal
|
||||
dec.WriteToV2(&msg)
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package ape
|
||||
|
||||
import (
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape"
|
||||
)
|
||||
|
||||
// TargetType is an SDK representation for v2's TargetType.
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/ape"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/ape"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape"
|
||||
apeV2 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
104
apiv2/accounting/accounting.go
Normal file
104
apiv2/accounting/accounting.go
Normal file
|
@ -0,0 +1,104 @@
|
|||
package accounting
|
||||
|
||||
import (
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/session"
|
||||
)
|
||||
|
||||
type BalanceRequestBody struct {
|
||||
ownerID *refs.OwnerID
|
||||
}
|
||||
|
||||
type BalanceResponseBody struct {
|
||||
bal *Decimal
|
||||
}
|
||||
|
||||
type Decimal struct {
|
||||
val int64
|
||||
|
||||
prec uint32
|
||||
}
|
||||
|
||||
type BalanceRequest struct {
|
||||
body *BalanceRequestBody
|
||||
|
||||
session.RequestHeaders
|
||||
}
|
||||
|
||||
type BalanceResponse struct {
|
||||
body *BalanceResponseBody
|
||||
|
||||
session.ResponseHeaders
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) GetOwnerID() *refs.OwnerID {
|
||||
if b != nil {
|
||||
return b.ownerID
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) SetOwnerID(v *refs.OwnerID) {
|
||||
b.ownerID = v
|
||||
}
|
||||
|
||||
func (b *BalanceRequest) GetBody() *BalanceRequestBody {
|
||||
if b != nil {
|
||||
return b.body
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *BalanceRequest) SetBody(v *BalanceRequestBody) {
|
||||
b.body = v
|
||||
}
|
||||
|
||||
func (d *Decimal) GetValue() int64 {
|
||||
if d != nil {
|
||||
return d.val
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func (d *Decimal) SetValue(v int64) {
|
||||
d.val = v
|
||||
}
|
||||
|
||||
func (d *Decimal) GetPrecision() uint32 {
|
||||
if d != nil {
|
||||
return d.prec
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func (d *Decimal) SetPrecision(v uint32) {
|
||||
d.prec = v
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) GetBalance() *Decimal {
|
||||
if br != nil {
|
||||
return br.bal
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) SetBalance(v *Decimal) {
|
||||
br.bal = v
|
||||
}
|
||||
|
||||
func (br *BalanceResponse) GetBody() *BalanceResponseBody {
|
||||
if br != nil {
|
||||
return br.body
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (br *BalanceResponse) SetBody(v *BalanceResponseBody) {
|
||||
br.body = v
|
||||
}
|
178
apiv2/accounting/convert.go
Normal file
178
apiv2/accounting/convert.go
Normal file
|
@ -0,0 +1,178 @@
|
|||
package accounting
|
||||
|
||||
import (
|
||||
accounting "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs"
|
||||
refsGRPC "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message"
|
||||
)
|
||||
|
||||
func (b *BalanceRequestBody) ToGRPCMessage() grpc.Message {
|
||||
var m *accounting.BalanceRequest_Body
|
||||
|
||||
if b != nil {
|
||||
m = new(accounting.BalanceRequest_Body)
|
||||
|
||||
m.SetOwnerId(b.ownerID.ToGRPCMessage().(*refsGRPC.OwnerID))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*accounting.BalanceRequest_Body)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
ownerID := v.GetOwnerId()
|
||||
if ownerID == nil {
|
||||
b.ownerID = nil
|
||||
} else {
|
||||
if b.ownerID == nil {
|
||||
b.ownerID = new(refs.OwnerID)
|
||||
}
|
||||
|
||||
err = b.ownerID.FromGRPCMessage(ownerID)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (b *BalanceRequest) ToGRPCMessage() grpc.Message {
|
||||
var m *accounting.BalanceRequest
|
||||
|
||||
if b != nil {
|
||||
m = new(accounting.BalanceRequest)
|
||||
|
||||
m.SetBody(b.body.ToGRPCMessage().(*accounting.BalanceRequest_Body))
|
||||
b.RequestHeaders.ToMessage(m)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (b *BalanceRequest) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*accounting.BalanceRequest)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
body := v.GetBody()
|
||||
if body == nil {
|
||||
b.body = nil
|
||||
} else {
|
||||
if b.body == nil {
|
||||
b.body = new(BalanceRequestBody)
|
||||
}
|
||||
|
||||
err = b.body.FromGRPCMessage(body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return b.RequestHeaders.FromMessage(v)
|
||||
}
|
||||
|
||||
func (d *Decimal) ToGRPCMessage() grpc.Message {
|
||||
var m *accounting.Decimal
|
||||
|
||||
if d != nil {
|
||||
m = new(accounting.Decimal)
|
||||
|
||||
m.SetValue(d.val)
|
||||
m.SetPrecision(d.prec)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (d *Decimal) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*accounting.Decimal)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
d.val = v.GetValue()
|
||||
d.prec = v.GetPrecision()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) ToGRPCMessage() grpc.Message {
|
||||
var m *accounting.BalanceResponse_Body
|
||||
|
||||
if br != nil {
|
||||
m = new(accounting.BalanceResponse_Body)
|
||||
|
||||
m.SetBalance(br.bal.ToGRPCMessage().(*accounting.Decimal))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*accounting.BalanceResponse_Body)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
bal := v.GetBalance()
|
||||
if bal == nil {
|
||||
br.bal = nil
|
||||
} else {
|
||||
if br.bal == nil {
|
||||
br.bal = new(Decimal)
|
||||
}
|
||||
|
||||
err = br.bal.FromGRPCMessage(bal)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (br *BalanceResponse) ToGRPCMessage() grpc.Message {
|
||||
var m *accounting.BalanceResponse
|
||||
|
||||
if br != nil {
|
||||
m = new(accounting.BalanceResponse)
|
||||
|
||||
m.SetBody(br.body.ToGRPCMessage().(*accounting.BalanceResponse_Body))
|
||||
br.ResponseHeaders.ToMessage(m)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (br *BalanceResponse) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*accounting.BalanceResponse)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
body := v.GetBody()
|
||||
if body == nil {
|
||||
br.body = nil
|
||||
} else {
|
||||
if br.body == nil {
|
||||
br.body = new(BalanceResponseBody)
|
||||
}
|
||||
|
||||
err = br.body.FromGRPCMessage(body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return br.ResponseHeaders.FromMessage(v)
|
||||
}
|
BIN
apiv2/accounting/grpc/service_frostfs.pb.go
Normal file
BIN
apiv2/accounting/grpc/service_frostfs.pb.go
Normal file
Binary file not shown.
45
apiv2/accounting/grpc/service_frostfs_fuzz.go
Normal file
45
apiv2/accounting/grpc/service_frostfs_fuzz.go
Normal file
|
@ -0,0 +1,45 @@
|
|||
//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
|
||||
}
|
31
apiv2/accounting/grpc/service_frostfs_test.go
Normal file
31
apiv2/accounting/grpc/service_frostfs_test.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
//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)
|
||||
})
|
||||
}
|
BIN
apiv2/accounting/grpc/service_grpc.pb.go
Normal file
BIN
apiv2/accounting/grpc/service_grpc.pb.go
Normal file
Binary file not shown.
BIN
apiv2/accounting/grpc/types_frostfs.pb.go
Normal file
BIN
apiv2/accounting/grpc/types_frostfs.pb.go
Normal file
Binary file not shown.
26
apiv2/accounting/grpc/types_frostfs_fuzz.go
Normal file
26
apiv2/accounting/grpc/types_frostfs_fuzz.go
Normal file
|
@ -0,0 +1,26 @@
|
|||
//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
|
||||
}
|
21
apiv2/accounting/grpc/types_frostfs_test.go
Normal file
21
apiv2/accounting/grpc/types_frostfs_test.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
//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)
|
||||
})
|
||||
}
|
14
apiv2/accounting/json.go
Normal file
14
apiv2/accounting/json.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package accounting
|
||||
|
||||
import (
|
||||
accounting "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message"
|
||||
)
|
||||
|
||||
func (d *Decimal) MarshalJSON() ([]byte, error) {
|
||||
return message.MarshalJSON(d)
|
||||
}
|
||||
|
||||
func (d *Decimal) UnmarshalJSON(data []byte) error {
|
||||
return message.UnmarshalJSON(d, data, new(accounting.Decimal))
|
||||
}
|
104
apiv2/accounting/marshal.go
Normal file
104
apiv2/accounting/marshal.go
Normal file
|
@ -0,0 +1,104 @@
|
|||
package accounting
|
||||
|
||||
import (
|
||||
accounting "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message"
|
||||
protoutil "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/util/proto"
|
||||
)
|
||||
|
||||
const (
|
||||
decimalValueField = 1
|
||||
decimalPrecisionField = 2
|
||||
|
||||
balanceReqBodyOwnerField = 1
|
||||
|
||||
balanceRespBodyDecimalField = 1
|
||||
)
|
||||
|
||||
func (d *Decimal) StableMarshal(buf []byte) []byte {
|
||||
if d == nil {
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, d.StableSize())
|
||||
}
|
||||
|
||||
var offset int
|
||||
|
||||
offset += protoutil.Int64Marshal(decimalValueField, buf[offset:], d.val)
|
||||
protoutil.UInt32Marshal(decimalPrecisionField, buf[offset:], d.prec)
|
||||
|
||||
return buf
|
||||
}
|
||||
|
||||
func (d *Decimal) StableSize() (size int) {
|
||||
if d == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
size += protoutil.Int64Size(decimalValueField, d.val)
|
||||
size += protoutil.UInt32Size(decimalPrecisionField, d.prec)
|
||||
|
||||
return size
|
||||
}
|
||||
|
||||
func (d *Decimal) Unmarshal(data []byte) error {
|
||||
return message.Unmarshal(d, data, new(accounting.Decimal))
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) StableMarshal(buf []byte) []byte {
|
||||
if b == nil {
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, b.StableSize())
|
||||
}
|
||||
|
||||
protoutil.NestedStructureMarshal(balanceReqBodyOwnerField, buf, b.ownerID)
|
||||
|
||||
return buf
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) StableSize() (size int) {
|
||||
if b == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
size = protoutil.NestedStructureSize(balanceReqBodyOwnerField, b.ownerID)
|
||||
|
||||
return size
|
||||
}
|
||||
|
||||
func (b *BalanceRequestBody) Unmarshal(data []byte) error {
|
||||
return message.Unmarshal(b, data, new(accounting.BalanceRequest_Body))
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) StableMarshal(buf []byte) []byte {
|
||||
if br == nil {
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
if buf == nil {
|
||||
buf = make([]byte, br.StableSize())
|
||||
}
|
||||
|
||||
protoutil.NestedStructureMarshal(balanceRespBodyDecimalField, buf, br.bal)
|
||||
|
||||
return buf
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) StableSize() (size int) {
|
||||
if br == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
size = protoutil.NestedStructureSize(balanceRespBodyDecimalField, br.bal)
|
||||
|
||||
return size
|
||||
}
|
||||
|
||||
func (br *BalanceResponseBody) Unmarshal(data []byte) error {
|
||||
return message.Unmarshal(br, data, new(accounting.BalanceResponse_Body))
|
||||
}
|
19
apiv2/accounting/message_test.go
Normal file
19
apiv2/accounting/message_test.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package accounting_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
accountingtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting/test"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message"
|
||||
messagetest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message/test"
|
||||
)
|
||||
|
||||
func TestMessage(t *testing.T) {
|
||||
messagetest.TestRPCMessage(t,
|
||||
func(empty bool) message.Message { return accountingtest.GenerateDecimal(empty) },
|
||||
func(empty bool) message.Message { return accountingtest.GenerateBalanceRequestBody(empty) },
|
||||
func(empty bool) message.Message { return accountingtest.GenerateBalanceRequest(empty) },
|
||||
func(empty bool) message.Message { return accountingtest.GenerateBalanceResponseBody(empty) },
|
||||
func(empty bool) message.Message { return accountingtest.GenerateBalanceResponse(empty) },
|
||||
)
|
||||
}
|
64
apiv2/accounting/test/generate.go
Normal file
64
apiv2/accounting/test/generate.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package accountingtest
|
||||
|
||||
import (
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/accounting"
|
||||
accountingtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs/test"
|
||||
sessiontest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/session/test"
|
||||
)
|
||||
|
||||
func GenerateBalanceRequest(empty bool) *accounting.BalanceRequest {
|
||||
m := new(accounting.BalanceRequest)
|
||||
|
||||
if !empty {
|
||||
m.SetBody(GenerateBalanceRequestBody(false))
|
||||
}
|
||||
|
||||
m.SetMetaHeader(sessiontest.GenerateRequestMetaHeader(empty))
|
||||
m.SetVerificationHeader(sessiontest.GenerateRequestVerificationHeader(empty))
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func GenerateBalanceRequestBody(empty bool) *accounting.BalanceRequestBody {
|
||||
m := new(accounting.BalanceRequestBody)
|
||||
|
||||
if !empty {
|
||||
m.SetOwnerID(accountingtest.GenerateOwnerID(false))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func GenerateBalanceResponse(empty bool) *accounting.BalanceResponse {
|
||||
m := new(accounting.BalanceResponse)
|
||||
|
||||
if !empty {
|
||||
m.SetBody(GenerateBalanceResponseBody(false))
|
||||
}
|
||||
|
||||
m.SetMetaHeader(sessiontest.GenerateResponseMetaHeader(empty))
|
||||
m.SetVerificationHeader(sessiontest.GenerateResponseVerificationHeader(empty))
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func GenerateBalanceResponseBody(empty bool) *accounting.BalanceResponseBody {
|
||||
m := new(accounting.BalanceResponseBody)
|
||||
|
||||
if !empty {
|
||||
m.SetBalance(GenerateDecimal(false))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func GenerateDecimal(empty bool) *accounting.Decimal {
|
||||
m := new(accounting.Decimal)
|
||||
|
||||
if !empty {
|
||||
m.SetValue(1)
|
||||
m.SetPrecision(2)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
51
apiv2/acl/bench_test.go
Normal file
51
apiv2/acl/bench_test.go
Normal file
|
@ -0,0 +1,51 @@
|
|||
package acl_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/acl"
|
||||
aclGrpc "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/acl/grpc"
|
||||
acltest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/acl/test"
|
||||
)
|
||||
|
||||
func BenchmarkTable_ToGRPCMessage(b *testing.B) {
|
||||
const size = 4
|
||||
|
||||
tb := new(acl.Table)
|
||||
rs := make([]acl.Record, size)
|
||||
for i := range rs {
|
||||
fs := make([]acl.HeaderFilter, size)
|
||||
for j := range fs {
|
||||
fs[j] = *acltest.GenerateFilter(false)
|
||||
}
|
||||
ts := make([]acl.Target, size)
|
||||
for j := range ts {
|
||||
ts[j] = *acltest.GenerateTarget(false)
|
||||
}
|
||||
|
||||
rs[i].SetFilters(fs)
|
||||
rs[i].SetTargets(ts)
|
||||
}
|
||||
tb.SetRecords(rs)
|
||||
|
||||
raw := tb.ToGRPCMessage()
|
||||
|
||||
b.Run("to grpc message", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
for range b.N {
|
||||
raw := tb.ToGRPCMessage()
|
||||
if len(tb.GetRecords()) != len(raw.(*aclGrpc.EACLTable).Records) {
|
||||
b.FailNow()
|
||||
}
|
||||
}
|
||||
})
|
||||
b.Run("from grpc message", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
for range b.N {
|
||||
tb := new(acl.Table)
|
||||
if tb.FromGRPCMessage(raw) != nil {
|
||||
b.FailNow()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
592
apiv2/acl/convert.go
Normal file
592
apiv2/acl/convert.go
Normal file
|
@ -0,0 +1,592 @@
|
|||
package acl
|
||||
|
||||
import (
|
||||
acl "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/acl/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape"
|
||||
apeGRPC "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/ape/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs"
|
||||
refsGRPC "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/refs/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/grpc"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/apiv2/rpc/message"
|
||||
)
|
||||
|
||||
// RoleToGRPCField converts unified role enum into grpc enum.
|
||||
func RoleToGRPCField(t Role) acl.Role {
|
||||
switch t {
|
||||
case RoleUser:
|
||||
return acl.Role_USER
|
||||
case RoleSystem:
|
||||
return acl.Role_SYSTEM
|
||||
case RoleOthers:
|
||||
return acl.Role_OTHERS
|
||||
default:
|
||||
return acl.Role_ROLE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
// RoleFromGRPCField converts grpc enum into unified role enum.
|
||||
func RoleFromGRPCField(t acl.Role) Role {
|
||||
switch t {
|
||||
case acl.Role_USER:
|
||||
return RoleUser
|
||||
case acl.Role_SYSTEM:
|
||||
return RoleSystem
|
||||
case acl.Role_OTHERS:
|
||||
return RoleOthers
|
||||
default:
|
||||
return RoleUnknown
|
||||
}
|
||||
}
|
||||
|
||||
// OperationToGRPCField converts unified operation enum into grpc enum.
|
||||
func OperationToGRPCField(t Operation) acl.Operation {
|
||||
switch t {
|
||||
case OperationPut:
|
||||
return acl.Operation_PUT
|
||||
case OperationDelete:
|
||||
return acl.Operation_DELETE
|
||||
case OperationGet:
|
||||
return acl.Operation_GET
|
||||
case OperationHead:
|
||||
return acl.Operation_HEAD
|
||||
case OperationSearch:
|
||||
return acl.Operation_SEARCH
|
||||
case OperationRange:
|
||||
return acl.Operation_GETRANGE
|
||||
case OperationRangeHash:
|
||||
return acl.Operation_GETRANGEHASH
|
||||
default:
|
||||
return acl.Operation_OPERATION_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
// OperationFromGRPCField converts grpc enum into unified operation enum.
|
||||
func OperationFromGRPCField(t acl.Operation) Operation {
|
||||
switch t {
|
||||
case acl.Operation_PUT:
|
||||
return OperationPut
|
||||
case acl.Operation_DELETE:
|
||||
return OperationDelete
|
||||
case acl.Operation_GET:
|
||||
return OperationGet
|
||||
case acl.Operation_HEAD:
|
||||
return OperationHead
|
||||
case acl.Operation_SEARCH:
|
||||
return OperationSearch
|
||||
case acl.Operation_GETRANGE:
|
||||
return OperationRange
|
||||
case acl.Operation_GETRANGEHASH:
|
||||
return OperationRangeHash
|
||||
default:
|
||||
return OperationUnknown
|
||||
}
|
||||
}
|
||||
|
||||
// ActionToGRPCField converts unified action enum into grpc enum.
|
||||
func ActionToGRPCField(t Action) acl.Action {
|
||||
switch t {
|
||||
case ActionDeny:
|
||||
return acl.Action_DENY
|
||||
case ActionAllow:
|
||||
return acl.Action_ALLOW
|
||||
default:
|
||||
return acl.Action_ACTION_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
// ActionFromGRPCField converts grpc enum into unified action enum.
|
||||
func ActionFromGRPCField(t acl.Action) Action {
|
||||
switch t {
|
||||
case acl.Action_DENY:
|
||||
return ActionDeny
|
||||
case acl.Action_ALLOW:
|
||||
return ActionAllow
|
||||
default:
|
||||
return ActionUnknown
|
||||
}
|
||||
}
|
||||
|
||||
// HeaderTypeToGRPCField converts unified header type enum into grpc enum.
|
||||
func HeaderTypeToGRPCField(t HeaderType) acl.HeaderType {
|
||||
switch t {
|
||||
case HeaderTypeRequest:
|
||||
return acl.HeaderType_REQUEST
|
||||
case HeaderTypeObject:
|
||||
return acl.HeaderType_OBJECT
|
||||
case HeaderTypeService:
|
||||
return acl.HeaderType_SERVICE
|
||||
default:
|
||||
return acl.HeaderType_HEADER_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
// HeaderTypeFromGRPCField converts grpc enum into unified header type enum.
|
||||
func HeaderTypeFromGRPCField(t acl.HeaderType) HeaderType {
|
||||
switch t {
|
||||
case acl.HeaderType_REQUEST:
|
||||
return HeaderTypeRequest
|
||||
case acl.HeaderType_OBJECT:
|
||||
return HeaderTypeObject
|
||||
case acl.HeaderType_SERVICE:
|
||||
return HeaderTypeService
|
||||
default:
|
||||
return HeaderTypeUnknown
|
||||
}
|
||||
}
|
||||
|
||||
// MatchTypeToGRPCField converts unified match type enum into grpc enum.
|
||||
func MatchTypeToGRPCField(t MatchType) acl.MatchType {
|
||||
switch t {
|
||||
case MatchTypeStringEqual:
|
||||
return acl.MatchType_STRING_EQUAL
|
||||
case MatchTypeStringNotEqual:
|
||||
return acl.MatchType_STRING_NOT_EQUAL
|
||||
default:
|
||||
return acl.MatchType_MATCH_TYPE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
// MatchTypeFromGRPCField converts grpc enum into unified match type enum.
|
||||
func MatchTypeFromGRPCField(t acl.MatchType) MatchType {
|
||||
switch t {
|
||||
case acl.MatchType_STRING_EQUAL:
|
||||
return MatchTypeStringEqual
|
||||
case acl.MatchType_STRING_NOT_EQUAL:
|
||||
return MatchTypeStringNotEqual
|
||||
default:
|
||||
return MatchTypeUnknown
|
||||
}
|
||||
}
|
||||
|
||||
func (f *HeaderFilter) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.EACLRecord_Filter
|
||||
|
||||
if f != nil {
|
||||
m = new(acl.EACLRecord_Filter)
|
||||
|
||||
m.SetKey(f.key)
|
||||
m.SetValue(f.value)
|
||||
m.SetHeaderType(HeaderTypeToGRPCField(f.hdrType))
|
||||
m.SetMatchType(MatchTypeToGRPCField(f.matchType))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (f *HeaderFilter) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.EACLRecord_Filter)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
f.key = v.GetKey()
|
||||
f.value = v.GetValue()
|
||||
f.hdrType = HeaderTypeFromGRPCField(v.GetHeaderType())
|
||||
f.matchType = MatchTypeFromGRPCField(v.GetMatchType())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func HeaderFiltersToGRPC(fs []HeaderFilter) (res []acl.EACLRecord_Filter) {
|
||||
if fs != nil {
|
||||
res = make([]acl.EACLRecord_Filter, 0, len(fs))
|
||||
|
||||
for i := range fs {
|
||||
res = append(res, *fs[i].ToGRPCMessage().(*acl.EACLRecord_Filter))
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func HeaderFiltersFromGRPC(fs []acl.EACLRecord_Filter) (res []HeaderFilter, err error) {
|
||||
if fs != nil {
|
||||
res = make([]HeaderFilter, len(fs))
|
||||
|
||||
for i := range fs {
|
||||
err = res[i].FromGRPCMessage(&fs[i])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (t *Target) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.EACLRecord_Target
|
||||
|
||||
if t != nil {
|
||||
m = new(acl.EACLRecord_Target)
|
||||
|
||||
m.SetRole(RoleToGRPCField(t.role))
|
||||
m.SetKeys(t.keys)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (t *Target) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.EACLRecord_Target)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
t.role = RoleFromGRPCField(v.GetRole())
|
||||
t.keys = v.GetKeys()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func TargetsToGRPC(ts []Target) (res []acl.EACLRecord_Target) {
|
||||
if ts != nil {
|
||||
res = make([]acl.EACLRecord_Target, 0, len(ts))
|
||||
|
||||
for i := range ts {
|
||||
res = append(res, *ts[i].ToGRPCMessage().(*acl.EACLRecord_Target))
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func TargetsFromGRPC(fs []acl.EACLRecord_Target) (res []Target, err error) {
|
||||
if fs != nil {
|
||||
res = make([]Target, len(fs))
|
||||
|
||||
for i := range fs {
|
||||
err = res[i].FromGRPCMessage(&fs[i])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (r *Record) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.EACLRecord
|
||||
|
||||
if r != nil {
|
||||
m = new(acl.EACLRecord)
|
||||
|
||||
m.SetOperation(OperationToGRPCField(r.op))
|
||||
m.SetAction(ActionToGRPCField(r.action))
|
||||
m.SetFilters(HeaderFiltersToGRPC(r.filters))
|
||||
m.SetTargets(TargetsToGRPC(r.targets))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (r *Record) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.EACLRecord)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
r.filters, err = HeaderFiltersFromGRPC(v.GetFilters())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r.targets, err = TargetsFromGRPC(v.GetTargets())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r.op = OperationFromGRPCField(v.GetOperation())
|
||||
r.action = ActionFromGRPCField(v.GetAction())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func RecordsToGRPC(ts []Record) (res []acl.EACLRecord) {
|
||||
if ts != nil {
|
||||
res = make([]acl.EACLRecord, 0, len(ts))
|
||||
|
||||
for i := range ts {
|
||||
res = append(res, *ts[i].ToGRPCMessage().(*acl.EACLRecord))
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func RecordsFromGRPC(fs []acl.EACLRecord) (res []Record, err error) {
|
||||
if fs != nil {
|
||||
res = make([]Record, len(fs))
|
||||
|
||||
for i := range fs {
|
||||
err = res[i].FromGRPCMessage(&fs[i])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (t *Table) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.EACLTable
|
||||
|
||||
if t != nil {
|
||||
m = new(acl.EACLTable)
|
||||
|
||||
m.SetVersion(t.version.ToGRPCMessage().(*refsGRPC.Version))
|
||||
m.SetContainerId(t.cid.ToGRPCMessage().(*refsGRPC.ContainerID))
|
||||
m.SetRecords(RecordsToGRPC(t.records))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (t *Table) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.EACLTable)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
cid := v.GetContainerId()
|
||||
if cid == nil {
|
||||
t.cid = nil
|
||||
} else {
|
||||
if t.cid == nil {
|
||||
t.cid = new(refs.ContainerID)
|
||||
}
|
||||
|
||||
err = t.cid.FromGRPCMessage(cid)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
version := v.GetVersion()
|
||||
if version == nil {
|
||||
t.version = nil
|
||||
} else {
|
||||
if t.version == nil {
|
||||
t.version = new(refs.Version)
|
||||
}
|
||||
|
||||
err = t.version.FromGRPCMessage(version)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
t.records, err = RecordsFromGRPC(v.GetRecords())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (l *TokenLifetime) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.BearerToken_Body_TokenLifetime
|
||||
|
||||
if l != nil {
|
||||
m = new(acl.BearerToken_Body_TokenLifetime)
|
||||
|
||||
m.SetExp(l.exp)
|
||||
m.SetIat(l.iat)
|
||||
m.SetNbf(l.nbf)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (l *TokenLifetime) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.BearerToken_Body_TokenLifetime)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
l.exp = v.GetExp()
|
||||
l.iat = v.GetIat()
|
||||
l.nbf = v.GetNbf()
|
||||
|
||||
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 {
|
||||
var m *acl.BearerToken_Body
|
||||
|
||||
if bt != nil {
|
||||
m = new(acl.BearerToken_Body)
|
||||
|
||||
m.SetOwnerId(bt.ownerID.ToGRPCMessage().(*refsGRPC.OwnerID))
|
||||
m.SetLifetime(bt.lifetime.ToGRPCMessage().(*acl.BearerToken_Body_TokenLifetime))
|
||||
m.SetEaclTable(bt.eacl.ToGRPCMessage().(*acl.EACLTable))
|
||||
m.SetAllowImpersonate(bt.impersonate)
|
||||
m.SetApeOverride(bt.apeOverride.ToGRPCMessage().(*acl.BearerToken_Body_APEOverride))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (bt *BearerTokenBody) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.BearerToken_Body)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
ownerID := v.GetOwnerId()
|
||||
if ownerID == nil {
|
||||
bt.ownerID = nil
|
||||
} else {
|
||||
if bt.ownerID == nil {
|
||||
bt.ownerID = new(refs.OwnerID)
|
||||
}
|
||||
|
||||
err = bt.ownerID.FromGRPCMessage(ownerID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
lifetime := v.GetLifetime()
|
||||
if lifetime == nil {
|
||||
bt.lifetime = nil
|
||||
} else {
|
||||
if bt.lifetime == nil {
|
||||
bt.lifetime = new(TokenLifetime)
|
||||
}
|
||||
|
||||
err = bt.lifetime.FromGRPCMessage(lifetime)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
eacl := v.GetEaclTable()
|
||||
if eacl == nil {
|
||||
bt.eacl = nil
|
||||
} else {
|
||||
if bt.eacl == nil {
|
||||
bt.eacl = new(Table)
|
||||
}
|
||||
|
||||
if err = bt.eacl.FromGRPCMessage(eacl); err != nil {
|
||||
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()
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (bt *BearerToken) ToGRPCMessage() grpc.Message {
|
||||
var m *acl.BearerToken
|
||||
|
||||
if bt != nil {
|
||||
m = new(acl.BearerToken)
|
||||
|
||||
m.SetBody(bt.body.ToGRPCMessage().(*acl.BearerToken_Body))
|
||||
m.SetSignature(bt.sig.ToGRPCMessage().(*refsGRPC.Signature))
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (bt *BearerToken) FromGRPCMessage(m grpc.Message) error {
|
||||
v, ok := m.(*acl.BearerToken)
|
||||
if !ok {
|
||||
return message.NewUnexpectedMessageType(m, v)
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
body := v.GetBody()
|
||||
if body == nil {
|
||||
bt.body = nil
|
||||
} else {
|
||||
if bt.body == nil {
|
||||
bt.body = new(BearerTokenBody)
|
||||
}
|
||||
|
||||
err = bt.body.FromGRPCMessage(body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
sig := v.GetSignature()
|
||||
if sig == nil {
|
||||
bt.sig = nil
|
||||
} else {
|
||||
if bt.sig == nil {
|
||||
bt.sig = new(refs.Signature)
|
||||
}
|
||||
|
||||
err = bt.sig.FromGRPCMessage(sig)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
33
apiv2/acl/filters.go
Normal file
33
apiv2/acl/filters.go
Normal file
|
@ -0,0 +1,33 @@
|
|||
package acl
|
||||
|
||||
// ObjectFilterPrefix is a prefix of key to object header value or property.
|
||||
const ObjectFilterPrefix = "$Object:"
|
||||
|
||||
const (
|
||||
// FilterObjectVersion is a filter key to "version" field of the object header.
|
||||
FilterObjectVersion = ObjectFilterPrefix + "version"
|
||||
|
||||
// FilterObjectID is a filter key to "object_id" field of the object.
|
||||
FilterObjectID = ObjectFilterPrefix + "objectID"
|
||||
|
||||
// FilterObjectContainerID is a filter key to "container_id" field of the object header.
|
||||
FilterObjectContainerID = ObjectFilterPrefix + "containerID"
|
||||
|
||||
// FilterObjectOwnerID is a filter key to "owner_id" field of the object header.
|
||||
FilterObjectOwnerID = ObjectFilterPrefix + "ownerID"
|
||||
|
||||
// FilterObjectCreationEpoch is a filter key to "creation_epoch" field of the object header.
|
||||
FilterObjectCreationEpoch = ObjectFilterPrefix + "creationEpoch"
|
||||
|
||||
// FilterObjectPayloadLength is a filter key to "payload_length" field of the object header.
|
||||
FilterObjectPayloadLength = ObjectFilterPrefix + "payloadLength"
|
||||
|
||||
// FilterObjectPayloadHash is a filter key to "payload_hash" field of the object header.
|
||||
FilterObjectPayloadHash = ObjectFilterPrefix + "payloadHash"
|
||||
|
||||
// FilterObjectType is a filter key to "object_type" field of the object header.
|
||||
FilterObjectType = ObjectFilterPrefix + "objectType"
|
||||
|
||||
// FilterObjectHomomorphicHash is a filter key to "homomorphic_hash" field of the object header.
|
||||
FilterObjectHomomorphicHash = ObjectFilterPrefix + "homomorphicHash"
|
||||
)
|
BIN
apiv2/acl/grpc/types_frostfs.pb.go
Normal file
BIN
apiv2/acl/grpc/types_frostfs.pb.go
Normal file
Binary file not shown.
64
apiv2/acl/grpc/types_frostfs_fuzz.go
Normal file
64
apiv2/acl/grpc/types_frostfs_fuzz.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
//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
|
||||
}
|
41
apiv2/acl/grpc/types_frostfs_test.go
Normal file
41
apiv2/acl/grpc/types_frostfs_test.go
Normal file
|
@ -0,0 +1,41 @@
|
|||
//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( |