Merge pull request #12639 from hashicorp/gogo-away
Remove the Rest of Gogo
This commit is contained in:
commit
d291b19d9c
|
@ -235,13 +235,12 @@ jobs:
|
||||||
sudo chmod -R a+Xr /usr/local/include/google/
|
sudo chmod -R a+Xr /usr/local/include/google/
|
||||||
rm protoc-*.zip
|
rm protoc-*.zip
|
||||||
- run:
|
- run:
|
||||||
name: Install gogo/protobuf
|
name: Install protobuf
|
||||||
command: |
|
command: |
|
||||||
gogo_version=$(go list -m github.com/gogo/protobuf | awk '{print $2}')
|
goproto_version=$(go list -m github.com/golang/protobuf | awk '{print $2}')
|
||||||
go install -v github.com/hashicorp/protoc-gen-go-binary@master
|
go install -v github.com/hashicorp/protoc-gen-go-binary@master
|
||||||
go install -v github.com/gogo/protobuf/protoc-gen-gofast@${gogo_version}
|
|
||||||
go install -v github.com/favadi/protoc-go-inject-tag@v1.3.0
|
go install -v github.com/favadi/protoc-go-inject-tag@v1.3.0
|
||||||
go install -v github.com/golang/protobuf/protoc-gen-go@v1.3.5
|
go install -v github.com/golang/protobuf/protoc-gen-go@${goproto_version}
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
command: make --always-make proto
|
command: make --always-make proto
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
# https://www.consul.io/docs/install#compiling-from-source
|
# https://www.consul.io/docs/install#compiling-from-source
|
||||||
|
|
||||||
SHELL = bash
|
SHELL = bash
|
||||||
GOGOVERSION?=$(shell grep github.com/gogo/protobuf go.mod | awk '{print $$2}')
|
GOPROTOVERSION?=$(shell grep github.com/golang/protobuf go.mod | awk '{print $$2}')
|
||||||
GOTOOLS = \
|
GOTOOLS = \
|
||||||
github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs@master \
|
github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs@master \
|
||||||
github.com/hashicorp/go-bindata/go-bindata@master \
|
github.com/hashicorp/go-bindata/go-bindata@master \
|
||||||
golang.org/x/tools/cmd/cover@master \
|
golang.org/x/tools/cmd/cover@master \
|
||||||
golang.org/x/tools/cmd/stringer@master \
|
golang.org/x/tools/cmd/stringer@master \
|
||||||
github.com/gogo/protobuf/protoc-gen-gofast@$(GOGOVERSION) \
|
github.com/golang/protobuf/protoc-gen-go@$(GOPROTOVERSION) \
|
||||||
github.com/hashicorp/protoc-gen-go-binary@master \
|
github.com/hashicorp/protoc-gen-go-binary@master \
|
||||||
github.com/vektra/mockery/cmd/mockery@master \
|
github.com/vektra/mockery/cmd/mockery@master \
|
||||||
github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 \
|
github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 \
|
||||||
|
@ -347,7 +347,7 @@ proto: $(PROTOGOFILES) $(PROTOGOBINFILES)
|
||||||
|
|
||||||
|
|
||||||
%.pb.go %.pb.binary.go: %.proto
|
%.pb.go %.pb.binary.go: %.proto
|
||||||
@$(SHELL) $(CURDIR)/build-support/scripts/proto-gen-entry.sh --grpc --import-replace "$<"
|
@$(SHELL) $(CURDIR)/build-support/scripts/proto-gen.sh --grpc --import-replace "$<"
|
||||||
|
|
||||||
.PHONY: module-versions
|
.PHONY: module-versions
|
||||||
# Print a list of modules which can be updated.
|
# Print a list of modules which can be updated.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: agent/grpc/private/internal/testservice/simple.proto
|
// source: agent/grpc/private/internal/testservice/simple.proto
|
||||||
|
|
||||||
package testservice
|
package testservice
|
||||||
|
@ -10,9 +10,7 @@ import (
|
||||||
grpc "google.golang.org/grpc"
|
grpc "google.golang.org/grpc"
|
||||||
codes "google.golang.org/grpc/codes"
|
codes "google.golang.org/grpc/codes"
|
||||||
status "google.golang.org/grpc/status"
|
status "google.golang.org/grpc/status"
|
||||||
io "io"
|
|
||||||
math "math"
|
math "math"
|
||||||
math_bits "math/bits"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
@ -39,26 +37,18 @@ func (*Req) ProtoMessage() {}
|
||||||
func (*Req) Descriptor() ([]byte, []int) {
|
func (*Req) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_98af0751f806f450, []int{0}
|
return fileDescriptor_98af0751f806f450, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Req) XXX_Unmarshal(b []byte) error {
|
func (m *Req) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return xxx_messageInfo_Req.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Req) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Req) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
return xxx_messageInfo_Req.Marshal(b, m, deterministic)
|
||||||
return xxx_messageInfo_Req.Marshal(b, m, deterministic)
|
|
||||||
} else {
|
|
||||||
b = b[:cap(b)]
|
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return b[:n], nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
func (m *Req) XXX_Merge(src proto.Message) {
|
func (m *Req) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Req.Merge(m, src)
|
xxx_messageInfo_Req.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Req) XXX_Size() int {
|
func (m *Req) XXX_Size() int {
|
||||||
return m.Size()
|
return xxx_messageInfo_Req.Size(m)
|
||||||
}
|
}
|
||||||
func (m *Req) XXX_DiscardUnknown() {
|
func (m *Req) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_Req.DiscardUnknown(m)
|
xxx_messageInfo_Req.DiscardUnknown(m)
|
||||||
|
@ -87,26 +77,18 @@ func (*Resp) ProtoMessage() {}
|
||||||
func (*Resp) Descriptor() ([]byte, []int) {
|
func (*Resp) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_98af0751f806f450, []int{1}
|
return fileDescriptor_98af0751f806f450, []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Resp) XXX_Unmarshal(b []byte) error {
|
func (m *Resp) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return xxx_messageInfo_Resp.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Resp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Resp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
return xxx_messageInfo_Resp.Marshal(b, m, deterministic)
|
||||||
return xxx_messageInfo_Resp.Marshal(b, m, deterministic)
|
|
||||||
} else {
|
|
||||||
b = b[:cap(b)]
|
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return b[:n], nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
func (m *Resp) XXX_Merge(src proto.Message) {
|
func (m *Resp) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Resp.Merge(m, src)
|
xxx_messageInfo_Resp.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Resp) XXX_Size() int {
|
func (m *Resp) XXX_Size() int {
|
||||||
return m.Size()
|
return xxx_messageInfo_Resp.Size(m)
|
||||||
}
|
}
|
||||||
func (m *Resp) XXX_DiscardUnknown() {
|
func (m *Resp) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_Resp.DiscardUnknown(m)
|
xxx_messageInfo_Resp.DiscardUnknown(m)
|
||||||
|
@ -138,30 +120,28 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_98af0751f806f450 = []byte{
|
var fileDescriptor_98af0751f806f450 = []byte{
|
||||||
// 214 bytes of a gzipped FileDescriptorProto
|
// 189 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x49, 0x4c, 0x4f, 0xcd,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x8f, 0xcd, 0x0a, 0x82, 0x40,
|
||||||
0x2b, 0xd1, 0x4f, 0x2f, 0x2a, 0x48, 0xd6, 0x2f, 0x28, 0xca, 0x2c, 0x4b, 0x2c, 0x49, 0xd5, 0xcf,
|
0x14, 0x85, 0xb3, 0x44, 0xf0, 0xb6, 0xa9, 0x59, 0x45, 0x8b, 0x08, 0x21, 0x68, 0xe5, 0x84, 0xf5,
|
||||||
0xcc, 0x2b, 0x49, 0x2d, 0xca, 0x4b, 0xcc, 0xd1, 0x2f, 0x49, 0x2d, 0x2e, 0x29, 0x4e, 0x2d, 0x2a,
|
0x08, 0xe1, 0xb2, 0xc5, 0xf8, 0x04, 0x93, 0x5c, 0x6c, 0xc0, 0xf9, 0x71, 0xe6, 0x62, 0xaf, 0x1f,
|
||||||
0xcb, 0x4c, 0x4e, 0xd5, 0x2f, 0xce, 0xcc, 0x2d, 0xc8, 0x49, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9,
|
0x0a, 0x91, 0xb8, 0x6a, 0xfb, 0xdd, 0xef, 0x1e, 0xce, 0x81, 0x9b, 0x6c, 0xd0, 0x10, 0x6f, 0xbc,
|
||||||
0x17, 0xe2, 0x46, 0x92, 0x51, 0x52, 0xe5, 0x62, 0x0e, 0x4a, 0x2d, 0x14, 0x92, 0xe3, 0xe2, 0x72,
|
0xab, 0xb9, 0xf3, 0xaa, 0x97, 0x84, 0x5c, 0x19, 0x42, 0x6f, 0x64, 0xcb, 0x09, 0x03, 0x05, 0xf4,
|
||||||
0x49, 0x2c, 0x49, 0x4c, 0x4e, 0x05, 0xe9, 0x96, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x42, 0x12,
|
0xbd, 0xaa, 0x91, 0x07, 0xa5, 0x5d, 0x8b, 0xb9, 0xf3, 0x96, 0x2c, 0x5b, 0x4f, 0x2e, 0xd9, 0x09,
|
||||||
0x51, 0x72, 0xe3, 0x62, 0x09, 0x4a, 0x2d, 0x2e, 0x00, 0xa9, 0x0b, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d,
|
0x56, 0x02, 0x3b, 0x76, 0x00, 0xb8, 0x4b, 0x92, 0x35, 0x0e, 0xdf, 0xbb, 0xe8, 0x18, 0x9d, 0x53,
|
||||||
0xf2, 0x4b, 0xcc, 0x4d, 0x85, 0xa9, 0x43, 0x88, 0xa0, 0x99, 0xc3, 0x84, 0x6e, 0x8e, 0x51, 0x2e,
|
0x31, 0x21, 0x59, 0x09, 0xb1, 0xc0, 0xe0, 0x06, 0xaf, 0x42, 0xdf, 0xa3, 0x7f, 0x48, 0x8d, 0x5f,
|
||||||
0x17, 0x5b, 0x30, 0xd8, 0x2d, 0x42, 0x46, 0x5c, 0x9c, 0xc1, 0xf9, 0xb9, 0xa9, 0x25, 0x19, 0x99,
|
0xef, 0x47, 0x66, 0x39, 0xcb, 0x79, 0x4e, 0xa1, 0x21, 0xa9, 0xc6, 0x2e, 0xac, 0x80, 0xb4, 0xb2,
|
||||||
0x79, 0xe9, 0x42, 0x02, 0x7a, 0x48, 0x6e, 0xd2, 0x0b, 0x4a, 0x2d, 0x94, 0x12, 0x44, 0x13, 0x29,
|
0x1a, 0xe9, 0xa5, 0x4c, 0xc3, 0x36, 0xf9, 0xa4, 0x53, 0x2e, 0xb0, 0xdb, 0x6f, 0x67, 0x24, 0xb8,
|
||||||
0x2e, 0x50, 0x62, 0x10, 0xd2, 0xe7, 0x62, 0x71, 0xcb, 0xc9, 0x2f, 0x27, 0x52, 0xb9, 0x01, 0xa3,
|
0x6c, 0xc1, 0x38, 0xc4, 0x65, 0x6b, 0xdf, 0x7f, 0xea, 0x97, 0xe8, 0x99, 0x8c, 0x8b, 0xaf, 0x9f,
|
||||||
0x93, 0xc0, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe3,
|
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5c, 0xf5, 0xcb, 0x29, 0x01, 0x00, 0x00,
|
||||||
0xb1, 0x1c, 0x43, 0x12, 0x1b, 0x38, 0x0c, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x76, 0xce,
|
|
||||||
0x88, 0x7d, 0x3b, 0x01, 0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ context.Context
|
var _ context.Context
|
||||||
var _ grpc.ClientConn
|
var _ grpc.ClientConnInterface
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
// is compatible with the grpc package it is being compiled against.
|
// is compatible with the grpc package it is being compiled against.
|
||||||
const _ = grpc.SupportPackageIsVersion4
|
const _ = grpc.SupportPackageIsVersion6
|
||||||
|
|
||||||
// SimpleClient is the client API for Simple service.
|
// SimpleClient is the client API for Simple service.
|
||||||
//
|
//
|
||||||
|
@ -172,10 +152,10 @@ type SimpleClient interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type simpleClient struct {
|
type simpleClient struct {
|
||||||
cc *grpc.ClientConn
|
cc grpc.ClientConnInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSimpleClient(cc *grpc.ClientConn) SimpleClient {
|
func NewSimpleClient(cc grpc.ClientConnInterface) SimpleClient {
|
||||||
return &simpleClient{cc}
|
return &simpleClient{cc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,414 +278,3 @@ var _Simple_serviceDesc = grpc.ServiceDesc{
|
||||||
},
|
},
|
||||||
Metadata: "agent/grpc/private/internal/testservice/simple.proto",
|
Metadata: "agent/grpc/private/internal/testservice/simple.proto",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Req) Marshal() (dAtA []byte, err error) {
|
|
||||||
size := m.Size()
|
|
||||||
dAtA = make([]byte, size)
|
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return dAtA[:n], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Req) MarshalTo(dAtA []byte) (int, error) {
|
|
||||||
size := m.Size()
|
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Req) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|
||||||
i := len(dAtA)
|
|
||||||
_ = i
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
i -= len(m.XXX_unrecognized)
|
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
if len(m.Datacenter) > 0 {
|
|
||||||
i -= len(m.Datacenter)
|
|
||||||
copy(dAtA[i:], m.Datacenter)
|
|
||||||
i = encodeVarintSimple(dAtA, i, uint64(len(m.Datacenter)))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0xa
|
|
||||||
}
|
|
||||||
return len(dAtA) - i, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Resp) Marshal() (dAtA []byte, err error) {
|
|
||||||
size := m.Size()
|
|
||||||
dAtA = make([]byte, size)
|
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return dAtA[:n], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Resp) MarshalTo(dAtA []byte) (int, error) {
|
|
||||||
size := m.Size()
|
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Resp) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|
||||||
i := len(dAtA)
|
|
||||||
_ = i
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
i -= len(m.XXX_unrecognized)
|
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
if len(m.Datacenter) > 0 {
|
|
||||||
i -= len(m.Datacenter)
|
|
||||||
copy(dAtA[i:], m.Datacenter)
|
|
||||||
i = encodeVarintSimple(dAtA, i, uint64(len(m.Datacenter)))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0x12
|
|
||||||
}
|
|
||||||
if len(m.ServerName) > 0 {
|
|
||||||
i -= len(m.ServerName)
|
|
||||||
copy(dAtA[i:], m.ServerName)
|
|
||||||
i = encodeVarintSimple(dAtA, i, uint64(len(m.ServerName)))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0xa
|
|
||||||
}
|
|
||||||
return len(dAtA) - i, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func encodeVarintSimple(dAtA []byte, offset int, v uint64) int {
|
|
||||||
offset -= sovSimple(v)
|
|
||||||
base := offset
|
|
||||||
for v >= 1<<7 {
|
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
|
||||||
v >>= 7
|
|
||||||
offset++
|
|
||||||
}
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
return base
|
|
||||||
}
|
|
||||||
func (m *Req) Size() (n int) {
|
|
||||||
if m == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
l = len(m.Datacenter)
|
|
||||||
if l > 0 {
|
|
||||||
n += 1 + l + sovSimple(uint64(l))
|
|
||||||
}
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
n += len(m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Resp) Size() (n int) {
|
|
||||||
if m == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
l = len(m.ServerName)
|
|
||||||
if l > 0 {
|
|
||||||
n += 1 + l + sovSimple(uint64(l))
|
|
||||||
}
|
|
||||||
l = len(m.Datacenter)
|
|
||||||
if l > 0 {
|
|
||||||
n += 1 + l + sovSimple(uint64(l))
|
|
||||||
}
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
n += len(m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
func sovSimple(x uint64) (n int) {
|
|
||||||
return (math_bits.Len64(x|1) + 6) / 7
|
|
||||||
}
|
|
||||||
func sozSimple(x uint64) (n int) {
|
|
||||||
return sovSimple(uint64((x << 1) ^ uint64((int64(x) >> 63))))
|
|
||||||
}
|
|
||||||
func (m *Req) Unmarshal(dAtA []byte) error {
|
|
||||||
l := len(dAtA)
|
|
||||||
iNdEx := 0
|
|
||||||
for iNdEx < l {
|
|
||||||
preIndex := iNdEx
|
|
||||||
var wire uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
wire |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fieldNum := int32(wire >> 3)
|
|
||||||
wireType := int(wire & 0x7)
|
|
||||||
if wireType == 4 {
|
|
||||||
return fmt.Errorf("proto: Req: wiretype end group for non-group")
|
|
||||||
}
|
|
||||||
if fieldNum <= 0 {
|
|
||||||
return fmt.Errorf("proto: Req: illegal tag %d (wire type %d)", fieldNum, wire)
|
|
||||||
}
|
|
||||||
switch fieldNum {
|
|
||||||
case 1:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Datacenter", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLen |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLen := int(stringLen)
|
|
||||||
if intStringLen < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.Datacenter = string(dAtA[iNdEx:postIndex])
|
|
||||||
iNdEx = postIndex
|
|
||||||
default:
|
|
||||||
iNdEx = preIndex
|
|
||||||
skippy, err := skipSimple(dAtA[iNdEx:])
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if (iNdEx + skippy) > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
|
|
||||||
iNdEx += skippy
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if iNdEx > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (m *Resp) Unmarshal(dAtA []byte) error {
|
|
||||||
l := len(dAtA)
|
|
||||||
iNdEx := 0
|
|
||||||
for iNdEx < l {
|
|
||||||
preIndex := iNdEx
|
|
||||||
var wire uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
wire |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fieldNum := int32(wire >> 3)
|
|
||||||
wireType := int(wire & 0x7)
|
|
||||||
if wireType == 4 {
|
|
||||||
return fmt.Errorf("proto: Resp: wiretype end group for non-group")
|
|
||||||
}
|
|
||||||
if fieldNum <= 0 {
|
|
||||||
return fmt.Errorf("proto: Resp: illegal tag %d (wire type %d)", fieldNum, wire)
|
|
||||||
}
|
|
||||||
switch fieldNum {
|
|
||||||
case 1:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field ServerName", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLen |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLen := int(stringLen)
|
|
||||||
if intStringLen < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.ServerName = string(dAtA[iNdEx:postIndex])
|
|
||||||
iNdEx = postIndex
|
|
||||||
case 2:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Datacenter", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLen |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLen := int(stringLen)
|
|
||||||
if intStringLen < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.Datacenter = string(dAtA[iNdEx:postIndex])
|
|
||||||
iNdEx = postIndex
|
|
||||||
default:
|
|
||||||
iNdEx = preIndex
|
|
||||||
skippy, err := skipSimple(dAtA[iNdEx:])
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
|
||||||
return ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if (iNdEx + skippy) > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
|
|
||||||
iNdEx += skippy
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if iNdEx > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func skipSimple(dAtA []byte) (n int, err error) {
|
|
||||||
l := len(dAtA)
|
|
||||||
iNdEx := 0
|
|
||||||
depth := 0
|
|
||||||
for iNdEx < l {
|
|
||||||
var wire uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
wire |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wireType := int(wire & 0x7)
|
|
||||||
switch wireType {
|
|
||||||
case 0:
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
iNdEx++
|
|
||||||
if dAtA[iNdEx-1] < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
iNdEx += 8
|
|
||||||
case 2:
|
|
||||||
var length int
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowSimple
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
length |= (int(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if length < 0 {
|
|
||||||
return 0, ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
iNdEx += length
|
|
||||||
case 3:
|
|
||||||
depth++
|
|
||||||
case 4:
|
|
||||||
if depth == 0 {
|
|
||||||
return 0, ErrUnexpectedEndOfGroupSimple
|
|
||||||
}
|
|
||||||
depth--
|
|
||||||
case 5:
|
|
||||||
iNdEx += 4
|
|
||||||
default:
|
|
||||||
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
|
|
||||||
}
|
|
||||||
if iNdEx < 0 {
|
|
||||||
return 0, ErrInvalidLengthSimple
|
|
||||||
}
|
|
||||||
if depth == 0 {
|
|
||||||
return iNdEx, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
ErrInvalidLengthSimple = fmt.Errorf("proto: negative length found during unmarshaling")
|
|
||||||
ErrIntOverflowSimple = fmt.Errorf("proto: integer overflow")
|
|
||||||
ErrUnexpectedEndOfGroupSimple = fmt.Errorf("proto: unexpected end of group")
|
|
||||||
)
|
|
||||||
|
|
|
@ -26,7 +26,6 @@ import (
|
||||||
grpc "github.com/hashicorp/consul/agent/grpc/private"
|
grpc "github.com/hashicorp/consul/agent/grpc/private"
|
||||||
"github.com/hashicorp/consul/agent/structs"
|
"github.com/hashicorp/consul/agent/structs"
|
||||||
"github.com/hashicorp/consul/api"
|
"github.com/hashicorp/consul/api"
|
||||||
"github.com/hashicorp/consul/proto/pbcommongogo"
|
|
||||||
"github.com/hashicorp/consul/proto/pbservice"
|
"github.com/hashicorp/consul/proto/pbservice"
|
||||||
"github.com/hashicorp/consul/proto/pbsubscribe"
|
"github.com/hashicorp/consul/proto/pbsubscribe"
|
||||||
"github.com/hashicorp/consul/types"
|
"github.com/hashicorp/consul/types"
|
||||||
|
@ -124,7 +123,7 @@ func TestServer_Subscribe_IntegrationWithBackend(t *testing.T) {
|
||||||
streamHandle, err := streamClient.Subscribe(ctx, &pbsubscribe.SubscribeRequest{
|
streamHandle, err := streamClient.Subscribe(ctx, &pbsubscribe.SubscribeRequest{
|
||||||
Topic: pbsubscribe.Topic_ServiceHealth,
|
Topic: pbsubscribe.Topic_ServiceHealth,
|
||||||
Key: "redis",
|
Key: "redis",
|
||||||
Namespace: pbcommongogo.DefaultEnterpriseMeta.Namespace,
|
Namespace: pbcommon.DefaultEnterpriseMeta.Namespace,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
@ -489,7 +488,7 @@ func TestServer_Subscribe_IntegrationWithBackend_ForwardToDC(t *testing.T) {
|
||||||
Topic: pbsubscribe.Topic_ServiceHealth,
|
Topic: pbsubscribe.Topic_ServiceHealth,
|
||||||
Key: "redis",
|
Key: "redis",
|
||||||
Datacenter: "dc2",
|
Datacenter: "dc2",
|
||||||
Namespace: pbcommongogo.DefaultEnterpriseMeta.Namespace,
|
Namespace: pbcommon.DefaultEnterpriseMeta.Namespace,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
go recvEvents(chEvents, streamHandle)
|
go recvEvents(chEvents, streamHandle)
|
||||||
|
@ -746,7 +745,7 @@ node "node1" {
|
||||||
Topic: pbsubscribe.Topic_ServiceHealth,
|
Topic: pbsubscribe.Topic_ServiceHealth,
|
||||||
Key: "foo",
|
Key: "foo",
|
||||||
Token: token,
|
Token: token,
|
||||||
Namespace: pbcommongogo.DefaultEnterpriseMeta.Namespace,
|
Namespace: pbcommon.DefaultEnterpriseMeta.Namespace,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/hashicorp/consul/proto/pbcommon"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -18,7 +17,7 @@ import (
|
||||||
|
|
||||||
"github.com/hashicorp/consul/agent/structs"
|
"github.com/hashicorp/consul/agent/structs"
|
||||||
"github.com/hashicorp/consul/agent/submatview"
|
"github.com/hashicorp/consul/agent/submatview"
|
||||||
"github.com/hashicorp/consul/proto/pbcommongogo"
|
"github.com/hashicorp/consul/proto/pbcommon"
|
||||||
"github.com/hashicorp/consul/proto/pbservice"
|
"github.com/hashicorp/consul/proto/pbservice"
|
||||||
"github.com/hashicorp/consul/proto/pbsubscribe"
|
"github.com/hashicorp/consul/proto/pbsubscribe"
|
||||||
"github.com/hashicorp/consul/types"
|
"github.com/hashicorp/consul/types"
|
||||||
|
@ -75,7 +74,7 @@ func TestHealthView_IntegrationWithStore_WithEmptySnapshot(t *testing.T) {
|
||||||
t.Skip("too slow for testing.Short")
|
t.Skip("too slow for testing.Short")
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace := getNamespace(pbcommongogo.DefaultEnterpriseMeta.Namespace)
|
namespace := getNamespace(pbcommon.DefaultEnterpriseMeta.Namespace)
|
||||||
streamClient := newStreamClient(validateNamespace(namespace))
|
streamClient := newStreamClient(validateNamespace(namespace))
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetToken helps implement the QueryOptionsCompat interface
|
// GetToken helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetToken() string {
|
func (m *QueryOptions) GetToken() string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.Token
|
return m.Token
|
||||||
|
@ -14,7 +13,6 @@ func (m *QueryOptions) GetToken() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMinQueryIndex helps implement the QueryOptionsCompat interface
|
// GetMinQueryIndex helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetMinQueryIndex() uint64 {
|
func (m *QueryOptions) GetMinQueryIndex() uint64 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.MinQueryIndex
|
return m.MinQueryIndex
|
||||||
|
@ -23,7 +21,6 @@ func (m *QueryOptions) GetMinQueryIndex() uint64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMaxQueryTime helps implement the QueryOptionsCompat interface
|
// GetMaxQueryTime helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetMaxQueryTime() (time.Duration, error) {
|
func (m *QueryOptions) GetMaxQueryTime() (time.Duration, error) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.MaxQueryTime, nil
|
return m.MaxQueryTime, nil
|
||||||
|
@ -32,7 +29,6 @@ func (m *QueryOptions) GetMaxQueryTime() (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAllowStale helps implement the QueryOptionsCompat interface
|
// GetAllowStale helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetAllowStale() bool {
|
func (m *QueryOptions) GetAllowStale() bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.AllowStale
|
return m.AllowStale
|
||||||
|
@ -41,7 +37,6 @@ func (m *QueryOptions) GetAllowStale() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRequireConsistent helps implement the QueryOptionsCompat interface
|
// GetRequireConsistent helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetRequireConsistent() bool {
|
func (m *QueryOptions) GetRequireConsistent() bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.RequireConsistent
|
return m.RequireConsistent
|
||||||
|
@ -50,7 +45,6 @@ func (m *QueryOptions) GetRequireConsistent() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUseCache helps implement the QueryOptionsCompat interface
|
// GetUseCache helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetUseCache() bool {
|
func (m *QueryOptions) GetUseCache() bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.UseCache
|
return m.UseCache
|
||||||
|
@ -59,7 +53,6 @@ func (m *QueryOptions) GetUseCache() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMaxStaleDuration helps implement the QueryOptionsCompat interface
|
// GetMaxStaleDuration helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetMaxStaleDuration() (time.Duration, error) {
|
func (m *QueryOptions) GetMaxStaleDuration() (time.Duration, error) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.MaxStaleDuration, nil
|
return m.MaxStaleDuration, nil
|
||||||
|
@ -68,7 +61,6 @@ func (m *QueryOptions) GetMaxStaleDuration() (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMaxAge helps implement the QueryOptionsCompat interface
|
// GetMaxAge helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetMaxAge() (time.Duration, error) {
|
func (m *QueryOptions) GetMaxAge() (time.Duration, error) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.MaxAge, nil
|
return m.MaxAge, nil
|
||||||
|
@ -77,7 +69,6 @@ func (m *QueryOptions) GetMaxAge() (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMustRevalidate helps implement the QueryOptionsCompat interface
|
// GetMustRevalidate helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetMustRevalidate() bool {
|
func (m *QueryOptions) GetMustRevalidate() bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.MustRevalidate
|
return m.MustRevalidate
|
||||||
|
@ -86,7 +77,6 @@ func (m *QueryOptions) GetMustRevalidate() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetStaleIfError helps implement the QueryOptionsCompat interface
|
// GetStaleIfError helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetStaleIfError() (time.Duration, error) {
|
func (m *QueryOptions) GetStaleIfError() (time.Duration, error) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.StaleIfError, nil
|
return m.StaleIfError, nil
|
||||||
|
@ -95,7 +85,6 @@ func (m *QueryOptions) GetStaleIfError() (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetFilter helps implement the QueryOptionsCompat interface
|
// GetFilter helps implement the QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryOptions) GetFilter() string {
|
func (m *QueryOptions) GetFilter() string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.Filter
|
return m.Filter
|
||||||
|
@ -104,67 +93,56 @@ func (m *QueryOptions) GetFilter() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetToken is needed to implement the structs.QueryOptionsCompat interface
|
// SetToken is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetToken(token string) {
|
func (q *QueryOptions) SetToken(token string) {
|
||||||
q.Token = token
|
q.Token = token
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMinQueryIndex is needed to implement the structs.QueryOptionsCompat interface
|
// SetMinQueryIndex is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetMinQueryIndex(minQueryIndex uint64) {
|
func (q *QueryOptions) SetMinQueryIndex(minQueryIndex uint64) {
|
||||||
q.MinQueryIndex = minQueryIndex
|
q.MinQueryIndex = minQueryIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMaxQueryTime is needed to implement the structs.QueryOptionsCompat interface
|
// SetMaxQueryTime is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetMaxQueryTime(maxQueryTime time.Duration) {
|
func (q *QueryOptions) SetMaxQueryTime(maxQueryTime time.Duration) {
|
||||||
q.MaxQueryTime = maxQueryTime
|
q.MaxQueryTime = maxQueryTime
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetAllowStale is needed to implement the structs.QueryOptionsCompat interface
|
// SetAllowStale is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetAllowStale(allowStale bool) {
|
func (q *QueryOptions) SetAllowStale(allowStale bool) {
|
||||||
q.AllowStale = allowStale
|
q.AllowStale = allowStale
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetRequireConsistent is needed to implement the structs.QueryOptionsCompat interface
|
// SetRequireConsistent is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetRequireConsistent(requireConsistent bool) {
|
func (q *QueryOptions) SetRequireConsistent(requireConsistent bool) {
|
||||||
q.RequireConsistent = requireConsistent
|
q.RequireConsistent = requireConsistent
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUseCache is needed to implement the structs.QueryOptionsCompat interface
|
// SetUseCache is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetUseCache(useCache bool) {
|
func (q *QueryOptions) SetUseCache(useCache bool) {
|
||||||
q.UseCache = useCache
|
q.UseCache = useCache
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMaxStaleDuration is needed to implement the structs.QueryOptionsCompat interface
|
// SetMaxStaleDuration is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetMaxStaleDuration(maxStaleDuration time.Duration) {
|
func (q *QueryOptions) SetMaxStaleDuration(maxStaleDuration time.Duration) {
|
||||||
q.MaxStaleDuration = maxStaleDuration
|
q.MaxStaleDuration = maxStaleDuration
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMaxAge is needed to implement the structs.QueryOptionsCompat interface
|
// SetMaxAge is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetMaxAge(maxAge time.Duration) {
|
func (q *QueryOptions) SetMaxAge(maxAge time.Duration) {
|
||||||
q.MaxAge = maxAge
|
q.MaxAge = maxAge
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMustRevalidate is needed to implement the structs.QueryOptionsCompat interface
|
// SetMustRevalidate is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetMustRevalidate(mustRevalidate bool) {
|
func (q *QueryOptions) SetMustRevalidate(mustRevalidate bool) {
|
||||||
q.MustRevalidate = mustRevalidate
|
q.MustRevalidate = mustRevalidate
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetStaleIfError is needed to implement the structs.QueryOptionsCompat interface
|
// SetStaleIfError is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetStaleIfError(staleIfError time.Duration) {
|
func (q *QueryOptions) SetStaleIfError(staleIfError time.Duration) {
|
||||||
q.StaleIfError = staleIfError
|
q.StaleIfError = staleIfError
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetFilter is needed to implement the structs.QueryOptionsCompat interface
|
// SetFilter is needed to implement the structs.QueryOptionsCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryOptions) SetFilter(filter string) {
|
func (q *QueryOptions) SetFilter(filter string) {
|
||||||
q.Filter = filter
|
q.Filter = filter
|
||||||
}
|
}
|
||||||
|
@ -178,7 +156,6 @@ func (m *QueryMeta) GetIndex() uint64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetLastContact helps implement the QueryMetaCompat interface
|
// GetLastContact helps implement the QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryMeta) GetLastContact() (time.Duration, error) {
|
func (m *QueryMeta) GetLastContact() (time.Duration, error) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.LastContact, nil
|
return m.LastContact, nil
|
||||||
|
@ -187,7 +164,6 @@ func (m *QueryMeta) GetLastContact() (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetKnownLeader helps implement the QueryMetaCompat interface
|
// GetKnownLeader helps implement the QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryMeta) GetKnownLeader() bool {
|
func (m *QueryMeta) GetKnownLeader() bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.KnownLeader
|
return m.KnownLeader
|
||||||
|
@ -196,7 +172,6 @@ func (m *QueryMeta) GetKnownLeader() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetConsistencyLevel helps implement the QueryMetaCompat interface
|
// GetConsistencyLevel helps implement the QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.pb.go
|
|
||||||
func (m *QueryMeta) GetConsistencyLevel() string {
|
func (m *QueryMeta) GetConsistencyLevel() string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.ConsistencyLevel
|
return m.ConsistencyLevel
|
||||||
|
@ -205,25 +180,21 @@ func (m *QueryMeta) GetConsistencyLevel() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetLastContact is needed to implement the structs.QueryMetaCompat interface
|
// SetLastContact is needed to implement the structs.QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryMeta) SetLastContact(lastContact time.Duration) {
|
func (q *QueryMeta) SetLastContact(lastContact time.Duration) {
|
||||||
q.LastContact = lastContact
|
q.LastContact = lastContact
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetKnownLeader is needed to implement the structs.QueryMetaCompat interface
|
// SetKnownLeader is needed to implement the structs.QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryMeta) SetKnownLeader(knownLeader bool) {
|
func (q *QueryMeta) SetKnownLeader(knownLeader bool) {
|
||||||
q.KnownLeader = knownLeader
|
q.KnownLeader = knownLeader
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetIndex is needed to implement the structs.QueryMetaCompat interface
|
// SetIndex is needed to implement the structs.QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryMeta) SetIndex(index uint64) {
|
func (q *QueryMeta) SetIndex(index uint64) {
|
||||||
q.Index = index
|
q.Index = index
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetConsistencyLevel is needed to implement the structs.QueryMetaCompat interface
|
// SetConsistencyLevel is needed to implement the structs.QueryMetaCompat interface
|
||||||
// Copied from proto/pbcommongogo/common.go
|
|
||||||
func (q *QueryMeta) SetConsistencyLevel(consistencyLevel string) {
|
func (q *QueryMeta) SetConsistencyLevel(consistencyLevel string) {
|
||||||
q.ConsistencyLevel = consistencyLevel
|
q.ConsistencyLevel = consistencyLevel
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"github.com/hashicorp/serf/coordinate"
|
"github.com/hashicorp/serf/coordinate"
|
||||||
"github.com/mitchellh/hashstructure"
|
"github.com/mitchellh/hashstructure"
|
||||||
|
|
||||||
gtype "github.com/gogo/protobuf/types"
|
|
||||||
ptypes "github.com/golang/protobuf/ptypes"
|
ptypes "github.com/golang/protobuf/ptypes"
|
||||||
"github.com/hashicorp/consul/acl"
|
"github.com/hashicorp/consul/acl"
|
||||||
"github.com/hashicorp/consul/agent/cache"
|
"github.com/hashicorp/consul/agent/cache"
|
||||||
|
@ -2686,25 +2685,6 @@ func (m MessageType) String() string {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func DurationToProtoGogo(d time.Duration) gtype.Duration {
|
|
||||||
return *gtype.DurationProto(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
func DurationFromProtoGogo(d gtype.Duration) time.Duration {
|
|
||||||
duration, _ := gtype.DurationFromProto(&d)
|
|
||||||
return duration
|
|
||||||
}
|
|
||||||
|
|
||||||
func TimeFromProtoGogo(s *gtype.Timestamp) time.Time {
|
|
||||||
time, _ := gtype.TimestampFromProto(s)
|
|
||||||
return time
|
|
||||||
}
|
|
||||||
|
|
||||||
func TimeToProtoGogo(s time.Time) *gtype.Timestamp {
|
|
||||||
proto, _ := gtype.TimestampProto(s)
|
|
||||||
return proto
|
|
||||||
}
|
|
||||||
|
|
||||||
func DurationToProto(d time.Duration) *duration.Duration {
|
func DurationToProto(d time.Duration) *duration.Duration {
|
||||||
return ptypes.DurationProto(d)
|
return ptypes.DurationProto(d)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
|
|
||||||
"github.com/hashicorp/consul/agent/cache"
|
"github.com/hashicorp/consul/agent/cache"
|
||||||
"github.com/hashicorp/consul/lib/ttlcache"
|
"github.com/hashicorp/consul/lib/ttlcache"
|
||||||
"github.com/hashicorp/consul/proto/pbcommongogo"
|
"github.com/hashicorp/consul/proto/pbcommon"
|
||||||
"github.com/hashicorp/consul/proto/pbservice"
|
"github.com/hashicorp/consul/proto/pbservice"
|
||||||
"github.com/hashicorp/consul/proto/pbsubscribe"
|
"github.com/hashicorp/consul/proto/pbsubscribe"
|
||||||
"github.com/hashicorp/consul/sdk/testutil/retry"
|
"github.com/hashicorp/consul/sdk/testutil/retry"
|
||||||
|
@ -25,7 +25,7 @@ func TestStore_Get(t *testing.T) {
|
||||||
go store.Run(ctx)
|
go store.Run(ctx)
|
||||||
|
|
||||||
req := &fakeRequest{
|
req := &fakeRequest{
|
||||||
client: NewTestStreamingClient(pbcommongogo.DefaultEnterpriseMeta.Namespace),
|
client: NewTestStreamingClient(pbcommon.DefaultEnterpriseMeta.Namespace),
|
||||||
}
|
}
|
||||||
req.client.QueueEvents(
|
req.client.QueueEvents(
|
||||||
newEndOfSnapshotEvent(2),
|
newEndOfSnapshotEvent(2),
|
||||||
|
@ -232,7 +232,7 @@ func (r *fakeRequest) NewMaterializer() (*Materializer, error) {
|
||||||
Token: "abcd",
|
Token: "abcd",
|
||||||
Datacenter: "dc1",
|
Datacenter: "dc1",
|
||||||
Index: index,
|
Index: index,
|
||||||
Namespace: pbcommongogo.DefaultEnterpriseMeta.Namespace,
|
Namespace: pbcommon.DefaultEnterpriseMeta.Namespace,
|
||||||
}
|
}
|
||||||
return req
|
return req
|
||||||
},
|
},
|
||||||
|
@ -292,7 +292,7 @@ func TestStore_Notify(t *testing.T) {
|
||||||
go store.Run(ctx)
|
go store.Run(ctx)
|
||||||
|
|
||||||
req := &fakeRequest{
|
req := &fakeRequest{
|
||||||
client: NewTestStreamingClient(pbcommongogo.DefaultEnterpriseMeta.Namespace),
|
client: NewTestStreamingClient(pbcommon.DefaultEnterpriseMeta.Namespace),
|
||||||
}
|
}
|
||||||
req.client.QueueEvents(
|
req.client.QueueEvents(
|
||||||
newEndOfSnapshotEvent(2),
|
newEndOfSnapshotEvent(2),
|
||||||
|
@ -361,7 +361,7 @@ func TestStore_Notify_ManyRequests(t *testing.T) {
|
||||||
go store.Run(ctx)
|
go store.Run(ctx)
|
||||||
|
|
||||||
req := &fakeRequest{
|
req := &fakeRequest{
|
||||||
client: NewTestStreamingClient(pbcommongogo.DefaultEnterpriseMeta.Namespace),
|
client: NewTestStreamingClient(pbcommon.DefaultEnterpriseMeta.Namespace),
|
||||||
}
|
}
|
||||||
req.client.QueueEvents(newEndOfSnapshotEvent(2))
|
req.client.QueueEvents(newEndOfSnapshotEvent(2))
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ func TestStore_Run_ExpiresEntries(t *testing.T) {
|
||||||
go store.Run(ctx)
|
go store.Run(ctx)
|
||||||
|
|
||||||
req := &fakeRequest{
|
req := &fakeRequest{
|
||||||
client: NewTestStreamingClient(pbcommongogo.DefaultEnterpriseMeta.Namespace),
|
client: NewTestStreamingClient(pbcommon.DefaultEnterpriseMeta.Namespace),
|
||||||
}
|
}
|
||||||
req.client.QueueEvents(newEndOfSnapshotEvent(2))
|
req.client.QueueEvents(newEndOfSnapshotEvent(2))
|
||||||
|
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
FILENAME=$3
|
|
||||||
echo $PWD
|
|
||||||
if [[ "$FILENAME" =~ .*pbcommon/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
elif [[ "$FILENAME" =~ .*pbconnect/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
elif [[ "$FILENAME" =~ .*pbconfig/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
elif [[ "$FILENAME" =~ .*pbautoconf/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
elif [[ "$FILENAME" =~ .*pbservice/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
elif [[ "$FILENAME" =~ .*pbsubscribe/.* ]]; then
|
|
||||||
echo "$FILENAME no gogo"
|
|
||||||
./build-support/scripts/proto-gen-no-gogo.sh $1 $2 $3
|
|
||||||
else
|
|
||||||
echo "$FILENAME gogo"
|
|
||||||
./build-support/scripts/proto-gen.sh $1 $2 $3
|
|
||||||
fi
|
|
|
@ -1,169 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
|
||||||
pushd $(dirname ${BASH_SOURCE[0]}) > /dev/null
|
|
||||||
SCRIPT_DIR=$(pwd)
|
|
||||||
pushd ../.. > /dev/null
|
|
||||||
SOURCE_DIR=$(pwd)
|
|
||||||
popd > /dev/null
|
|
||||||
pushd ../functions > /dev/null
|
|
||||||
FN_DIR=$(pwd)
|
|
||||||
popd > /dev/null
|
|
||||||
popd > /dev/null
|
|
||||||
|
|
||||||
source "${SCRIPT_DIR}/functions.sh"
|
|
||||||
|
|
||||||
function usage {
|
|
||||||
cat <<-EOF
|
|
||||||
Usage: ${SCRIPT_NAME} [<options ...>] <proto filepath>
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Generate the Go files from protobuf definitions. In addition to
|
|
||||||
running the protoc generator it will also fixup build tags in the
|
|
||||||
generated code.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--import-replace Replace imports of google types with those from the protobuf repo.
|
|
||||||
--grpc Enable the gRPC plugin
|
|
||||||
-h | --help Print this help text.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function err_usage {
|
|
||||||
err "$1"
|
|
||||||
err ""
|
|
||||||
err "$(usage)"
|
|
||||||
}
|
|
||||||
|
|
||||||
function main {
|
|
||||||
local -i grpc=0
|
|
||||||
local -i imp_replace=0
|
|
||||||
local proto_path=
|
|
||||||
|
|
||||||
while test $# -gt 0
|
|
||||||
do
|
|
||||||
case "$1" in
|
|
||||||
-h | --help )
|
|
||||||
usage
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
--grpc )
|
|
||||||
grpc=1
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--import-replace )
|
|
||||||
imp_replace=1
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
proto_path="$1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -z "${proto_path}"
|
|
||||||
then
|
|
||||||
err_usage "ERROR: No proto file specified"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
go mod download
|
|
||||||
|
|
||||||
local golang_proto_path=$(go list -f '{{ .Dir }}' -m github.com/golang/protobuf)
|
|
||||||
local golang_proto_mod_path=$(sed -e 's,\(.*\)github.com.*,\1,' <<< "${golang_proto_path}")
|
|
||||||
|
|
||||||
|
|
||||||
local golang_proto_imp_replace="Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp"
|
|
||||||
golang_proto_imp_replace="${golang_proto_imp_replace},Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration"
|
|
||||||
|
|
||||||
local proto_go_path=${proto_path%%.proto}.pb.go
|
|
||||||
local proto_go_bin_path=${proto_path%%.proto}.pb.binary.go
|
|
||||||
local proto_go_rpcglue_path=${proto_path%%.proto}.rpcglue.pb.go
|
|
||||||
|
|
||||||
local go_proto_out="paths=source_relative"
|
|
||||||
if is_set "${grpc}"
|
|
||||||
then
|
|
||||||
go_proto_out="${go_proto_out},plugins=grpc"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if is_set "${imp_replace}"
|
|
||||||
then
|
|
||||||
go_proto_out="${go_proto_out},${golang_proto_imp_replace}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -n "${go_proto_out}"
|
|
||||||
then
|
|
||||||
go_proto_out="${go_proto_out}:"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# How we run protoc probably needs some documentation.
|
|
||||||
#
|
|
||||||
# This is the path to where
|
|
||||||
# -I="${golang_proto_path}/protobuf" \
|
|
||||||
local -i ret=0
|
|
||||||
status_stage "Generating ${proto_path} into ${proto_go_path} and ${proto_go_bin_path} (NO GOGO)"
|
|
||||||
echo "debug_run protoc \
|
|
||||||
-I=\"${golang_proto_path}\" \
|
|
||||||
-I=\"${golang_proto_mod_path}\" \
|
|
||||||
-I=\"${SOURCE_DIR}\" \
|
|
||||||
--go_out=\"${go_proto_out}${SOURCE_DIR}\" \
|
|
||||||
--go-binary_out=\"${SOURCE_DIR}\" \
|
|
||||||
\"${proto_path}\""
|
|
||||||
debug_run protoc \
|
|
||||||
-I="${golang_proto_path}" \
|
|
||||||
-I="${golang_proto_mod_path}" \
|
|
||||||
-I="${SOURCE_DIR}" \
|
|
||||||
--go_out="${go_proto_out}${SOURCE_DIR}" \
|
|
||||||
--go-binary_out="${SOURCE_DIR}" \
|
|
||||||
"${proto_path}"
|
|
||||||
|
|
||||||
if test $? -ne 0
|
|
||||||
then
|
|
||||||
err "Failed to run protoc for ${proto_path}"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
debug_run protoc-go-inject-tag \
|
|
||||||
-input="${proto_go_path}"
|
|
||||||
|
|
||||||
if test $? -ne 0
|
|
||||||
then
|
|
||||||
err "Failed to run protoc-go-inject-tag for ${proto_path}"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "debug_run protoc \
|
|
||||||
-I=\"${golang_proto_path}\" \
|
|
||||||
-I=\"${golang_proto_mod_path}\" \
|
|
||||||
-I=\"${SOURCE_DIR}\" \
|
|
||||||
--go_out=\"${go_proto_out}${SOURCE_DIR}\" \
|
|
||||||
--go-binary_out=\"${SOURCE_DIR}\" \
|
|
||||||
\"${proto_path}\""
|
|
||||||
|
|
||||||
BUILD_TAGS=$(sed -e '/^[[:space:]]*$/,$d' < "${proto_path}" | grep '// +build')
|
|
||||||
if test -n "${BUILD_TAGS}"
|
|
||||||
then
|
|
||||||
echo -e "${BUILD_TAGS}\n" >> "${proto_go_path}.new"
|
|
||||||
cat "${proto_go_path}" >> "${proto_go_path}.new"
|
|
||||||
mv "${proto_go_path}.new" "${proto_go_path}"
|
|
||||||
|
|
||||||
echo -e "${BUILD_TAGS}\n" >> "${proto_go_bin_path}.new"
|
|
||||||
cat "${proto_go_bin_path}" >> "${proto_go_bin_path}.new"
|
|
||||||
mv "${proto_go_bin_path}.new" "${proto_go_bin_path}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# note: this has to run after we fix up the build tags above
|
|
||||||
rm -f "${proto_go_rpcglue_path}"
|
|
||||||
debug_run go run ./internal/tools/proto-gen-rpc-glue/main.go -path "${proto_go_path}"
|
|
||||||
if test $? -ne 0
|
|
||||||
then
|
|
||||||
err "Failed to generate consul rpc glue outputs from ${proto_path}"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
exit $?
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
||||||
pushd $(dirname ${BASH_SOURCE[0]}) > /dev/null
|
pushd $(dirname ${BASH_SOURCE[0]}) > /dev/null
|
||||||
SCRIPT_DIR=$(pwd)
|
SCRIPT_DIR=$(pwd)
|
||||||
|
@ -22,7 +23,7 @@ Description:
|
||||||
generated code.
|
generated code.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--import-replace Replace imports of google types with those from the gogo/protobuf repo.
|
--import-replace Replace imports of google types with those from the protobuf repo.
|
||||||
--grpc Enable the gRPC plugin
|
--grpc Enable the gRPC plugin
|
||||||
-h | --help Print this help text.
|
-h | --help Print this help text.
|
||||||
EOF
|
EOF
|
||||||
|
@ -67,20 +68,18 @@ function main {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local gogo_proto_path=$(go list -f '{{ .Dir }}' -m github.com/gogo/protobuf)
|
go mod download
|
||||||
local gogo_proto_mod_path=$(sed -e 's,\(.*\)github.com.*,\1,' <<< "${gogo_proto_path}")
|
|
||||||
|
|
||||||
local gogo_proto_imp_replace="Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types"
|
local golang_proto_path=$(go list -f '{{ .Dir }}' -m github.com/golang/protobuf)
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types"
|
local golang_proto_mod_path=$(sed -e 's,\(.*\)github.com.*,\1,' <<< "${golang_proto_path}")
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/empty.proto=github.com/gogo/protobuf/types"
|
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types"
|
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types"
|
local golang_proto_imp_replace="Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp"
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/api/annotations.proto=github.com/gogo/googleapis/google/api"
|
golang_proto_imp_replace="${golang_proto_imp_replace},Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration"
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/field_mask.proto=github.com/gogo/protobuf/types"
|
|
||||||
gogo_proto_imp_replace="${gogo_proto_imp_replace},Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types"
|
|
||||||
|
|
||||||
local proto_go_path=${proto_path%%.proto}.pb.go
|
local proto_go_path=${proto_path%%.proto}.pb.go
|
||||||
local proto_go_bin_path=${proto_path%%.proto}.pb.binary.go
|
local proto_go_bin_path=${proto_path%%.proto}.pb.binary.go
|
||||||
|
local proto_go_rpcglue_path=${proto_path%%.proto}.rpcglue.pb.go
|
||||||
|
|
||||||
local go_proto_out="paths=source_relative"
|
local go_proto_out="paths=source_relative"
|
||||||
if is_set "${grpc}"
|
if is_set "${grpc}"
|
||||||
|
@ -90,7 +89,7 @@ function main {
|
||||||
|
|
||||||
if is_set "${imp_replace}"
|
if is_set "${imp_replace}"
|
||||||
then
|
then
|
||||||
go_proto_out="${go_proto_out},${gogo_proto_imp_replace}"
|
go_proto_out="${go_proto_out},${golang_proto_imp_replace}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "${go_proto_out}"
|
if test -n "${go_proto_out}"
|
||||||
|
@ -101,23 +100,47 @@ function main {
|
||||||
# How we run protoc probably needs some documentation.
|
# How we run protoc probably needs some documentation.
|
||||||
#
|
#
|
||||||
# This is the path to where
|
# This is the path to where
|
||||||
# -I="${gogo_proto_path}/protobuf" \
|
# -I="${golang_proto_path}/protobuf" \
|
||||||
local -i ret=0
|
local -i ret=0
|
||||||
status_stage "Generating ${proto_path} into ${proto_go_path} and ${proto_go_bin_path}"
|
status_stage "Generating ${proto_path} into ${proto_go_path} and ${proto_go_bin_path}"
|
||||||
|
echo "debug_run protoc \
|
||||||
|
-I=\"${golang_proto_path}\" \
|
||||||
|
-I=\"${golang_proto_mod_path}\" \
|
||||||
|
-I=\"${SOURCE_DIR}\" \
|
||||||
|
--go_out=\"${go_proto_out}${SOURCE_DIR}\" \
|
||||||
|
--go-binary_out=\"${SOURCE_DIR}\" \
|
||||||
|
\"${proto_path}\""
|
||||||
debug_run protoc \
|
debug_run protoc \
|
||||||
-I="${gogo_proto_path}/protobuf" \
|
-I="${golang_proto_path}" \
|
||||||
-I="${gogo_proto_path}" \
|
-I="${golang_proto_mod_path}" \
|
||||||
-I="${gogo_proto_mod_path}" \
|
|
||||||
-I="${SOURCE_DIR}" \
|
-I="${SOURCE_DIR}" \
|
||||||
--gofast_out="${go_proto_out}${SOURCE_DIR}" \
|
--go_out="${go_proto_out}${SOURCE_DIR}" \
|
||||||
--go-binary_out="${SOURCE_DIR}" \
|
--go-binary_out="${SOURCE_DIR}" \
|
||||||
"${proto_path}"
|
"${proto_path}"
|
||||||
|
|
||||||
if test $? -ne 0
|
if test $? -ne 0
|
||||||
then
|
then
|
||||||
err "Failed to generate outputs from ${proto_path}"
|
err "Failed to run protoc for ${proto_path}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
debug_run protoc-go-inject-tag \
|
||||||
|
-input="${proto_go_path}"
|
||||||
|
|
||||||
|
if test $? -ne 0
|
||||||
|
then
|
||||||
|
err "Failed to run protoc-go-inject-tag for ${proto_path}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "debug_run protoc \
|
||||||
|
-I=\"${golang_proto_path}\" \
|
||||||
|
-I=\"${golang_proto_mod_path}\" \
|
||||||
|
-I=\"${SOURCE_DIR}\" \
|
||||||
|
--go_out=\"${go_proto_out}${SOURCE_DIR}\" \
|
||||||
|
--go-binary_out=\"${SOURCE_DIR}\" \
|
||||||
|
\"${proto_path}\""
|
||||||
|
|
||||||
BUILD_TAGS=$(sed -e '/^[[:space:]]*$/,$d' < "${proto_path}" | grep '// +build')
|
BUILD_TAGS=$(sed -e '/^[[:space:]]*$/,$d' < "${proto_path}" | grep '// +build')
|
||||||
if test -n "${BUILD_TAGS}"
|
if test -n "${BUILD_TAGS}"
|
||||||
then
|
then
|
||||||
|
@ -130,6 +153,15 @@ function main {
|
||||||
mv "${proto_go_bin_path}.new" "${proto_go_bin_path}"
|
mv "${proto_go_bin_path}.new" "${proto_go_bin_path}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# note: this has to run after we fix up the build tags above
|
||||||
|
rm -f "${proto_go_rpcglue_path}"
|
||||||
|
debug_run go run ./internal/tools/proto-gen-rpc-glue/main.go -path "${proto_go_path}"
|
||||||
|
if test $? -ne 0
|
||||||
|
then
|
||||||
|
err "Failed to generate consul rpc glue outputs from ${proto_path}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -23,7 +23,7 @@ require (
|
||||||
github.com/envoyproxy/go-control-plane v0.9.5
|
github.com/envoyproxy/go-control-plane v0.9.5
|
||||||
github.com/frankban/quicktest v1.11.0 // indirect
|
github.com/frankban/quicktest v1.11.0 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.5.1
|
github.com/fsnotify/fsnotify v1.5.1
|
||||||
github.com/gogo/protobuf v1.3.2
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang/protobuf v1.3.5
|
github.com/golang/protobuf v1.3.5
|
||||||
github.com/google/go-cmp v0.5.6
|
github.com/google/go-cmp v0.5.6
|
||||||
github.com/google/go-querystring v1.0.0 // indirect
|
github.com/google/go-querystring v1.0.0 // indirect
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: proto/pbacl/acl.proto
|
// source: proto/pbacl/acl.proto
|
||||||
|
|
||||||
package pbacl
|
package pbacl
|
||||||
|
@ -6,9 +6,7 @@ package pbacl
|
||||||
import (
|
import (
|
||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
io "io"
|
|
||||||
math "math"
|
math "math"
|
||||||
math_bits "math/bits"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
@ -37,26 +35,18 @@ func (*ACLLink) ProtoMessage() {}
|
||||||
func (*ACLLink) Descriptor() ([]byte, []int) {
|
func (*ACLLink) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_ad2d2c73a6a0d8b5, []int{0}
|
return fileDescriptor_ad2d2c73a6a0d8b5, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ACLLink) XXX_Unmarshal(b []byte) error {
|
func (m *ACLLink) XXX_Unmarshal(b []byte) error {
|
||||||
return m.Unmarshal(b)
|
return xxx_messageInfo_ACLLink.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *ACLLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *ACLLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
if deterministic {
|
return xxx_messageInfo_ACLLink.Marshal(b, m, deterministic)
|
||||||
return xxx_messageInfo_ACLLink.Marshal(b, m, deterministic)
|
|
||||||
} else {
|
|
||||||
b = b[:cap(b)]
|
|
||||||
n, err := m.MarshalToSizedBuffer(b)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return b[:n], nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
func (m *ACLLink) XXX_Merge(src proto.Message) {
|
func (m *ACLLink) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_ACLLink.Merge(m, src)
|
xxx_messageInfo_ACLLink.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *ACLLink) XXX_Size() int {
|
func (m *ACLLink) XXX_Size() int {
|
||||||
return m.Size()
|
return xxx_messageInfo_ACLLink.Size(m)
|
||||||
}
|
}
|
||||||
func (m *ACLLink) XXX_DiscardUnknown() {
|
func (m *ACLLink) XXX_DiscardUnknown() {
|
||||||
xxx_messageInfo_ACLLink.DiscardUnknown(m)
|
xxx_messageInfo_ACLLink.DiscardUnknown(m)
|
||||||
|
@ -82,296 +72,18 @@ func init() {
|
||||||
proto.RegisterType((*ACLLink)(nil), "acl.ACLLink")
|
proto.RegisterType((*ACLLink)(nil), "acl.ACLLink")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("proto/pbacl/acl.proto", fileDescriptor_ad2d2c73a6a0d8b5) }
|
func init() {
|
||||||
|
proto.RegisterFile("proto/pbacl/acl.proto", fileDescriptor_ad2d2c73a6a0d8b5)
|
||||||
|
}
|
||||||
|
|
||||||
var fileDescriptor_ad2d2c73a6a0d8b5 = []byte{
|
var fileDescriptor_ad2d2c73a6a0d8b5 = []byte{
|
||||||
// 145 bytes of a gzipped FileDescriptorProto
|
// 128 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2d, 0x28, 0xca, 0x2f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2d, 0x28, 0xca, 0x2f,
|
||||||
0xc9, 0xd7, 0x2f, 0x48, 0x4a, 0x4c, 0xce, 0xd1, 0x4f, 0x4c, 0xce, 0xd1, 0x03, 0xf3, 0x85, 0x98,
|
0xc9, 0xd7, 0x2f, 0x48, 0x4a, 0x4c, 0xce, 0xd1, 0x4f, 0x4c, 0xce, 0xd1, 0x03, 0xf3, 0x85, 0x98,
|
||||||
0x13, 0x93, 0x73, 0x94, 0x74, 0xb9, 0xd8, 0x1d, 0x9d, 0x7d, 0x7c, 0x32, 0xf3, 0xb2, 0x85, 0xf8,
|
0x13, 0x93, 0x73, 0x94, 0x74, 0xb9, 0xd8, 0x1d, 0x9d, 0x7d, 0x7c, 0x32, 0xf3, 0xb2, 0x85, 0xf8,
|
||||||
0xb8, 0x98, 0x3c, 0x5d, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x98, 0x3c, 0x5d, 0x84, 0x84,
|
0xb8, 0x98, 0x3c, 0x5d, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x98, 0x3c, 0x5d, 0x84, 0x84,
|
||||||
0xb8, 0x58, 0xfc, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc0, 0x22, 0x60, 0xb6, 0x93, 0xe5, 0x89, 0x47,
|
0xb8, 0x58, 0xfc, 0x12, 0x73, 0x53, 0x25, 0x98, 0xc0, 0x22, 0x60, 0xb6, 0x93, 0x66, 0x94, 0x7a,
|
||||||
0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94,
|
0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x46, 0x62, 0x71, 0x46, 0x66,
|
||||||
0x7a, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x46, 0x62, 0x71, 0x46,
|
0x72, 0x7e, 0x51, 0x81, 0x7e, 0x72, 0x7e, 0x5e, 0x71, 0x69, 0x8e, 0x3e, 0x92, 0x45, 0x49, 0x6c,
|
||||||
0x66, 0x72, 0x7e, 0x51, 0x81, 0x7e, 0x72, 0x7e, 0x5e, 0x71, 0x69, 0x8e, 0x3e, 0x92, 0xc5, 0x49,
|
0x60, 0x8e, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x25, 0x54, 0x7f, 0x7e, 0x00, 0x00, 0x00,
|
||||||
0x6c, 0x60, 0x8e, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x1b, 0xe6, 0xfd, 0xff, 0x8e, 0x00, 0x00,
|
|
||||||
0x00,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ACLLink) Marshal() (dAtA []byte, err error) {
|
|
||||||
size := m.Size()
|
|
||||||
dAtA = make([]byte, size)
|
|
||||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return dAtA[:n], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ACLLink) MarshalTo(dAtA []byte) (int, error) {
|
|
||||||
size := m.Size()
|
|
||||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ACLLink) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|
||||||
i := len(dAtA)
|
|
||||||
_ = i
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
i -= len(m.XXX_unrecognized)
|
|
||||||
copy(dAtA[i:], m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
if len(m.Name) > 0 {
|
|
||||||
i -= len(m.Name)
|
|
||||||
copy(dAtA[i:], m.Name)
|
|
||||||
i = encodeVarintAcl(dAtA, i, uint64(len(m.Name)))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0x12
|
|
||||||
}
|
|
||||||
if len(m.ID) > 0 {
|
|
||||||
i -= len(m.ID)
|
|
||||||
copy(dAtA[i:], m.ID)
|
|
||||||
i = encodeVarintAcl(dAtA, i, uint64(len(m.ID)))
|
|
||||||
i--
|
|
||||||
dAtA[i] = 0xa
|
|
||||||
}
|
|
||||||
return len(dAtA) - i, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func encodeVarintAcl(dAtA []byte, offset int, v uint64) int {
|
|
||||||
offset -= sovAcl(v)
|
|
||||||
base := offset
|
|
||||||
for v >= 1<<7 {
|
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
|
||||||
v >>= 7
|
|
||||||
offset++
|
|
||||||
}
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
return base
|
|
||||||
}
|
|
||||||
func (m *ACLLink) Size() (n int) {
|
|
||||||
if m == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
var l int
|
|
||||||
_ = l
|
|
||||||
l = len(m.ID)
|
|
||||||
if l > 0 {
|
|
||||||
n += 1 + l + sovAcl(uint64(l))
|
|
||||||
}
|
|
||||||
l = len(m.Name)
|
|
||||||
if l > 0 {
|
|
||||||
n += 1 + l + sovAcl(uint64(l))
|
|
||||||
}
|
|
||||||
if m.XXX_unrecognized != nil {
|
|
||||||
n += len(m.XXX_unrecognized)
|
|
||||||
}
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
func sovAcl(x uint64) (n int) {
|
|
||||||
return (math_bits.Len64(x|1) + 6) / 7
|
|
||||||
}
|
|
||||||
func sozAcl(x uint64) (n int) {
|
|
||||||
return sovAcl(uint64((x << 1) ^ uint64((int64(x) >> 63))))
|
|
||||||
}
|
|
||||||
func (m *ACLLink) Unmarshal(dAtA []byte) error {
|
|
||||||
l := len(dAtA)
|
|
||||||
iNdEx := 0
|
|
||||||
for iNdEx < l {
|
|
||||||
preIndex := iNdEx
|
|
||||||
var wire uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
wire |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fieldNum := int32(wire >> 3)
|
|
||||||
wireType := int(wire & 0x7)
|
|
||||||
if wireType == 4 {
|
|
||||||
return fmt.Errorf("proto: ACLLink: wiretype end group for non-group")
|
|
||||||
}
|
|
||||||
if fieldNum <= 0 {
|
|
||||||
return fmt.Errorf("proto: ACLLink: illegal tag %d (wire type %d)", fieldNum, wire)
|
|
||||||
}
|
|
||||||
switch fieldNum {
|
|
||||||
case 1:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLen |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLen := int(stringLen)
|
|
||||||
if intStringLen < 0 {
|
|
||||||
return ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.ID = string(dAtA[iNdEx:postIndex])
|
|
||||||
iNdEx = postIndex
|
|
||||||
case 2:
|
|
||||||
if wireType != 2 {
|
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
|
|
||||||
}
|
|
||||||
var stringLen uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLen |= uint64(b&0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLen := int(stringLen)
|
|
||||||
if intStringLen < 0 {
|
|
||||||
return ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
postIndex := iNdEx + intStringLen
|
|
||||||
if postIndex < 0 {
|
|
||||||
return ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
if postIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.Name = string(dAtA[iNdEx:postIndex])
|
|
||||||
iNdEx = postIndex
|
|
||||||
default:
|
|
||||||
iNdEx = preIndex
|
|
||||||
skippy, err := skipAcl(dAtA[iNdEx:])
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
|
||||||
return ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
if (iNdEx + skippy) > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
|
|
||||||
iNdEx += skippy
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if iNdEx > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func skipAcl(dAtA []byte) (n int, err error) {
|
|
||||||
l := len(dAtA)
|
|
||||||
iNdEx := 0
|
|
||||||
depth := 0
|
|
||||||
for iNdEx < l {
|
|
||||||
var wire uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
wire |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wireType := int(wire & 0x7)
|
|
||||||
switch wireType {
|
|
||||||
case 0:
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
iNdEx++
|
|
||||||
if dAtA[iNdEx-1] < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
iNdEx += 8
|
|
||||||
case 2:
|
|
||||||
var length int
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return 0, ErrIntOverflowAcl
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
length |= (int(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if length < 0 {
|
|
||||||
return 0, ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
iNdEx += length
|
|
||||||
case 3:
|
|
||||||
depth++
|
|
||||||
case 4:
|
|
||||||
if depth == 0 {
|
|
||||||
return 0, ErrUnexpectedEndOfGroupAcl
|
|
||||||
}
|
|
||||||
depth--
|
|
||||||
case 5:
|
|
||||||
iNdEx += 4
|
|
||||||
default:
|
|
||||||
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
|
|
||||||
}
|
|
||||||
if iNdEx < 0 {
|
|
||||||
return 0, ErrInvalidLengthAcl
|
|
||||||
}
|
|
||||||
if depth == 0 {
|
|
||||||
return iNdEx, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0, io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
ErrInvalidLengthAcl = fmt.Errorf("proto: negative length found during unmarshaling")
|
|
||||||
ErrIntOverflowAcl = fmt.Errorf("proto: integer overflow")
|
|
||||||
ErrUnexpectedEndOfGroupAcl = fmt.Errorf("proto: unexpected end of group")
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
// Code generated by mog. DO NOT EDIT.
|
|
||||||
|
|
||||||
package pbcommongogo
|
|
||||||
|
|
||||||
import "github.com/hashicorp/consul/agent/structs"
|
|
||||||
|
|
||||||
func QueryMetaToStructs(s *QueryMeta, t *structs.QueryMeta) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.Index = s.Index
|
|
||||||
t.LastContact = structs.DurationFromProtoGogo(s.LastContact)
|
|
||||||
t.KnownLeader = s.KnownLeader
|
|
||||||
t.ConsistencyLevel = s.ConsistencyLevel
|
|
||||||
t.ResultsFilteredByACLs = s.ResultsFilteredByACLs
|
|
||||||
}
|
|
||||||
func QueryMetaFromStructs(t *structs.QueryMeta, s *QueryMeta) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
s.Index = t.Index
|
|
||||||
s.LastContact = structs.DurationToProtoGogo(t.LastContact)
|
|
||||||
s.KnownLeader = t.KnownLeader
|
|
||||||
s.ConsistencyLevel = t.ConsistencyLevel
|
|
||||||
s.ResultsFilteredByACLs = t.ResultsFilteredByACLs
|
|
||||||
}
|
|
||||||
func QueryOptionsToStructs(s *QueryOptions, t *structs.QueryOptions) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.Token = s.Token
|
|
||||||
t.MinQueryIndex = s.MinQueryIndex
|
|
||||||
t.MaxQueryTime = structs.DurationFromProtoGogo(s.MaxQueryTime)
|
|
||||||
t.AllowStale = s.AllowStale
|
|
||||||
t.RequireConsistent = s.RequireConsistent
|
|
||||||
t.UseCache = s.UseCache
|
|
||||||
t.MaxStaleDuration = structs.DurationFromProtoGogo(s.MaxStaleDuration)
|
|
||||||
t.MaxAge = structs.DurationFromProtoGogo(s.MaxAge)
|
|
||||||
t.MustRevalidate = s.MustRevalidate
|
|
||||||
t.Filter = s.Filter
|
|
||||||
}
|
|
||||||
func QueryOptionsFromStructs(t *structs.QueryOptions, s *QueryOptions) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
s.Token = t.Token
|
|
||||||
s.MinQueryIndex = t.MinQueryIndex
|
|
||||||
s.MaxQueryTime = structs.DurationToProtoGogo(t.MaxQueryTime)
|
|
||||||
s.AllowStale = t.AllowStale
|
|
||||||
s.RequireConsistent = t.RequireConsistent
|
|
||||||
s.UseCache = t.UseCache
|
|
||||||
s.MaxStaleDuration = structs.DurationToProtoGogo(t.MaxStaleDuration)
|
|
||||||
s.MaxAge = structs.DurationToProtoGogo(t.MaxAge)
|
|
||||||
s.MustRevalidate = t.MustRevalidate
|
|
||||||
s.Filter = t.Filter
|
|
||||||
}
|
|
||||||
func RaftIndexToStructs(s *RaftIndex, t *structs.RaftIndex) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.CreateIndex = s.CreateIndex
|
|
||||||
t.ModifyIndex = s.ModifyIndex
|
|
||||||
}
|
|
||||||
func RaftIndexFromStructs(t *structs.RaftIndex, s *RaftIndex) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
s.CreateIndex = t.CreateIndex
|
|
||||||
s.ModifyIndex = t.ModifyIndex
|
|
||||||
}
|
|
|
@ -1,303 +0,0 @@
|
||||||
package pbcommongogo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/hashicorp/consul/agent/structs"
|
|
||||||
)
|
|
||||||
|
|
||||||
// IsRead is always true for QueryOption
|
|
||||||
func (q *QueryOptions) IsRead() bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// AllowStaleRead returns whether a stale read should be allowed
|
|
||||||
func (q *QueryOptions) AllowStaleRead() bool {
|
|
||||||
return q.AllowStale
|
|
||||||
}
|
|
||||||
|
|
||||||
func (q *QueryOptions) TokenSecret() string {
|
|
||||||
return q.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (q *QueryOptions) SetTokenSecret(s string) {
|
|
||||||
q.Token = s
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetToken is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetToken(token string) {
|
|
||||||
q.Token = token
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMinQueryIndex is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetMinQueryIndex(minQueryIndex uint64) {
|
|
||||||
q.MinQueryIndex = minQueryIndex
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMaxQueryTime is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetMaxQueryTime(maxQueryTime time.Duration) {
|
|
||||||
q.MaxQueryTime = structs.DurationToProtoGogo(maxQueryTime)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetAllowStale is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetAllowStale(allowStale bool) {
|
|
||||||
q.AllowStale = allowStale
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetRequireConsistent is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetRequireConsistent(requireConsistent bool) {
|
|
||||||
q.RequireConsistent = requireConsistent
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetUseCache is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetUseCache(useCache bool) {
|
|
||||||
q.UseCache = useCache
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMaxStaleDuration is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetMaxStaleDuration(maxStaleDuration time.Duration) {
|
|
||||||
q.MaxStaleDuration = structs.DurationToProtoGogo(maxStaleDuration)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMaxAge is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetMaxAge(maxAge time.Duration) {
|
|
||||||
q.MaxAge = structs.DurationToProtoGogo(maxAge)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMustRevalidate is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetMustRevalidate(mustRevalidate bool) {
|
|
||||||
q.MustRevalidate = mustRevalidate
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetStaleIfError is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetStaleIfError(staleIfError time.Duration) {
|
|
||||||
q.StaleIfError = structs.DurationToProtoGogo(staleIfError)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (q QueryOptions) HasTimedOut(start time.Time, rpcHoldTimeout, maxQueryTime, defaultQueryTime time.Duration) (bool, error) {
|
|
||||||
maxTime := structs.DurationFromProtoGogo(q.MaxQueryTime)
|
|
||||||
o := structs.QueryOptions{
|
|
||||||
MaxQueryTime: maxTime,
|
|
||||||
MinQueryIndex: q.MinQueryIndex,
|
|
||||||
}
|
|
||||||
return o.HasTimedOut(start, rpcHoldTimeout, maxQueryTime, defaultQueryTime)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetFilter is needed to implement the structs.QueryOptionsCompat interface
|
|
||||||
func (q *QueryOptions) SetFilter(filter string) {
|
|
||||||
q.Filter = filter
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMaxQueryTime is required to implement blockingQueryOptions
|
|
||||||
func (q *QueryOptions) GetMaxQueryTime() (time.Duration, error) {
|
|
||||||
return structs.DurationFromProtoGogo(q.MaxQueryTime), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMinQueryIndex is required to implement blockingQueryOptions
|
|
||||||
func (q *QueryOptions) GetMinQueryIndex() uint64 {
|
|
||||||
if q != nil {
|
|
||||||
return q.MinQueryIndex
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetRequireConsistent is required to implement blockingQueryOptions
|
|
||||||
func (q *QueryOptions) GetRequireConsistent() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.RequireConsistent
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetToken is required to implement blockingQueryOptions
|
|
||||||
func (q *QueryOptions) GetToken() string {
|
|
||||||
if q != nil {
|
|
||||||
return q.Token
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetAllowStale is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetAllowStale() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.AllowStale
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetFilter is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetFilter() string {
|
|
||||||
if q != nil {
|
|
||||||
return q.Filter
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMaxAge is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetMaxAge() (time.Duration, error) {
|
|
||||||
if q != nil {
|
|
||||||
return structs.DurationFromProtoGogo(q.MaxAge), nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMaxStaleDuration is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetMaxStaleDuration() (time.Duration, error) {
|
|
||||||
if q != nil {
|
|
||||||
return structs.DurationFromProtoGogo(q.MaxStaleDuration), nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMustRevalidate is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetMustRevalidate() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.MustRevalidate
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetStaleIfError is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetStaleIfError() (time.Duration, error) {
|
|
||||||
if q != nil {
|
|
||||||
return structs.DurationFromProtoGogo(q.StaleIfError), nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetUseCache is required to implement structs.QueryOptionsCompat
|
|
||||||
func (q *QueryOptions) GetUseCache() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.UseCache
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetLastContact is needed to implement the structs.QueryMetaCompat interface
|
|
||||||
func (q *QueryMeta) SetLastContact(lastContact time.Duration) {
|
|
||||||
q.LastContact = structs.DurationToProtoGogo(lastContact)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetKnownLeader is needed to implement the structs.QueryMetaCompat interface
|
|
||||||
func (q *QueryMeta) SetKnownLeader(knownLeader bool) {
|
|
||||||
q.KnownLeader = knownLeader
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetIndex is needed to implement the structs.QueryMetaCompat interface
|
|
||||||
func (q *QueryMeta) SetIndex(index uint64) {
|
|
||||||
q.Index = index
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetConsistencyLevel is needed to implement the structs.QueryMetaCompat interface
|
|
||||||
func (q *QueryMeta) SetConsistencyLevel(consistencyLevel string) {
|
|
||||||
q.ConsistencyLevel = consistencyLevel
|
|
||||||
}
|
|
||||||
|
|
||||||
func (q *QueryMeta) GetBackend() structs.QueryBackend {
|
|
||||||
return structs.QueryBackend(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetResultsFilteredByACLs is needed to implement the structs.QueryMetaCompat interface
|
|
||||||
func (q *QueryMeta) SetResultsFilteredByACLs(v bool) {
|
|
||||||
q.ResultsFilteredByACLs = v
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetIndex is required to implement blockingQueryResponseMeta
|
|
||||||
func (q *QueryMeta) GetIndex() uint64 {
|
|
||||||
if q != nil {
|
|
||||||
return q.Index
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetConsistencyLevel is required to implement structs.QueryMetaCompat
|
|
||||||
func (q *QueryMeta) GetConsistencyLevel() string {
|
|
||||||
if q != nil {
|
|
||||||
return q.ConsistencyLevel
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetKnownLeader is required to implement structs.QueryMetaCompat
|
|
||||||
func (q *QueryMeta) GetKnownLeader() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.KnownLeader
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLastContact is required to implement structs.QueryMetaCompat
|
|
||||||
func (q *QueryMeta) GetLastContact() (time.Duration, error) {
|
|
||||||
if q != nil {
|
|
||||||
return structs.DurationFromProtoGogo(q.LastContact), nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetResultsFilteredByACLs is required to implement structs.QueryMetaCompat
|
|
||||||
func (q *QueryMeta) GetResultsFilteredByACLs() bool {
|
|
||||||
if q != nil {
|
|
||||||
return q.ResultsFilteredByACLs
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// WriteRequest only applies to writes, always false
|
|
||||||
//
|
|
||||||
// IsRead implements structs.RPCInfo
|
|
||||||
func (w WriteRequest) IsRead() bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetTokenSecret implements structs.RPCInfo
|
|
||||||
func (w WriteRequest) TokenSecret() string {
|
|
||||||
return w.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetTokenSecret implements structs.RPCInfo
|
|
||||||
func (w *WriteRequest) SetTokenSecret(s string) {
|
|
||||||
w.Token = s
|
|
||||||
}
|
|
||||||
|
|
||||||
// AllowStaleRead returns whether a stale read should be allowed
|
|
||||||
//
|
|
||||||
// AllowStaleRead implements structs.RPCInfo
|
|
||||||
func (w WriteRequest) AllowStaleRead() bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasTimedOut implements structs.RPCInfo
|
|
||||||
func (w WriteRequest) HasTimedOut(start time.Time, rpcHoldTimeout, _, _ time.Duration) (bool, error) {
|
|
||||||
return time.Since(start) > rpcHoldTimeout, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsRead implements structs.RPCInfo
|
|
||||||
func (r *ReadRequest) IsRead() bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// AllowStaleRead implements structs.RPCInfo
|
|
||||||
func (r *ReadRequest) AllowStaleRead() bool {
|
|
||||||
// TODO(partitions): plumb this?
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// TokenSecret implements structs.RPCInfo
|
|
||||||
func (r *ReadRequest) TokenSecret() string {
|
|
||||||
return r.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetTokenSecret implements structs.RPCInfo
|
|
||||||
func (r *ReadRequest) SetTokenSecret(token string) {
|
|
||||||
r.Token = token
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasTimedOut implements structs.RPCInfo
|
|
||||||
func (r *ReadRequest) HasTimedOut(start time.Time, rpcHoldTimeout, maxQueryTime, defaultQueryTime time.Duration) (bool, error) {
|
|
||||||
return time.Since(start) > rpcHoldTimeout, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RequestDatacenter implements structs.RPCInfo
|
|
||||||
func (td TargetDatacenter) RequestDatacenter() string {
|
|
||||||
return td.Datacenter
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
// Code generated by protoc-gen-go-binary. DO NOT EDIT.
|
|
||||||
// source: proto/pbcommongogo/common.proto
|
|
||||||
|
|
||||||
package pbcommongogo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/golang/protobuf/proto"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *RaftIndex) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *RaftIndex) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *TargetDatacenter) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *TargetDatacenter) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *WriteRequest) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *WriteRequest) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *ReadRequest) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *ReadRequest) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *QueryOptions) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *QueryOptions) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *QueryMeta) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *QueryMeta) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalBinary implements encoding.BinaryMarshaler
|
|
||||||
func (msg *EnterpriseMeta) MarshalBinary() ([]byte, error) {
|
|
||||||
return proto.Marshal(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalBinary implements encoding.BinaryUnmarshaler
|
|
||||||
func (msg *EnterpriseMeta) UnmarshalBinary(b []byte) error {
|
|
||||||
return proto.Unmarshal(b, msg)
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,182 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
package commongogo;
|
|
||||||
|
|
||||||
option go_package = "github.com/hashicorp/consul/proto/pbcommongogo";
|
|
||||||
|
|
||||||
import "google/protobuf/duration.proto";
|
|
||||||
// Go Modules now includes the version in the filepath for packages within GOPATH/pkg/mode
|
|
||||||
// Therefore unless we want to hardcode a version here like
|
|
||||||
// github.com/gogo/protobuf@v1.3.0/gogoproto/gogo.proto then the only other choice is to
|
|
||||||
// have a more relative import and pass the right import path to protoc. I don't like it
|
|
||||||
// but its necessary.
|
|
||||||
import "gogoproto/gogo.proto";
|
|
||||||
|
|
||||||
option (gogoproto.goproto_unkeyed_all) = false;
|
|
||||||
option (gogoproto.goproto_unrecognized_all) = false;
|
|
||||||
option (gogoproto.goproto_getters_all) = false;
|
|
||||||
option (gogoproto.goproto_sizecache_all) = false;
|
|
||||||
|
|
||||||
// RaftIndex is used to track the index used while creating
|
|
||||||
// or modifying a given struct type.
|
|
||||||
//
|
|
||||||
// mog annotation:
|
|
||||||
//
|
|
||||||
// target=github.com/hashicorp/consul/agent/structs.RaftIndex
|
|
||||||
// output=common.gen.go
|
|
||||||
// name=Structs
|
|
||||||
message RaftIndex {
|
|
||||||
uint64 CreateIndex = 1 [(gogoproto.moretags) = "bexpr:\"-\""];
|
|
||||||
uint64 ModifyIndex = 2 [(gogoproto.moretags) = "bexpr:\"-\""];
|
|
||||||
}
|
|
||||||
|
|
||||||
// TargetDatacenter is intended to be used within other messages used for RPC routing
|
|
||||||
// amongst the various Consul datacenters
|
|
||||||
message TargetDatacenter {
|
|
||||||
string Datacenter = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message WriteRequest {
|
|
||||||
// Token is the ACL token ID. If not provided, the 'anonymous'
|
|
||||||
// token is assumed for backwards compatibility.
|
|
||||||
string Token = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadRequest is a type that may be embedded into any requests for read
|
|
||||||
// operations.
|
|
||||||
// It is a replacement for QueryOptions now that we no longer need any of those
|
|
||||||
// fields because we are moving away from using blocking queries.
|
|
||||||
// It is also similar to WriteRequest. It is a separate type so that in the
|
|
||||||
// future we can introduce fields that may only be relevant for reads.
|
|
||||||
message ReadRequest {
|
|
||||||
// Token is the ACL token ID. If not provided, the 'anonymous'
|
|
||||||
// token is assumed for backwards compatibility.
|
|
||||||
string Token = 1;
|
|
||||||
|
|
||||||
// RequireConsistent indicates that the request must be sent to the leader.
|
|
||||||
bool RequireConsistent = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// QueryOptions is used to specify various flags for read queries
|
|
||||||
//
|
|
||||||
// mog annotation:
|
|
||||||
//
|
|
||||||
// target=github.com/hashicorp/consul/agent/structs.QueryOptions
|
|
||||||
// output=common.gen.go
|
|
||||||
// name=Structs
|
|
||||||
// ignore-fields=StaleIfError,AllowNotModifiedResponse
|
|
||||||
message QueryOptions {
|
|
||||||
// Token is the ACL token ID. If not provided, the 'anonymous'
|
|
||||||
// token is assumed for backwards compatibility.
|
|
||||||
string Token = 1;
|
|
||||||
|
|
||||||
// If set, wait until query exceeds given index. Must be provided
|
|
||||||
// with MaxQueryTime.
|
|
||||||
uint64 MinQueryIndex = 2;
|
|
||||||
|
|
||||||
// Provided with MinQueryIndex to wait for change.
|
|
||||||
// mog: func-to=structs.DurationFromProtoGogo func-from=structs.DurationToProtoGogo
|
|
||||||
google.protobuf.Duration MaxQueryTime = 3
|
|
||||||
[(gogoproto.nullable) = false];
|
|
||||||
|
|
||||||
// If set, any follower can service the request. Results
|
|
||||||
// may be arbitrarily stale.
|
|
||||||
bool AllowStale = 4;
|
|
||||||
|
|
||||||
// If set, the leader must verify leadership prior to
|
|
||||||
// servicing the request. Prevents a stale read.
|
|
||||||
bool RequireConsistent = 5;
|
|
||||||
|
|
||||||
// If set, the local agent may respond with an arbitrarily stale locally
|
|
||||||
// cached response. The semantics differ from AllowStale since the agent may
|
|
||||||
// be entirely partitioned from the servers and still considered "healthy" by
|
|
||||||
// operators. Stale responses from Servers are also arbitrarily stale, but can
|
|
||||||
// provide additional bounds on the last contact time from the leader. It's
|
|
||||||
// expected that servers that are partitioned are noticed and replaced in a
|
|
||||||
// timely way by operators while the same may not be true for client agents.
|
|
||||||
bool UseCache = 6;
|
|
||||||
|
|
||||||
// If set and AllowStale is true, will try first a stale
|
|
||||||
// read, and then will perform a consistent read if stale
|
|
||||||
// read is older than value.
|
|
||||||
// mog: func-to=structs.DurationFromProtoGogo func-from=structs.DurationToProtoGogo
|
|
||||||
google.protobuf.Duration MaxStaleDuration = 7
|
|
||||||
[(gogoproto.nullable) = false];
|
|
||||||
|
|
||||||
// MaxAge limits how old a cached value will be returned if UseCache is true.
|
|
||||||
// If there is a cached response that is older than the MaxAge, it is treated
|
|
||||||
// as a cache miss and a new fetch invoked. If the fetch fails, the error is
|
|
||||||
// returned. Clients that wish to allow for stale results on error can set
|
|
||||||
// StaleIfError to a longer duration to change this behavior. It is ignored
|
|
||||||
// if the endpoint supports background refresh caching. See
|
|
||||||
// https://www.consul.io/api/index.html#agent-caching for more details.
|
|
||||||
// mog: func-to=structs.DurationFromProtoGogo func-from=structs.DurationToProtoGogo
|
|
||||||
google.protobuf.Duration MaxAge = 8
|
|
||||||
[(gogoproto.nullable) = false];
|
|
||||||
|
|
||||||
// MustRevalidate forces the agent to fetch a fresh version of a cached
|
|
||||||
// resource or at least validate that the cached version is still fresh. It is
|
|
||||||
// implied by either max-age=0 or must-revalidate Cache-Control headers. It
|
|
||||||
// only makes sense when UseCache is true. We store it since MaxAge = 0 is the
|
|
||||||
// default unset value.
|
|
||||||
bool MustRevalidate = 9;
|
|
||||||
|
|
||||||
// StaleIfError specifies how stale the client will accept a cached response
|
|
||||||
// if the servers are unavailable to fetch a fresh one. Only makes sense when
|
|
||||||
// UseCache is true and MaxAge is set to a lower, non-zero value. It is
|
|
||||||
// ignored if the endpoint supports background refresh caching. See
|
|
||||||
// https://www.consul.io/api/index.html#agent-caching for more details.
|
|
||||||
google.protobuf.Duration StaleIfError = 10
|
|
||||||
[(gogoproto.nullable) = false];
|
|
||||||
|
|
||||||
// Filter specifies the go-bexpr filter expression to be used for
|
|
||||||
// filtering the data prior to returning a response
|
|
||||||
string Filter = 11;
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryMeta allows a query response to include potentially
|
|
||||||
// useful metadata about a query
|
|
||||||
//
|
|
||||||
// mog annotation:
|
|
||||||
//
|
|
||||||
// target=github.com/hashicorp/consul/agent/structs.QueryMeta
|
|
||||||
// output=common.gen.go
|
|
||||||
// name=Structs
|
|
||||||
// ignore-fields=NotModified,Backend
|
|
||||||
message QueryMeta {
|
|
||||||
// This is the index associated with the read
|
|
||||||
uint64 Index = 1;
|
|
||||||
|
|
||||||
// If AllowStale is used, this is time elapsed since
|
|
||||||
// last contact between the follower and leader. This
|
|
||||||
// can be used to gauge staleness.
|
|
||||||
// mog: func-to=structs.DurationFromProtoGogo func-from=structs.DurationToProtoGogo
|
|
||||||
google.protobuf.Duration LastContact = 2
|
|
||||||
[(gogoproto.nullable) = false];
|
|
||||||
|
|
||||||
// Used to indicate if there is a known leader node
|
|
||||||
bool KnownLeader = 3;
|
|
||||||
|
|
||||||
// Consistencylevel returns the consistency used to serve the query
|
|
||||||
// Having `discovery_max_stale` on the agent can affect whether
|
|
||||||
// the request was served by a leader.
|
|
||||||
string ConsistencyLevel = 4;
|
|
||||||
|
|
||||||
// Reserved for NotModified and Backend.
|
|
||||||
reserved 5, 6;
|
|
||||||
|
|
||||||
// ResultsFilteredByACLs is true when some of the query's results were
|
|
||||||
// filtered out by enforcing ACLs. It may be false because nothing was
|
|
||||||
// removed, or because the endpoint does not yet support this flag.
|
|
||||||
bool ResultsFilteredByACLs = 7;
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnterpriseMeta contains metadata that is only used by the Enterprise version
|
|
||||||
// of Consul.
|
|
||||||
message EnterpriseMeta {
|
|
||||||
// Namespace in which the entity exists.
|
|
||||||
string Namespace = 1;
|
|
||||||
// Partition in which the entity exists.
|
|
||||||
string Partition = 2;
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
//go:build !consulent
|
|
||||||
// +build !consulent
|
|
||||||
|
|
||||||
package pbcommongogo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/hashicorp/consul/agent/structs"
|
|
||||||
)
|
|
||||||
|
|
||||||
var DefaultEnterpriseMeta = EnterpriseMeta{}
|
|
||||||
|
|
||||||
func NewEnterpriseMetaFromStructs(_ structs.EnterpriseMeta) *EnterpriseMeta {
|
|
||||||
return &EnterpriseMeta{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func EnterpriseMetaToStructs(s *EnterpriseMeta, t *structs.EnterpriseMeta) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func EnterpriseMetaFromStructs(t *structs.EnterpriseMeta, s *EnterpriseMeta) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
//TODO(gogo-remove): remove the types alias
|
|
||||||
types "github.com/golang/protobuf/ptypes/struct"
|
types "github.com/golang/protobuf/ptypes/struct"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package pbutil
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gogo/protobuf/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
func DurationToProto(d time.Duration) *types.Duration {
|
|
||||||
return types.DurationProto(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
func DurationFromProto(d *types.Duration) (time.Duration, error) {
|
|
||||||
return types.DurationFromProto(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TimeFromProto(s *types.Timestamp) (time.Time, error) {
|
|
||||||
return types.TimestampFromProto(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TimeToProto(s time.Time) (*types.Timestamp, error) {
|
|
||||||
return types.TimestampProto(s)
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
package proto
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gogo/protobuf/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
tsType = reflect.TypeOf((*types.Timestamp)(nil))
|
|
||||||
timePtrType = reflect.TypeOf((*time.Time)(nil))
|
|
||||||
timeType = timePtrType.Elem()
|
|
||||||
mapStrInf = reflect.TypeOf((map[string]interface{})(nil))
|
|
||||||
|
|
||||||
epoch1970 = time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)
|
|
||||||
)
|
|
||||||
|
|
||||||
// HookPBTimestampToTime is a mapstructure decode hook to translate a protobuf timestamp
|
|
||||||
// to a time.Time value
|
|
||||||
func HookPBTimestampToTime(from, to reflect.Type, data interface{}) (interface{}, error) {
|
|
||||||
if to == timeType && from == tsType {
|
|
||||||
ts := data.(*types.Timestamp)
|
|
||||||
if ts.Seconds == 0 && ts.Nanos == 0 {
|
|
||||||
return time.Time{}, nil
|
|
||||||
}
|
|
||||||
return time.Unix(ts.Seconds, int64(ts.Nanos)).UTC(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return data, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// HookTimeToPBtimestamp is a mapstructure decode hook to translate a time.Time value to
|
|
||||||
// a protobuf Timestamp value.
|
|
||||||
func HookTimeToPBTimestamp(from, to reflect.Type, data interface{}) (interface{}, error) {
|
|
||||||
// Note that mapstructure doesn't do direct struct to struct conversion in this case. I
|
|
||||||
// still don't completely understand why converting the PB TS to time.Time does but
|
|
||||||
// I suspect it has something to do with the struct containing a concrete time.Time
|
|
||||||
// as opposed to a pointer to a time.Time. Regardless this path through mapstructure
|
|
||||||
// first will decode the concrete time.Time into a map[string]interface{} before
|
|
||||||
// eventually decoding that map[string]interface{} into the *types.Timestamp. One
|
|
||||||
// other note is that mapstructure ends up creating a new Value and sets it it to
|
|
||||||
// the time.Time value and thats what gets passed to us. That is why we end up
|
|
||||||
// seeing a *time.Time instead of a time.Time.
|
|
||||||
if from == timePtrType && to == mapStrInf {
|
|
||||||
ts := data.(*time.Time)
|
|
||||||
|
|
||||||
// protobuf only supports times from Jan 1 1970 onward but the time.Time type
|
|
||||||
// can represent values back to year 1. Basically
|
|
||||||
if ts.Before(epoch1970) {
|
|
||||||
return map[string]interface{}{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
nanos := ts.UnixNano()
|
|
||||||
if nanos < 0 {
|
|
||||||
return map[string]interface{}{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
seconds := nanos / 1000000000
|
|
||||||
nanos = nanos % 1000000000
|
|
||||||
|
|
||||||
return map[string]interface{}{
|
|
||||||
"Seconds": seconds,
|
|
||||||
"Nanos": int32(nanos),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
return data, nil
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
package proto
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gogo/protobuf/types"
|
|
||||||
"github.com/mitchellh/mapstructure"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
type pbTSWrapper struct {
|
|
||||||
Timestamp *types.Timestamp
|
|
||||||
}
|
|
||||||
|
|
||||||
type timeTSWrapper struct {
|
|
||||||
Timestamp time.Time
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHookPBTimestampToTime(t *testing.T) {
|
|
||||||
in := pbTSWrapper{
|
|
||||||
Timestamp: &types.Timestamp{
|
|
||||||
Seconds: 1000,
|
|
||||||
Nanos: 42,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
expected := timeTSWrapper{
|
|
||||||
Timestamp: time.Unix(1000, 42).UTC(),
|
|
||||||
}
|
|
||||||
|
|
||||||
var actual timeTSWrapper
|
|
||||||
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
|
|
||||||
DecodeHook: HookPBTimestampToTime,
|
|
||||||
Result: &actual,
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.NoError(t, decoder.Decode(in))
|
|
||||||
|
|
||||||
require.Equal(t, expected, actual)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHookTimeToPBTimestamp(t *testing.T) {
|
|
||||||
in := timeTSWrapper{
|
|
||||||
Timestamp: time.Unix(999999, 123456).UTC(),
|
|
||||||
}
|
|
||||||
|
|
||||||
expected := pbTSWrapper{
|
|
||||||
Timestamp: &types.Timestamp{
|
|
||||||
Seconds: 999999,
|
|
||||||
Nanos: 123456,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var actual pbTSWrapper
|
|
||||||
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
|
|
||||||
DecodeHook: HookTimeToPBTimestamp,
|
|
||||||
Result: &actual,
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.NoError(t, decoder.Decode(in))
|
|
||||||
|
|
||||||
require.Equal(t, expected, actual)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHookTimeToPBTimestamp_ZeroTime(t *testing.T) {
|
|
||||||
in := timeTSWrapper{}
|
|
||||||
|
|
||||||
expected := pbTSWrapper{
|
|
||||||
Timestamp: &types.Timestamp{
|
|
||||||
Seconds: 0,
|
|
||||||
Nanos: 0,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var actual pbTSWrapper
|
|
||||||
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
|
|
||||||
DecodeHook: HookTimeToPBTimestamp,
|
|
||||||
Result: &actual,
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.NoError(t, decoder.Decode(in))
|
|
||||||
|
|
||||||
require.Equal(t, expected, actual)
|
|
||||||
}
|
|
Loading…
Reference in New Issue