mirror of
https://github.com/lingble/talos.git
synced 2026-03-20 04:03:37 +00:00
feat: use grpc-proxy in apid
This replaces codegen version of apid proxying with talos-systems/grpc-proxy based version. Proxying is transparent, it doesn't require exact information about methods and response types. It requires some common layout response to enhance it properly with node metadata or errors. There should be no signifcant changes to the API with the previous version, but it's worth mentioning a few changes: 1. grpc.ClientConn is established just once per upstream (either local service or remote apid instance). 2. When called without `-t` (`targets`), apid proxies immediately down to local service skipping proxying to itself (as before), which results in empty node metadata in response (before it had local node IP). Might revert this later to proxy to itself (?). 3. Streaming APIs are now fully supported with multiple targets, but message definition doesn't contain `ResponseMetadata`, so streaming APIs are broken now with targets (needs a fix). 4. Errors are now returned as responses with `Error` field set in `ResponseMetadata`, this requires client library update and `osctl` to handle it properly. Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This commit is contained in:
committed by
Andrey Smirnov
parent
712275dfea
commit
5b7bea2471
@@ -18,7 +18,6 @@ RUN cd $(mktemp -d) \
|
||||
&& go get mvdan.cc/gofumpt/gofumports \
|
||||
&& mv /go/bin/gofumports /toolchain/go/bin/gofumports
|
||||
RUN curl -sfL https://github.com/uber/prototool/releases/download/v1.8.0/prototool-Linux-x86_64.tar.gz | tar -xz --strip-components=2 -C /toolchain/bin prototool/bin/prototool
|
||||
COPY --from=autonomy/protoc-gen-proxy:4a9e5da /protoc-gen-proxy /toolchain/bin/protoc-gen-proxy
|
||||
COPY ./hack/docgen /go/src/github.com/talos-systems/docgen
|
||||
RUN cd /go/src/github.com/talos-systems/docgen \
|
||||
&& go build . \
|
||||
@@ -52,15 +51,11 @@ COPY ./api/time/time.proto /api/time/time.proto
|
||||
RUN protoc -I/api --go_out=plugins=grpc:/api/time /api/time/time.proto
|
||||
COPY ./api/network/network.proto /api/network/network.proto
|
||||
RUN protoc -I/api --go_out=plugins=grpc:/api/network /api/network/network.proto
|
||||
# Genenrate api bits last so we have other proto files in place to satisfy the import
|
||||
COPY ./api/api.proto /api/api.proto
|
||||
RUN protoc -I/api --plugin=proxy --proxy_out=plugins=grpc+proxy:/api /api/api.proto
|
||||
# Gofumports generated files to adjust import order
|
||||
RUN gofumports -w -local github.com/talos-systems/talos /api/
|
||||
|
||||
FROM scratch AS generate
|
||||
COPY --from=generate-build /api/common/github.com/talos-systems/talos/api/common/common.pb.go /api/common/
|
||||
COPY --from=generate-build /api/github.com/talos-systems/talos/api/api.pb.go /api/
|
||||
COPY --from=generate-build /api/os/github.com/talos-systems/talos/api/os/os.pb.go /api/os/
|
||||
COPY --from=generate-build /api/security/github.com/talos-systems/talos/api/security/security.pb.go /api/security/
|
||||
COPY --from=generate-build /api/machine/github.com/talos-systems/talos/api/machine/machine.pb.go /api/machine/
|
||||
|
||||
1584
api/api.pb.go
1584
api/api.pb.go
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package api;
|
||||
|
||||
option go_package = "github.com/talos-systems/talos/api";
|
||||
|
||||
import public "os/os.proto";
|
||||
import public "machine/machine.proto";
|
||||
import public "time/time.proto";
|
||||
import public "network/network.proto";
|
||||
import public "common/common.proto";
|
||||
import public "google/protobuf/empty.proto";
|
||||
@@ -49,106 +49,72 @@ func (ContainerDriver) EnumDescriptor() ([]byte, []int) {
|
||||
}
|
||||
|
||||
// Common metadata message nested in all reply message types
|
||||
type NodeMetadata struct {
|
||||
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
|
||||
type ResponseMetadata struct {
|
||||
// hostname of the server response comes from (injected by proxy)
|
||||
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
|
||||
// error is set if request failed to the upstream (rest of response is undefined)
|
||||
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) Reset() { *m = NodeMetadata{} }
|
||||
func (m *NodeMetadata) String() string { return proto.CompactTextString(m) }
|
||||
func (*NodeMetadata) ProtoMessage() {}
|
||||
func (*NodeMetadata) Descriptor() ([]byte, []int) {
|
||||
func (m *ResponseMetadata) Reset() { *m = ResponseMetadata{} }
|
||||
func (m *ResponseMetadata) String() string { return proto.CompactTextString(m) }
|
||||
func (*ResponseMetadata) ProtoMessage() {}
|
||||
func (*ResponseMetadata) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{0}
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_NodeMetadata.Unmarshal(m, b)
|
||||
func (m *ResponseMetadata) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ResponseMetadata.Unmarshal(m, b)
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_NodeMetadata.Marshal(b, m, deterministic)
|
||||
func (m *ResponseMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_ResponseMetadata.Marshal(b, m, deterministic)
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_NodeMetadata.Merge(m, src)
|
||||
func (m *ResponseMetadata) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_ResponseMetadata.Merge(m, src)
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) XXX_Size() int {
|
||||
return xxx_messageInfo_NodeMetadata.Size(m)
|
||||
func (m *ResponseMetadata) XXX_Size() int {
|
||||
return xxx_messageInfo_ResponseMetadata.Size(m)
|
||||
}
|
||||
|
||||
func (m *NodeMetadata) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_NodeMetadata.DiscardUnknown(m)
|
||||
func (m *ResponseMetadata) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_ResponseMetadata.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_NodeMetadata proto.InternalMessageInfo
|
||||
var xxx_messageInfo_ResponseMetadata proto.InternalMessageInfo
|
||||
|
||||
func (m *NodeMetadata) GetHostname() string {
|
||||
func (m *ResponseMetadata) GetHostname() string {
|
||||
if m != nil {
|
||||
return m.Hostname
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// The response message containing the requested logs.
|
||||
type Data struct {
|
||||
Bytes []byte `protobuf:"bytes,1,opt,name=bytes,proto3" json:"bytes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *Data) Reset() { *m = Data{} }
|
||||
func (m *Data) String() string { return proto.CompactTextString(m) }
|
||||
func (*Data) ProtoMessage() {}
|
||||
func (*Data) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{1}
|
||||
}
|
||||
|
||||
func (m *Data) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Data.Unmarshal(m, b)
|
||||
}
|
||||
|
||||
func (m *Data) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_Data.Marshal(b, m, deterministic)
|
||||
}
|
||||
|
||||
func (m *Data) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_Data.Merge(m, src)
|
||||
}
|
||||
|
||||
func (m *Data) XXX_Size() int {
|
||||
return xxx_messageInfo_Data.Size(m)
|
||||
}
|
||||
|
||||
func (m *Data) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_Data.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_Data proto.InternalMessageInfo
|
||||
|
||||
func (m *Data) GetBytes() []byte {
|
||||
func (m *ResponseMetadata) GetError() string {
|
||||
if m != nil {
|
||||
return m.Bytes
|
||||
return m.Error
|
||||
}
|
||||
return nil
|
||||
return ""
|
||||
}
|
||||
|
||||
type DataResponse struct {
|
||||
Metadata *NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Bytes *Data `protobuf:"bytes,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Bytes []byte `protobuf:"bytes,2,opt,name=bytes,proto3" json:"bytes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *DataResponse) Reset() { *m = DataResponse{} }
|
||||
func (m *DataResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*DataResponse) ProtoMessage() {}
|
||||
func (*DataResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{2}
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{1}
|
||||
}
|
||||
|
||||
func (m *DataResponse) XXX_Unmarshal(b []byte) error {
|
||||
@@ -173,14 +139,14 @@ func (m *DataResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_DataResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *DataResponse) GetMetadata() *NodeMetadata {
|
||||
func (m *DataResponse) GetMetadata() *ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *DataResponse) GetBytes() *Data {
|
||||
func (m *DataResponse) GetBytes() []byte {
|
||||
if m != nil {
|
||||
return m.Bytes
|
||||
}
|
||||
@@ -198,7 +164,7 @@ func (m *DataReply) Reset() { *m = DataReply{} }
|
||||
func (m *DataReply) String() string { return proto.CompactTextString(m) }
|
||||
func (*DataReply) ProtoMessage() {}
|
||||
func (*DataReply) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{3}
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{2}
|
||||
}
|
||||
|
||||
func (m *DataReply) XXX_Unmarshal(b []byte) error {
|
||||
@@ -230,32 +196,121 @@ func (m *DataReply) GetResponse() []*DataResponse {
|
||||
return nil
|
||||
}
|
||||
|
||||
type EmptyResponse struct {
|
||||
Metadata *ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) Reset() { *m = EmptyResponse{} }
|
||||
func (m *EmptyResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*EmptyResponse) ProtoMessage() {}
|
||||
func (*EmptyResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{3}
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_EmptyResponse.Unmarshal(m, b)
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_EmptyResponse.Marshal(b, m, deterministic)
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_EmptyResponse.Merge(m, src)
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) XXX_Size() int {
|
||||
return xxx_messageInfo_EmptyResponse.Size(m)
|
||||
}
|
||||
|
||||
func (m *EmptyResponse) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_EmptyResponse.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_EmptyResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *EmptyResponse) GetMetadata() *ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type EmptyReply struct {
|
||||
Response []*EmptyResponse `protobuf:"bytes,1,rep,name=response,proto3" json:"response,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *EmptyReply) Reset() { *m = EmptyReply{} }
|
||||
func (m *EmptyReply) String() string { return proto.CompactTextString(m) }
|
||||
func (*EmptyReply) ProtoMessage() {}
|
||||
func (*EmptyReply) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_8f954d82c0b891f6, []int{4}
|
||||
}
|
||||
|
||||
func (m *EmptyReply) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_EmptyReply.Unmarshal(m, b)
|
||||
}
|
||||
|
||||
func (m *EmptyReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_EmptyReply.Marshal(b, m, deterministic)
|
||||
}
|
||||
|
||||
func (m *EmptyReply) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_EmptyReply.Merge(m, src)
|
||||
}
|
||||
|
||||
func (m *EmptyReply) XXX_Size() int {
|
||||
return xxx_messageInfo_EmptyReply.Size(m)
|
||||
}
|
||||
|
||||
func (m *EmptyReply) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_EmptyReply.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_EmptyReply proto.InternalMessageInfo
|
||||
|
||||
func (m *EmptyReply) GetResponse() []*EmptyResponse {
|
||||
if m != nil {
|
||||
return m.Response
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("common.ContainerDriver", ContainerDriver_name, ContainerDriver_value)
|
||||
proto.RegisterType((*NodeMetadata)(nil), "common.NodeMetadata")
|
||||
proto.RegisterType((*Data)(nil), "common.Data")
|
||||
proto.RegisterType((*ResponseMetadata)(nil), "common.ResponseMetadata")
|
||||
proto.RegisterType((*DataResponse)(nil), "common.DataResponse")
|
||||
proto.RegisterType((*DataReply)(nil), "common.DataReply")
|
||||
proto.RegisterType((*EmptyResponse)(nil), "common.EmptyResponse")
|
||||
proto.RegisterType((*EmptyReply)(nil), "common.EmptyReply")
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("common/common.proto", fileDescriptor_8f954d82c0b891f6) }
|
||||
|
||||
var fileDescriptor_8f954d82c0b891f6 = []byte{
|
||||
// 254 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x90, 0xc1, 0x4b, 0xf3, 0x30,
|
||||
0x18, 0xc6, 0xbf, 0x7e, 0xd3, 0xb9, 0xbd, 0x16, 0x1d, 0x71, 0x87, 0x21, 0x1e, 0x46, 0x4f, 0x5a,
|
||||
0x71, 0x15, 0x3d, 0x7b, 0xd0, 0xd6, 0xc3, 0x0e, 0x56, 0x08, 0x9e, 0xbc, 0xa5, 0x36, 0xb8, 0xc2,
|
||||
0x92, 0xb7, 0x24, 0xaf, 0x42, 0xff, 0x7b, 0x69, 0x92, 0x95, 0x9e, 0xc2, 0x43, 0x7e, 0x3c, 0xbf,
|
||||
0x97, 0x07, 0x2e, 0xbe, 0x50, 0x29, 0xd4, 0x99, 0x7f, 0x36, 0xad, 0x41, 0x42, 0x36, 0xf5, 0x29,
|
||||
0x49, 0x21, 0x2e, 0xb1, 0x96, 0x6f, 0x92, 0x44, 0x2d, 0x48, 0xb0, 0x4b, 0x98, 0xed, 0xd0, 0x92,
|
||||
0x16, 0x4a, 0xae, 0xa2, 0x75, 0x74, 0x3d, 0xe7, 0x43, 0x4e, 0xae, 0xe0, 0xa8, 0xe8, 0x99, 0x25,
|
||||
0x1c, 0x57, 0x1d, 0x49, 0xeb, 0x80, 0x98, 0xfb, 0x90, 0xd4, 0x10, 0xf7, 0xbf, 0x5c, 0xda, 0x16,
|
||||
0xb5, 0x95, 0xec, 0x1e, 0x66, 0x2a, 0xb4, 0x3a, 0xf0, 0xf4, 0x61, 0xb9, 0x09, 0x27, 0x8c, 0x8d,
|
||||
0x7c, 0xa0, 0x58, 0x72, 0xe8, 0xfd, 0xef, 0xf0, 0xf8, 0x80, 0xbb, 0xda, 0x60, 0x79, 0x82, 0xb9,
|
||||
0xb7, 0xb4, 0xfb, 0xae, 0x57, 0x98, 0xa0, 0x5b, 0x45, 0xeb, 0xc9, 0x58, 0x31, 0x3e, 0x85, 0x0f,
|
||||
0x54, 0x9a, 0xc2, 0x79, 0x8e, 0x9a, 0x44, 0xa3, 0xa5, 0x29, 0x4c, 0xf3, 0x2b, 0x0d, 0x3b, 0x03,
|
||||
0xc8, 0xdf, 0xcb, 0x8f, 0xe7, 0x6d, 0xf9, 0xca, 0x8b, 0xc5, 0x3f, 0x76, 0x02, 0x93, 0x9c, 0x6f,
|
||||
0x17, 0xd1, 0xcb, 0xed, 0xe7, 0xcd, 0x77, 0x43, 0xbb, 0x9f, 0xaa, 0xef, 0xcc, 0x48, 0xec, 0xd1,
|
||||
0xde, 0xd9, 0xce, 0x92, 0x54, 0xd6, 0xa7, 0x4c, 0xb4, 0x4d, 0x58, 0xb5, 0x9a, 0xba, 0x59, 0x1f,
|
||||
0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x3c, 0xf1, 0xf3, 0x6d, 0x01, 0x00, 0x00,
|
||||
// 279 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0xd1, 0xcf, 0x4b, 0xc3, 0x30,
|
||||
0x14, 0x07, 0x70, 0xeb, 0x70, 0x76, 0x6f, 0x53, 0x4b, 0x9c, 0x50, 0x3c, 0x8d, 0x9e, 0xe6, 0xc4,
|
||||
0x55, 0xa7, 0x57, 0x11, 0x6d, 0x7b, 0xd8, 0xc1, 0x09, 0xc1, 0xd3, 0x6e, 0xa9, 0x06, 0x57, 0x58,
|
||||
0x9a, 0x90, 0x3c, 0x85, 0xfe, 0xf7, 0xd2, 0x26, 0xad, 0xbf, 0x8e, 0x9e, 0xc2, 0x97, 0x3c, 0x3e,
|
||||
0xef, 0x0b, 0x0f, 0x8e, 0x5f, 0xa4, 0x10, 0xb2, 0x8c, 0xed, 0x33, 0x57, 0x5a, 0xa2, 0x24, 0x7d,
|
||||
0x9b, 0xa2, 0x14, 0x02, 0xca, 0x8d, 0x92, 0xa5, 0xe1, 0x8f, 0x1c, 0xd9, 0x2b, 0x43, 0x46, 0x4e,
|
||||
0xc1, 0xdf, 0x48, 0x83, 0x25, 0x13, 0x3c, 0xf4, 0x26, 0xde, 0x74, 0x40, 0xbb, 0x4c, 0xc6, 0xb0,
|
||||
0xc7, 0xb5, 0x96, 0x3a, 0xdc, 0x6d, 0x3e, 0x6c, 0x88, 0xd6, 0x30, 0x4a, 0x19, 0xb2, 0x56, 0x22,
|
||||
0x37, 0xe0, 0x0b, 0xa7, 0x35, 0xc2, 0x70, 0x11, 0xce, 0xdd, 0xfa, 0xdf, 0xdb, 0x68, 0x37, 0x59,
|
||||
0xdb, 0x79, 0x85, 0xdc, 0x34, 0xf6, 0x88, 0xda, 0x10, 0xdd, 0xc2, 0xc0, 0xda, 0x6a, 0x5b, 0x91,
|
||||
0x4b, 0xf0, 0xb5, 0x03, 0x42, 0x6f, 0xd2, 0x9b, 0x0e, 0x17, 0xe3, 0x16, 0xfe, 0x5e, 0x80, 0x76,
|
||||
0x53, 0x51, 0x06, 0x07, 0x99, 0x50, 0x58, 0xfd, 0xaf, 0x5b, 0x74, 0x07, 0xe0, 0x98, 0xba, 0xc6,
|
||||
0xd5, 0x9f, 0x1a, 0x27, 0xad, 0xf1, 0x63, 0xd9, 0x57, 0x8f, 0xd9, 0x0c, 0x8e, 0x12, 0x59, 0x22,
|
||||
0x2b, 0x4a, 0xae, 0x53, 0x5d, 0x7c, 0x70, 0x4d, 0x0e, 0x01, 0x92, 0xa7, 0xd5, 0xf3, 0xfd, 0x72,
|
||||
0x95, 0xd1, 0x34, 0xd8, 0x21, 0xfb, 0xd0, 0x4b, 0xe8, 0x32, 0xf0, 0x1e, 0xce, 0xd7, 0x67, 0x6f,
|
||||
0x05, 0x6e, 0xde, 0xf3, 0x1a, 0x8d, 0x91, 0x6d, 0xa5, 0xb9, 0x30, 0x95, 0x41, 0x2e, 0x8c, 0x4d,
|
||||
0x31, 0x53, 0x85, 0xbb, 0x67, 0xde, 0x6f, 0x0e, 0x7a, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0xc9,
|
||||
0x87, 0x28, 0x41, 0xe7, 0x01, 0x00, 0x00,
|
||||
}
|
||||
|
||||
@@ -5,24 +5,30 @@ package common;
|
||||
option go_package = "github.com/talos-systems/talos/api/common";
|
||||
|
||||
// Common metadata message nested in all reply message types
|
||||
message NodeMetadata {
|
||||
message ResponseMetadata {
|
||||
// hostname of the server response comes from (injected by proxy)
|
||||
string hostname = 1;
|
||||
}
|
||||
|
||||
// The response message containing the requested logs.
|
||||
message Data {
|
||||
bytes bytes = 1;
|
||||
// error is set if request failed to the upstream (rest of response is undefined)
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
message DataResponse {
|
||||
NodeMetadata metadata = 1;
|
||||
Data bytes = 2;
|
||||
ResponseMetadata metadata = 1;
|
||||
bytes bytes = 2;
|
||||
}
|
||||
|
||||
message DataReply {
|
||||
repeated DataResponse response = 1;
|
||||
}
|
||||
|
||||
message EmptyResponse {
|
||||
ResponseMetadata metadata = 1;
|
||||
}
|
||||
|
||||
message EmptyReply {
|
||||
repeated EmptyResponse response = 1;
|
||||
}
|
||||
|
||||
enum ContainerDriver {
|
||||
CONTAINERD = 0;
|
||||
CRI = 1;
|
||||
|
||||
@@ -32,10 +32,10 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||
// rpc reboot
|
||||
// The response message containing the reboot status.
|
||||
type RebootResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *RebootResponse) Reset() { *m = RebootResponse{} }
|
||||
@@ -67,7 +67,7 @@ func (m *RebootResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_RebootResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *RebootResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *RebootResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -120,10 +120,10 @@ func (m *RebootReply) GetResponse() []*RebootResponse {
|
||||
// rpc reset
|
||||
// The response message containing the restart status.
|
||||
type ResetResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ResetResponse) Reset() { *m = ResetResponse{} }
|
||||
@@ -155,7 +155,7 @@ func (m *ResetResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ResetResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ResetResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ResetResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -208,10 +208,10 @@ func (m *ResetReply) GetResponse() []*ResetResponse {
|
||||
// rpc shutdown
|
||||
// The response message containing the shutdown status.
|
||||
type ShutdownResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ShutdownResponse) Reset() { *m = ShutdownResponse{} }
|
||||
@@ -243,7 +243,7 @@ func (m *ShutdownResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ShutdownResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ShutdownResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ShutdownResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -338,11 +338,11 @@ func (m *UpgradeRequest) GetImage() string {
|
||||
}
|
||||
|
||||
type UpgradeResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Ack string `protobuf:"bytes,2,opt,name=ack,proto3" json:"ack,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Ack string `protobuf:"bytes,2,opt,name=ack,proto3" json:"ack,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *UpgradeResponse) Reset() { *m = UpgradeResponse{} }
|
||||
@@ -374,7 +374,7 @@ func (m *UpgradeResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_UpgradeResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *UpgradeResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *UpgradeResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -433,11 +433,11 @@ func (m *UpgradeReply) GetResponse() []*UpgradeResponse {
|
||||
|
||||
// rpc servicelist
|
||||
type ServiceListResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Services []*ServiceInfo `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Services []*ServiceInfo `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ServiceListResponse) Reset() { *m = ServiceListResponse{} }
|
||||
@@ -469,7 +469,7 @@ func (m *ServiceListResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ServiceListResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ServiceListResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ServiceListResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -807,11 +807,11 @@ func (m *ServiceStartRequest) GetId() string {
|
||||
}
|
||||
|
||||
type ServiceStartResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ServiceStartResponse) Reset() { *m = ServiceStartResponse{} }
|
||||
@@ -843,7 +843,7 @@ func (m *ServiceStartResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ServiceStartResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ServiceStartResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ServiceStartResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -944,11 +944,11 @@ func (m *ServiceStopRequest) GetId() string {
|
||||
}
|
||||
|
||||
type ServiceStopResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ServiceStopResponse) Reset() { *m = ServiceStopResponse{} }
|
||||
@@ -980,7 +980,7 @@ func (m *ServiceStopResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ServiceStopResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ServiceStopResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ServiceStopResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -1081,11 +1081,11 @@ func (m *ServiceRestartRequest) GetId() string {
|
||||
}
|
||||
|
||||
type ServiceRestartResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Resp string `protobuf:"bytes,2,opt,name=resp,proto3" json:"resp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ServiceRestartResponse) Reset() { *m = ServiceRestartResponse{} }
|
||||
@@ -1117,7 +1117,7 @@ func (m *ServiceRestartResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ServiceRestartResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ServiceRestartResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ServiceRestartResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -1350,58 +1350,6 @@ func (m *StopReply) GetResp() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// StreamingData is used to stream back responses
|
||||
type StreamingData struct {
|
||||
Bytes []byte `protobuf:"bytes,1,opt,name=bytes,proto3" json:"bytes,omitempty"`
|
||||
Errors string `protobuf:"bytes,2,opt,name=errors,proto3" json:"errors,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *StreamingData) Reset() { *m = StreamingData{} }
|
||||
func (m *StreamingData) String() string { return proto.CompactTextString(m) }
|
||||
func (*StreamingData) ProtoMessage() {}
|
||||
func (*StreamingData) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{28}
|
||||
}
|
||||
|
||||
func (m *StreamingData) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_StreamingData.Unmarshal(m, b)
|
||||
}
|
||||
|
||||
func (m *StreamingData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_StreamingData.Marshal(b, m, deterministic)
|
||||
}
|
||||
|
||||
func (m *StreamingData) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_StreamingData.Merge(m, src)
|
||||
}
|
||||
|
||||
func (m *StreamingData) XXX_Size() int {
|
||||
return xxx_messageInfo_StreamingData.Size(m)
|
||||
}
|
||||
|
||||
func (m *StreamingData) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_StreamingData.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_StreamingData proto.InternalMessageInfo
|
||||
|
||||
func (m *StreamingData) GetBytes() []byte {
|
||||
if m != nil {
|
||||
return m.Bytes
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *StreamingData) GetErrors() string {
|
||||
if m != nil {
|
||||
return m.Errors
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// CopyOutRequest describes a request to copy data out of Talos node
|
||||
//
|
||||
// CopyOut produces .tar.gz archive which is streamed back to the caller
|
||||
@@ -1417,7 +1365,7 @@ func (m *CopyOutRequest) Reset() { *m = CopyOutRequest{} }
|
||||
func (m *CopyOutRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*CopyOutRequest) ProtoMessage() {}
|
||||
func (*CopyOutRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{29}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{28}
|
||||
}
|
||||
|
||||
func (m *CopyOutRequest) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1468,7 +1416,7 @@ func (m *LSRequest) Reset() { *m = LSRequest{} }
|
||||
func (m *LSRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*LSRequest) ProtoMessage() {}
|
||||
func (*LSRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{30}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{29}
|
||||
}
|
||||
|
||||
func (m *LSRequest) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1516,23 +1464,24 @@ func (m *LSRequest) GetRecursionDepth() int32 {
|
||||
|
||||
// FileInfo describes a file or directory's information
|
||||
type FileInfo struct {
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
// Name is the name (including prefixed path) of the file or directory
|
||||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
||||
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
|
||||
// Size indicates the number of bytes contained within the file
|
||||
Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
|
||||
Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
|
||||
// Mode is the bitmap of UNIX mode/permission flags of the file
|
||||
Mode uint32 `protobuf:"varint,3,opt,name=mode,proto3" json:"mode,omitempty"`
|
||||
Mode uint32 `protobuf:"varint,4,opt,name=mode,proto3" json:"mode,omitempty"`
|
||||
// Modified indicates the UNIX timestamp at which the file was last modified
|
||||
Modified int64 `protobuf:"varint,4,opt,name=modified,proto3" json:"modified,omitempty"`
|
||||
Modified int64 `protobuf:"varint,5,opt,name=modified,proto3" json:"modified,omitempty"`
|
||||
// IsDir indicates that the file is a directory
|
||||
IsDir bool `protobuf:"varint,5,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"`
|
||||
IsDir bool `protobuf:"varint,6,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"`
|
||||
// Error describes any error encountered while trying to read the file
|
||||
// information.
|
||||
Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"`
|
||||
Error string `protobuf:"bytes,7,opt,name=error,proto3" json:"error,omitempty"`
|
||||
// Link is filled with symlink target
|
||||
Link string `protobuf:"bytes,7,opt,name=link,proto3" json:"link,omitempty"`
|
||||
Link string `protobuf:"bytes,8,opt,name=link,proto3" json:"link,omitempty"`
|
||||
// RelativeName is the name of the file or directory relative to the RootPath
|
||||
RelativeName string `protobuf:"bytes,8,opt,name=relative_name,json=relativeName,proto3" json:"relative_name,omitempty"`
|
||||
RelativeName string `protobuf:"bytes,9,opt,name=relative_name,json=relativeName,proto3" json:"relative_name,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
@@ -1542,7 +1491,7 @@ func (m *FileInfo) Reset() { *m = FileInfo{} }
|
||||
func (m *FileInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*FileInfo) ProtoMessage() {}
|
||||
func (*FileInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{31}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{30}
|
||||
}
|
||||
|
||||
func (m *FileInfo) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1567,6 +1516,13 @@ func (m *FileInfo) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_FileInfo proto.InternalMessageInfo
|
||||
|
||||
func (m *FileInfo) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *FileInfo) GetName() string {
|
||||
if m != nil {
|
||||
return m.Name
|
||||
@@ -1625,18 +1581,18 @@ func (m *FileInfo) GetRelativeName() string {
|
||||
|
||||
// The response message containing the requested df stats.
|
||||
type MountsResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Stats []*MountStat `protobuf:"bytes,2,rep,name=stats,proto3" json:"stats,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Stats []*MountStat `protobuf:"bytes,2,rep,name=stats,proto3" json:"stats,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *MountsResponse) Reset() { *m = MountsResponse{} }
|
||||
func (m *MountsResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*MountsResponse) ProtoMessage() {}
|
||||
func (*MountsResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{32}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{31}
|
||||
}
|
||||
|
||||
func (m *MountsResponse) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1661,7 +1617,7 @@ func (m *MountsResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_MountsResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *MountsResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *MountsResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -1686,7 +1642,7 @@ func (m *MountsReply) Reset() { *m = MountsReply{} }
|
||||
func (m *MountsReply) String() string { return proto.CompactTextString(m) }
|
||||
func (*MountsReply) ProtoMessage() {}
|
||||
func (*MountsReply) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{33}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{32}
|
||||
}
|
||||
|
||||
func (m *MountsReply) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1733,7 +1689,7 @@ func (m *MountStat) Reset() { *m = MountStat{} }
|
||||
func (m *MountStat) String() string { return proto.CompactTextString(m) }
|
||||
func (*MountStat) ProtoMessage() {}
|
||||
func (*MountStat) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{34}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{33}
|
||||
}
|
||||
|
||||
func (m *MountStat) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1787,19 +1743,19 @@ func (m *MountStat) GetMountedOn() string {
|
||||
}
|
||||
|
||||
type VersionResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Version *VersionInfo `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
|
||||
Platform *PlatformInfo `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Version *VersionInfo `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
|
||||
Platform *PlatformInfo `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *VersionResponse) Reset() { *m = VersionResponse{} }
|
||||
func (m *VersionResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*VersionResponse) ProtoMessage() {}
|
||||
func (*VersionResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{35}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{34}
|
||||
}
|
||||
|
||||
func (m *VersionResponse) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1824,7 +1780,7 @@ func (m *VersionResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_VersionResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *VersionResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *VersionResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -1856,7 +1812,7 @@ func (m *VersionReply) Reset() { *m = VersionReply{} }
|
||||
func (m *VersionReply) String() string { return proto.CompactTextString(m) }
|
||||
func (*VersionReply) ProtoMessage() {}
|
||||
func (*VersionReply) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{36}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{35}
|
||||
}
|
||||
|
||||
func (m *VersionReply) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1904,7 +1860,7 @@ func (m *VersionInfo) Reset() { *m = VersionInfo{} }
|
||||
func (m *VersionInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*VersionInfo) ProtoMessage() {}
|
||||
func (*VersionInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{37}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{36}
|
||||
}
|
||||
|
||||
func (m *VersionInfo) XXX_Unmarshal(b []byte) error {
|
||||
@@ -1983,7 +1939,7 @@ func (m *PlatformInfo) Reset() { *m = PlatformInfo{} }
|
||||
func (m *PlatformInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*PlatformInfo) ProtoMessage() {}
|
||||
func (*PlatformInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{38}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{37}
|
||||
}
|
||||
|
||||
func (m *PlatformInfo) XXX_Unmarshal(b []byte) error {
|
||||
@@ -2038,7 +1994,7 @@ func (m *LogsRequest) Reset() { *m = LogsRequest{} }
|
||||
func (m *LogsRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*LogsRequest) ProtoMessage() {}
|
||||
func (*LogsRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{39}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{38}
|
||||
}
|
||||
|
||||
func (m *LogsRequest) XXX_Unmarshal(b []byte) error {
|
||||
@@ -2095,7 +2051,7 @@ func (m *ReadRequest) Reset() { *m = ReadRequest{} }
|
||||
func (m *ReadRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*ReadRequest) ProtoMessage() {}
|
||||
func (*ReadRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{40}
|
||||
return fileDescriptor_84b4f59d98cc997c, []int{39}
|
||||
}
|
||||
|
||||
func (m *ReadRequest) XXX_Unmarshal(b []byte) error {
|
||||
@@ -2156,7 +2112,6 @@ func init() {
|
||||
proto.RegisterType((*StartReply)(nil), "machine.StartReply")
|
||||
proto.RegisterType((*StopRequest)(nil), "machine.StopRequest")
|
||||
proto.RegisterType((*StopReply)(nil), "machine.StopReply")
|
||||
proto.RegisterType((*StreamingData)(nil), "machine.StreamingData")
|
||||
proto.RegisterType((*CopyOutRequest)(nil), "machine.CopyOutRequest")
|
||||
proto.RegisterType((*LSRequest)(nil), "machine.LSRequest")
|
||||
proto.RegisterType((*FileInfo)(nil), "machine.FileInfo")
|
||||
@@ -2174,102 +2129,100 @@ func init() {
|
||||
func init() { proto.RegisterFile("machine/machine.proto", fileDescriptor_84b4f59d98cc997c) }
|
||||
|
||||
var fileDescriptor_84b4f59d98cc997c = []byte{
|
||||
// 1515 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xeb, 0x6f, 0x13, 0x47,
|
||||
0x10, 0x97, 0x1d, 0xc7, 0x8f, 0xb1, 0xe3, 0xc0, 0xe6, 0x81, 0x31, 0xe1, 0x75, 0xd0, 0x82, 0x50,
|
||||
0xe3, 0xd0, 0x00, 0x11, 0x8f, 0x16, 0x41, 0x08, 0x88, 0x8a, 0x24, 0xa0, 0x4b, 0xe9, 0x87, 0xb6,
|
||||
0xaa, 0xb5, 0xb6, 0x37, 0xf6, 0x8a, 0xbb, 0xdb, 0xeb, 0xed, 0x3a, 0xc8, 0x55, 0xbf, 0xb7, 0xea,
|
||||
0xd7, 0xfe, 0x09, 0x95, 0xfa, 0xb7, 0xf4, 0xcf, 0xaa, 0xf6, 0x71, 0xeb, 0xf5, 0x39, 0x0e, 0x88,
|
||||
0xf0, 0xc9, 0xbb, 0xb3, 0x73, 0x33, 0xbf, 0xdf, 0xec, 0xec, 0xec, 0xac, 0x61, 0x25, 0xc4, 0xdd,
|
||||
0x01, 0x8d, 0xc8, 0x86, 0xf9, 0x6d, 0xc5, 0x09, 0x13, 0x0c, 0x95, 0xcc, 0xb4, 0x79, 0xa1, 0xcf,
|
||||
0x58, 0x3f, 0x20, 0x1b, 0x4a, 0xdc, 0x19, 0x1e, 0x6e, 0x90, 0x30, 0x16, 0x23, 0xad, 0xd5, 0xbc,
|
||||
0x9c, 0x5d, 0x14, 0x34, 0x24, 0x5c, 0xe0, 0x30, 0x36, 0x0a, 0x4b, 0x5d, 0x16, 0x86, 0x2c, 0xda,
|
||||
0xd0, 0x3f, 0x5a, 0xe8, 0x6d, 0x43, 0xdd, 0x27, 0x1d, 0xc6, 0x84, 0x4f, 0x78, 0xcc, 0x22, 0x4e,
|
||||
0xd0, 0x6d, 0x28, 0x87, 0x44, 0xe0, 0x1e, 0x16, 0xb8, 0x91, 0xbb, 0x92, 0xbb, 0x59, 0xdd, 0x5c,
|
||||
0x6e, 0x99, 0x4f, 0xf6, 0x59, 0x8f, 0xec, 0x99, 0x35, 0xdf, 0x6a, 0x79, 0xdb, 0x50, 0x4d, 0x6d,
|
||||
0xc4, 0xc1, 0x08, 0xdd, 0x81, 0x72, 0x62, 0x8c, 0x35, 0x72, 0x57, 0xe6, 0x6e, 0x56, 0x37, 0xcf,
|
||||
0xb5, 0x52, 0x42, 0x93, 0xbe, 0x7c, 0xab, 0xe8, 0x3d, 0x85, 0x05, 0x9f, 0x70, 0x72, 0x1a, 0x18,
|
||||
0x4f, 0x00, 0x8c, 0x09, 0x89, 0x62, 0x73, 0x0a, 0xc5, 0xaa, 0x83, 0xc2, 0xf1, 0xe4, 0x80, 0xd8,
|
||||
0x81, 0x33, 0x07, 0x83, 0xa1, 0xe8, 0xb1, 0xf7, 0xd1, 0x29, 0x70, 0xbc, 0x80, 0x85, 0xb1, 0x15,
|
||||
0x09, 0xe5, 0xde, 0x14, 0x94, 0xf3, 0x16, 0x4a, 0xd6, 0x9f, 0x83, 0xe6, 0x4b, 0xa8, 0xbf, 0x8d,
|
||||
0xfb, 0x09, 0xee, 0x11, 0x9f, 0xfc, 0x3a, 0x24, 0x5c, 0xa0, 0x65, 0x98, 0xa7, 0x21, 0xee, 0x13,
|
||||
0x05, 0xa4, 0xe2, 0xeb, 0x89, 0xf7, 0x16, 0x16, 0xad, 0xde, 0xa7, 0x82, 0x46, 0x67, 0x60, 0x0e,
|
||||
0x77, 0xdf, 0x35, 0xf2, 0xca, 0xb0, 0x1c, 0x7a, 0x3b, 0x50, 0xb3, 0x66, 0x25, 0x8b, 0xbb, 0x53,
|
||||
0x2c, 0x1a, 0x96, 0x45, 0xc6, 0xbf, 0x43, 0x62, 0x04, 0x4b, 0x07, 0x24, 0x39, 0xa2, 0x5d, 0xb2,
|
||||
0x4b, 0xf9, 0x29, 0x76, 0x57, 0x7e, 0xc1, 0xb5, 0x21, 0xde, 0xc8, 0x2b, 0xf7, 0xcb, 0xe3, 0x20,
|
||||
0xea, 0x85, 0xef, 0xa2, 0x43, 0xe6, 0x5b, 0x2d, 0x6f, 0x17, 0xce, 0x4c, 0xb8, 0x96, 0x24, 0xee,
|
||||
0x4f, 0x91, 0x58, 0xcb, 0x5a, 0x71, 0x71, 0x3a, 0x44, 0xfe, 0xce, 0x41, 0xd5, 0xf1, 0x83, 0xea,
|
||||
0x90, 0xa7, 0x3d, 0xb3, 0x11, 0x79, 0xda, 0x93, 0x7b, 0xc3, 0x05, 0x16, 0xc4, 0x84, 0x50, 0x4f,
|
||||
0x50, 0x0b, 0x8a, 0xe4, 0x88, 0x44, 0x82, 0x37, 0xe6, 0x14, 0xcb, 0xd5, 0xac, 0xb7, 0xe7, 0x6a,
|
||||
0xd5, 0x37, 0x5a, 0x52, 0x7f, 0x40, 0x70, 0x20, 0x06, 0x8d, 0xc2, 0xf1, 0xfa, 0x2f, 0xd5, 0xaa,
|
||||
0x6f, 0xb4, 0xbc, 0xc7, 0xb0, 0x30, 0x61, 0x08, 0xad, 0x5b, 0x87, 0x9a, 0xde, 0xca, 0xb1, 0x0e,
|
||||
0x53, 0x7f, 0x5e, 0x07, 0x6a, 0xae, 0x5c, 0xa6, 0x41, 0xc8, 0xfb, 0x86, 0x96, 0x1c, 0xce, 0xe0,
|
||||
0x75, 0x0b, 0xf2, 0x96, 0x53, 0xb3, 0xa5, 0x2b, 0x4f, 0x2b, 0xad, 0x3c, 0xad, 0xef, 0xd3, 0xca,
|
||||
0xe3, 0xe7, 0x05, 0xf7, 0xfe, 0xc9, 0x59, 0x90, 0x1a, 0x3d, 0x6a, 0x40, 0x69, 0x18, 0xbd, 0x8b,
|
||||
0xd8, 0xfb, 0x48, 0x79, 0x2a, 0xfb, 0xe9, 0x54, 0xae, 0x68, 0x66, 0x23, 0xe5, 0xaf, 0xec, 0xa7,
|
||||
0x53, 0x74, 0x15, 0x6a, 0x01, 0xe6, 0xa2, 0x1d, 0x12, 0xce, 0xe5, 0x11, 0x98, 0x53, 0x70, 0xaa,
|
||||
0x52, 0xb6, 0xa7, 0x45, 0xe8, 0x11, 0xa8, 0x69, 0xbb, 0x3b, 0xc0, 0x51, 0x9f, 0x98, 0x08, 0x9e,
|
||||
0x84, 0x0e, 0xa4, 0xfa, 0x33, 0xa5, 0xed, 0x7d, 0x61, 0x13, 0xf5, 0x40, 0xe0, 0x44, 0xa4, 0x47,
|
||||
0x2e, 0xb3, 0xcd, 0xde, 0xcf, 0xb0, 0x3c, 0xa9, 0xf6, 0xc9, 0x09, 0x8d, 0xa0, 0x20, 0x93, 0xcb,
|
||||
0xc4, 0x55, 0x8d, 0xbd, 0x7d, 0x38, 0x3b, 0x69, 0x5d, 0xe6, 0xec, 0x83, 0xa9, 0x9c, 0xbd, 0x98,
|
||||
0xdd, 0xd4, 0x09, 0x2c, 0x4e, 0xd2, 0x5e, 0x07, 0x64, 0x35, 0x58, 0x3c, 0x8b, 0xd3, 0x4f, 0x0e,
|
||||
0x75, 0xa9, 0xf5, 0x59, 0x29, 0x8d, 0x4f, 0xa1, 0x36, 0xfe, 0x91, 0xa7, 0xd0, 0x45, 0xe2, 0x10,
|
||||
0xba, 0x01, 0x2b, 0x46, 0xc1, 0x97, 0x7b, 0x38, 0x7b, 0x9f, 0x7e, 0x81, 0xd5, 0xac, 0xe2, 0x67,
|
||||
0xa5, 0xe5, 0xdb, 0x98, 0x59, 0xfb, 0x92, 0xd9, 0xa3, 0x29, 0x66, 0x97, 0xb3, 0xcc, 0x32, 0x78,
|
||||
0x1c, 0x72, 0x1e, 0xd4, 0x4e, 0xca, 0xbd, 0x87, 0xf9, 0x46, 0xce, 0xbb, 0x0e, 0xe0, 0xa4, 0x46,
|
||||
0x8a, 0x2c, 0x37, 0x46, 0xa6, 0xb4, 0xae, 0x42, 0xf5, 0x84, 0x0d, 0x57, 0x2a, 0xd7, 0xa0, 0x32,
|
||||
0xde, 0x90, 0x59, 0x76, 0xbe, 0x85, 0x85, 0x03, 0x91, 0x10, 0x1c, 0xd2, 0xa8, 0xbf, 0x23, 0x43,
|
||||
0xb1, 0x0c, 0xf3, 0x9d, 0x91, 0x20, 0x5c, 0x69, 0xd6, 0x7c, 0x3d, 0x41, 0xab, 0x50, 0x24, 0x49,
|
||||
0xc2, 0x12, 0x6e, 0x42, 0x64, 0x66, 0xde, 0x3a, 0xd4, 0x9f, 0xb1, 0x78, 0xf4, 0x7a, 0x68, 0x29,
|
||||
0x5d, 0x80, 0x4a, 0xc2, 0x98, 0x68, 0xc7, 0x58, 0x0c, 0x8c, 0xb7, 0xb2, 0x14, 0xbc, 0xc1, 0x62,
|
||||
0xe0, 0x75, 0xa0, 0xb2, 0x7b, 0x90, 0x6a, 0x4a, 0x48, 0x8c, 0x09, 0x0b, 0x89, 0x31, 0x21, 0xab,
|
||||
0x43, 0x42, 0xba, 0xc3, 0x84, 0x93, 0xb4, 0x3a, 0x98, 0x29, 0xba, 0x01, 0x8b, 0x7a, 0x48, 0x59,
|
||||
0xd4, 0xee, 0x91, 0x58, 0x0c, 0x54, 0x81, 0x98, 0xf7, 0xeb, 0x56, 0xbc, 0x23, 0xa5, 0xde, 0x7f,
|
||||
0x39, 0x28, 0xbf, 0xa0, 0x81, 0xae, 0xe1, 0x08, 0x0a, 0x11, 0x0e, 0xd3, 0xeb, 0x54, 0x8d, 0xa5,
|
||||
0x8c, 0xd3, 0xdf, 0xb4, 0x83, 0x39, 0x5f, 0x8d, 0xa5, 0x2c, 0x64, 0x3d, 0x5d, 0x73, 0x16, 0x7c,
|
||||
0x35, 0x46, 0x4d, 0x28, 0x87, 0xac, 0x47, 0x0f, 0x29, 0xe9, 0xa9, 0x4a, 0x33, 0xe7, 0xdb, 0x39,
|
||||
0x5a, 0x81, 0x22, 0xe5, 0xed, 0x1e, 0x4d, 0x1a, 0xf3, 0x0a, 0xe6, 0x3c, 0xe5, 0x3b, 0x34, 0x91,
|
||||
0xc1, 0x53, 0x81, 0x69, 0x14, 0x75, 0x29, 0x55, 0x13, 0x69, 0x3c, 0xa0, 0xd1, 0xbb, 0x46, 0x49,
|
||||
0x83, 0x90, 0x63, 0x74, 0x0d, 0x16, 0x12, 0x12, 0x60, 0x41, 0x8f, 0x48, 0x5b, 0x21, 0x2c, 0xab,
|
||||
0xc5, 0x5a, 0x2a, 0xdc, 0xc7, 0x21, 0xf1, 0x02, 0xa8, 0xef, 0xb1, 0xa1, 0xbc, 0x3d, 0x3e, 0x3d,
|
||||
0xb5, 0x6f, 0xea, 0xea, 0x9e, 0x5e, 0xa9, 0xc8, 0x26, 0xab, 0xb2, 0x7c, 0x20, 0xb0, 0xd0, 0x15,
|
||||
0x9f, 0xcb, 0x26, 0x2f, 0xf5, 0xf6, 0xa1, 0x26, 0x6f, 0x12, 0x95, 0x93, 0xe0, 0xbf, 0x43, 0xc5,
|
||||
0xda, 0x45, 0x97, 0x00, 0x0e, 0x69, 0x40, 0xf8, 0x88, 0x0b, 0x12, 0x9a, 0x2d, 0x70, 0x24, 0x13,
|
||||
0x1b, 0x51, 0x30, 0x1b, 0xb1, 0x06, 0x15, 0x7c, 0x84, 0x69, 0x80, 0x3b, 0x81, 0xde, 0x8d, 0x82,
|
||||
0x3f, 0x16, 0xa0, 0x8b, 0x00, 0xa1, 0x34, 0x4f, 0x7a, 0x6d, 0x16, 0xa9, 0x4d, 0xa9, 0xf8, 0x15,
|
||||
0x23, 0x79, 0x1d, 0x79, 0xff, 0xe6, 0x60, 0xf1, 0x07, 0xa2, 0x72, 0xe1, 0x14, 0x11, 0x6b, 0x41,
|
||||
0xe9, 0x48, 0x1b, 0x51, 0xc8, 0xdc, 0x36, 0xc4, 0x18, 0x57, 0x6d, 0x48, 0xaa, 0x84, 0xbe, 0x86,
|
||||
0x72, 0x1c, 0x60, 0x71, 0xc8, 0x92, 0xd0, 0xdc, 0x97, 0xe3, 0x2b, 0xf9, 0x8d, 0x59, 0xd0, 0x8d,
|
||||
0x4b, 0xaa, 0x26, 0x3b, 0x2f, 0x8b, 0xf3, 0x43, 0x9d, 0x57, 0x86, 0x90, 0x13, 0xec, 0xbf, 0x72,
|
||||
0x50, 0x75, 0x10, 0xc9, 0xab, 0x5d, 0x60, 0x7b, 0xb5, 0x0b, 0xdc, 0x97, 0x12, 0x3e, 0xc0, 0x69,
|
||||
0xcf, 0xc7, 0x07, 0xfa, 0x78, 0x0f, 0x69, 0x20, 0xcc, 0xed, 0xaa, 0x27, 0x32, 0xae, 0x7d, 0xd6,
|
||||
0x4e, 0x59, 0x9b, 0xb8, 0xf6, 0x99, 0x31, 0x2e, 0xab, 0x0b, 0xe3, 0x2a, 0xd3, 0x2b, 0x7e, 0x9e,
|
||||
0x71, 0xb9, 0x71, 0x38, 0xe9, 0x0e, 0x4c, 0x96, 0xab, 0xb1, 0xb7, 0x05, 0x35, 0x97, 0xec, 0xac,
|
||||
0x93, 0xa7, 0x4e, 0x99, 0x29, 0xb3, 0x72, 0xec, 0x05, 0x50, 0xdd, 0x65, 0x7d, 0x9e, 0x16, 0x85,
|
||||
0x35, 0xa8, 0x48, 0x55, 0x1e, 0xe3, 0x6e, 0xfa, 0xed, 0x58, 0x60, 0xca, 0x5c, 0xde, 0xb6, 0x64,
|
||||
0x1b, 0x50, 0xec, 0x25, 0xf4, 0x88, 0x24, 0x8a, 0x4e, 0x7d, 0xf3, 0x5c, 0xba, 0xb5, 0xcf, 0x58,
|
||||
0x24, 0x30, 0x8d, 0x48, 0xb2, 0xa3, 0x96, 0x7d, 0xa3, 0x26, 0xcb, 0xa6, 0x4f, 0x70, 0xcf, 0x29,
|
||||
0x41, 0x4e, 0x9d, 0x52, 0xe3, 0xcd, 0x3f, 0xca, 0x50, 0xda, 0xd3, 0xb1, 0x47, 0xdf, 0x40, 0xc9,
|
||||
0x94, 0x37, 0x34, 0x4e, 0xfe, 0xc9, 0x82, 0xd7, 0x74, 0x1a, 0x38, 0xb7, 0x90, 0xde, 0xce, 0xa1,
|
||||
0xc7, 0x00, 0xaf, 0x86, 0x1d, 0xd2, 0x65, 0xd1, 0x21, 0xed, 0xa3, 0xd5, 0xa9, 0x36, 0xe5, 0xb9,
|
||||
0x7c, 0xdb, 0x9d, 0xf0, 0xfd, 0x3a, 0xe4, 0x77, 0x0f, 0xd0, 0xf8, 0xc4, 0xda, 0xd2, 0xd9, 0x3c,
|
||||
0x6b, 0x65, 0x69, 0xa5, 0xbb, 0x9d, 0x43, 0x5f, 0x41, 0x41, 0x46, 0x12, 0x8d, 0xd3, 0xd5, 0x09,
|
||||
0x6c, 0xb3, 0x96, 0x86, 0xc6, 0x18, 0xdf, 0x82, 0xa2, 0x3e, 0xc5, 0x33, 0x81, 0x2d, 0x4f, 0x1d,
|
||||
0x77, 0x99, 0xaa, 0x5b, 0x50, 0x90, 0x11, 0x74, 0xbc, 0x38, 0x01, 0x3d, 0x81, 0xcc, 0x16, 0x14,
|
||||
0xf5, 0xd3, 0xf0, 0x23, 0xfc, 0xb9, 0x6f, 0xcd, 0xbb, 0x30, 0xaf, 0x1e, 0x73, 0x33, 0x3f, 0x5b,
|
||||
0xca, 0x3e, 0xfa, 0xe4, 0x57, 0x4f, 0x6c, 0x2b, 0x2f, 0x9b, 0xfd, 0x99, 0xdf, 0x9e, 0x3f, 0xfe,
|
||||
0x69, 0x20, 0x2d, 0xec, 0x43, 0x7d, 0xf2, 0x3a, 0x47, 0x97, 0x66, 0xde, 0xf3, 0x9a, 0xfb, 0xda,
|
||||
0xcc, 0x75, 0x69, 0xef, 0xa5, 0xed, 0xc3, 0xd5, 0xed, 0x8e, 0xd6, 0x66, 0x74, 0x78, 0xda, 0x56,
|
||||
0x73, 0xc6, 0xaa, 0xb4, 0xf4, 0xdc, 0x72, 0x93, 0xd7, 0x3b, 0xba, 0x70, 0x7c, 0x63, 0xa5, 0xed,
|
||||
0x9c, 0x3f, 0x7e, 0x51, 0x9a, 0x79, 0x08, 0xe5, 0xf4, 0x69, 0xfa, 0x31, 0xb9, 0x39, 0xf1, 0xde,
|
||||
0x7d, 0x00, 0x25, 0xf3, 0x20, 0x74, 0xce, 0xc5, 0xe4, 0x53, 0xb6, 0xb9, 0x32, 0xbd, 0xa0, 0x3b,
|
||||
0xc3, 0x79, 0x1d, 0x00, 0xe7, 0xdd, 0xe2, 0x32, 0x5f, 0xca, 0x8a, 0xe3, 0x60, 0xe4, 0xcd, 0xfd,
|
||||
0x99, 0xcf, 0xa1, 0x7b, 0x50, 0x50, 0x84, 0x9d, 0x57, 0xa1, 0xc3, 0x14, 0x65, 0xa4, 0xf6, 0xb3,
|
||||
0xfb, 0x50, 0x4a, 0xeb, 0xd8, 0x2c, 0x9a, 0x2b, 0xd3, 0xc5, 0x36, 0x0e, 0x46, 0xdb, 0xaf, 0x60,
|
||||
0xb1, 0xcb, 0x42, 0xbb, 0x86, 0x63, 0xba, 0x0d, 0xa6, 0x32, 0x3c, 0x8d, 0xe9, 0x9b, 0xdc, 0x8f,
|
||||
0xb7, 0xfa, 0x54, 0x0c, 0x86, 0x1d, 0x79, 0xb2, 0x36, 0x04, 0x0e, 0x18, 0x5f, 0xd7, 0x37, 0x1b,
|
||||
0xd7, 0xb3, 0x0d, 0x1c, 0xd3, 0xf4, 0x8f, 0x9e, 0x4e, 0x51, 0xf9, 0xbc, 0xf3, 0x7f, 0x00, 0x00,
|
||||
0x00, 0xff, 0xff, 0x4a, 0x46, 0xbd, 0x4c, 0x02, 0x12, 0x00, 0x00,
|
||||
// 1483 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x6f, 0x13, 0xc7,
|
||||
0x16, 0xd7, 0x3a, 0x1f, 0xb6, 0x8f, 0x13, 0x07, 0x26, 0x1f, 0x18, 0x13, 0xbe, 0x16, 0xee, 0x05,
|
||||
0x21, 0xc5, 0xe1, 0x86, 0x80, 0xb8, 0x70, 0x75, 0x45, 0x21, 0x41, 0x54, 0x24, 0x80, 0x36, 0x6d,
|
||||
0xa5, 0xf6, 0xc5, 0x1d, 0xdb, 0x13, 0x7b, 0xc4, 0xee, 0xce, 0x76, 0x67, 0x1c, 0x94, 0xaa, 0x7d,
|
||||
0x6f, 0xfb, 0xda, 0x3f, 0xa1, 0x6f, 0xfd, 0x23, 0xab, 0x6a, 0x3e, 0x3d, 0x5e, 0xc7, 0x01, 0xd5,
|
||||
0x3c, 0x79, 0xe6, 0xcc, 0xd9, 0x73, 0xce, 0xef, 0x7c, 0xcd, 0x19, 0xc3, 0x7a, 0x82, 0xbb, 0x03,
|
||||
0x9a, 0x92, 0x6d, 0xf3, 0xdb, 0xca, 0x72, 0x26, 0x18, 0x2a, 0x9b, 0x6d, 0xf3, 0x4a, 0x9f, 0xb1,
|
||||
0x7e, 0x4c, 0xb6, 0x15, 0xb9, 0x33, 0x3c, 0xde, 0x26, 0x49, 0x26, 0x4e, 0x35, 0x57, 0xf3, 0x7a,
|
||||
0xf1, 0x50, 0xd0, 0x84, 0x70, 0x81, 0x93, 0xcc, 0x30, 0xac, 0x76, 0x59, 0x92, 0xb0, 0x74, 0x5b,
|
||||
0xff, 0x68, 0x62, 0xf8, 0x12, 0xea, 0x11, 0xe9, 0x30, 0x26, 0x22, 0xc2, 0x33, 0x96, 0x72, 0x82,
|
||||
0x76, 0xa1, 0x92, 0x10, 0x81, 0x7b, 0x58, 0xe0, 0x46, 0x70, 0x23, 0xb8, 0x5b, 0xdb, 0x69, 0xb4,
|
||||
0xcc, 0x27, 0x96, 0xe7, 0xd0, 0x9c, 0x47, 0x8e, 0x33, 0x7c, 0x0e, 0x35, 0x2b, 0x27, 0x8b, 0x4f,
|
||||
0xd1, 0x03, 0xa8, 0xe4, 0x86, 0xb9, 0x11, 0xdc, 0x98, 0xbb, 0x5b, 0xdb, 0xb9, 0xd4, 0xb2, 0xa0,
|
||||
0xc6, 0xf5, 0x45, 0x8e, 0x31, 0xdc, 0x87, 0xe5, 0x88, 0x70, 0x32, 0xab, 0x29, 0xcf, 0x00, 0x8c,
|
||||
0x18, 0x69, 0xc9, 0xce, 0x84, 0x25, 0x1b, 0x9e, 0x25, 0x9e, 0x36, 0xcf, 0x90, 0x57, 0x70, 0xe1,
|
||||
0x68, 0x30, 0x14, 0x3d, 0xf6, 0x21, 0x9d, 0xd1, 0x96, 0x97, 0xb0, 0x3c, 0x92, 0x24, 0xcd, 0x79,
|
||||
0x38, 0x61, 0xce, 0x65, 0x67, 0x4e, 0x51, 0xa7, 0x67, 0xd1, 0xbf, 0xa1, 0xfe, 0x75, 0xd6, 0xcf,
|
||||
0x71, 0x8f, 0x44, 0xe4, 0x87, 0x21, 0xe1, 0x02, 0xad, 0xc1, 0x02, 0x4d, 0x70, 0x9f, 0x28, 0x63,
|
||||
0xaa, 0x91, 0xde, 0x84, 0xdf, 0xc2, 0x8a, 0xe3, 0x9b, 0xc5, 0x70, 0x74, 0x01, 0xe6, 0x70, 0xf7,
|
||||
0x7d, 0xa3, 0xa4, 0x84, 0xcb, 0x65, 0xb8, 0x07, 0x4b, 0x4e, 0xb4, 0x44, 0xb2, 0x3b, 0x81, 0xa4,
|
||||
0xe1, 0x90, 0x14, 0x6c, 0xf0, 0x80, 0xfc, 0x0c, 0xab, 0x47, 0x24, 0x3f, 0xa1, 0x5d, 0x72, 0x40,
|
||||
0xf9, 0x8c, 0x91, 0x46, 0xf7, 0xa1, 0xc2, 0xb5, 0x30, 0xde, 0x28, 0x29, 0x13, 0xd6, 0x46, 0xce,
|
||||
0xd4, 0x07, 0x5f, 0xa6, 0xc7, 0x2c, 0x72, 0x5c, 0xe1, 0x01, 0x5c, 0x18, 0x53, 0x2f, 0x81, 0x3c,
|
||||
0x9e, 0x00, 0xb2, 0x59, 0x94, 0xe2, 0xdb, 0xea, 0x81, 0xf9, 0x3d, 0x80, 0x9a, 0xa7, 0x07, 0xd5,
|
||||
0xa1, 0x44, 0x7b, 0x26, 0x20, 0x25, 0xda, 0x93, 0x31, 0xe2, 0x02, 0x0b, 0x62, 0xdc, 0xa8, 0x37,
|
||||
0xa8, 0x05, 0x8b, 0xe4, 0x84, 0xa4, 0x82, 0x37, 0xe6, 0x14, 0xd2, 0x8d, 0xa2, 0xb6, 0x7d, 0x75,
|
||||
0x1a, 0x19, 0x2e, 0xc9, 0x3f, 0x20, 0x38, 0x16, 0x83, 0xc6, 0xfc, 0xd9, 0xfc, 0xaf, 0xd4, 0x69,
|
||||
0x64, 0xb8, 0xc2, 0xff, 0xc3, 0xf2, 0x98, 0x20, 0xb4, 0xe5, 0x14, 0x6a, 0x78, 0xeb, 0x67, 0x2a,
|
||||
0xb4, 0xfa, 0xc2, 0x0e, 0x2c, 0xf9, 0x74, 0x99, 0x0a, 0x09, 0xef, 0x1b, 0x58, 0x72, 0x39, 0x05,
|
||||
0xd7, 0x3d, 0x28, 0x39, 0x4c, 0xcd, 0x96, 0xee, 0x46, 0x2d, 0xdb, 0x8d, 0x5a, 0x5f, 0xd9, 0x6e,
|
||||
0x14, 0x95, 0x04, 0x0f, 0xff, 0x08, 0x9c, 0x91, 0xda, 0x7a, 0xd4, 0x80, 0xf2, 0x30, 0x7d, 0x9f,
|
||||
0xb2, 0x0f, 0xa9, 0xd2, 0x54, 0x89, 0xec, 0x56, 0x9e, 0x68, 0x64, 0xa7, 0x4a, 0x5f, 0x25, 0xb2,
|
||||
0x5b, 0x74, 0x13, 0x96, 0x62, 0xcc, 0x45, 0x3b, 0x21, 0x9c, 0xcb, 0x52, 0x98, 0x53, 0xe6, 0xd4,
|
||||
0x24, 0xed, 0x50, 0x93, 0xd0, 0x53, 0x50, 0xdb, 0x76, 0x77, 0x80, 0xd3, 0x3e, 0x31, 0x1e, 0x3c,
|
||||
0xcf, 0x3a, 0x90, 0xec, 0x2f, 0x14, 0x77, 0xf8, 0x2f, 0x97, 0xac, 0x47, 0x02, 0xe7, 0xc2, 0x96,
|
||||
0x5e, 0x21, 0xcc, 0xe1, 0xf7, 0xb0, 0x36, 0xce, 0x36, 0x53, 0x52, 0x23, 0x98, 0x97, 0x09, 0x66,
|
||||
0x7c, 0xab, 0xd6, 0xe1, 0x1b, 0xb8, 0x38, 0xae, 0x41, 0xe6, 0xed, 0x7f, 0x27, 0xf2, 0xf6, 0x6a,
|
||||
0x31, 0xb0, 0x63, 0xf6, 0x78, 0x89, 0x7b, 0x1b, 0x90, 0xe3, 0x60, 0xd9, 0x34, 0x5c, 0x6d, 0x0f,
|
||||
0xbe, 0xe4, 0xfa, 0xec, 0xb0, 0x46, 0xd5, 0xa8, 0x15, 0x7c, 0x62, 0x35, 0xfa, 0xd6, 0x78, 0xa0,
|
||||
0xee, 0xc0, 0xba, 0x61, 0x88, 0x64, 0x2c, 0xa7, 0xc7, 0xab, 0x03, 0x1b, 0x45, 0xc6, 0xcf, 0x0e,
|
||||
0x2d, 0x72, 0xbe, 0x73, 0x3a, 0x24, 0xba, 0xa7, 0x13, 0xe8, 0xae, 0x17, 0xd1, 0x15, 0x6c, 0xf2,
|
||||
0x00, 0x86, 0xb0, 0x74, 0x5e, 0x1e, 0x3e, 0x29, 0x35, 0x82, 0xf0, 0x36, 0x80, 0x97, 0x22, 0xd6,
|
||||
0xb2, 0x60, 0x64, 0x99, 0xe2, 0xba, 0x09, 0xb5, 0x73, 0x02, 0xaf, 0x58, 0x6e, 0x41, 0x75, 0x14,
|
||||
0x94, 0x69, 0x72, 0xb6, 0xa0, 0xfe, 0x82, 0x65, 0xa7, 0x6f, 0x87, 0xce, 0xa6, 0x2b, 0x50, 0xcd,
|
||||
0x19, 0x13, 0xed, 0x0c, 0x8b, 0x81, 0x61, 0xaf, 0x48, 0xc2, 0x3b, 0x2c, 0x06, 0x61, 0x07, 0xaa,
|
||||
0x07, 0x47, 0x96, 0x53, 0xca, 0x64, 0x4c, 0x38, 0x99, 0x8c, 0x09, 0x59, 0xea, 0x39, 0xe9, 0x0e,
|
||||
0x73, 0x4e, 0x6c, 0xa9, 0x9b, 0x2d, 0xba, 0x03, 0x2b, 0x7a, 0x49, 0x59, 0xda, 0xee, 0x91, 0x4c,
|
||||
0x0c, 0x54, 0xb5, 0x2f, 0x44, 0x75, 0x47, 0xde, 0x93, 0xd4, 0xf0, 0xaf, 0x00, 0x2a, 0x2f, 0x69,
|
||||
0xac, 0x1b, 0xf2, 0x3f, 0x8e, 0x67, 0x8a, 0x13, 0xdb, 0xdd, 0xd4, 0x5a, 0xd2, 0x38, 0xfd, 0x51,
|
||||
0xb7, 0x98, 0xb9, 0x48, 0xad, 0x25, 0x2d, 0x61, 0x3d, 0xdd, 0x54, 0x96, 0x23, 0xb5, 0x46, 0x4d,
|
||||
0xa8, 0x24, 0xac, 0x47, 0x8f, 0x29, 0xe9, 0x35, 0x16, 0x14, 0xaf, 0xdb, 0xa3, 0x75, 0x58, 0xa4,
|
||||
0xbc, 0xdd, 0xa3, 0x79, 0x63, 0x51, 0x81, 0x5b, 0xa0, 0x7c, 0x8f, 0xe6, 0xb2, 0x9b, 0x92, 0x3c,
|
||||
0x67, 0x79, 0xa3, 0xac, 0xbb, 0xa9, 0xda, 0x48, 0xe1, 0x31, 0x4d, 0xdf, 0x37, 0x2a, 0xda, 0x08,
|
||||
0xb9, 0x46, 0xb7, 0x60, 0x39, 0x27, 0x31, 0x16, 0xf4, 0x84, 0xb4, 0x95, 0x85, 0x55, 0x75, 0xb8,
|
||||
0x64, 0x89, 0x6f, 0x70, 0x42, 0xc2, 0x0c, 0xea, 0x87, 0x6c, 0x28, 0x2f, 0x90, 0xd9, 0xb2, 0xfa,
|
||||
0xae, 0x6e, 0xf2, 0xf6, 0x66, 0x45, 0x2e, 0x4f, 0x95, 0xf4, 0x23, 0x81, 0x85, 0x6e, 0xfc, 0x5c,
|
||||
0xce, 0x7e, 0x56, 0xe3, 0xc7, 0x66, 0xbf, 0x71, 0xcb, 0xbc, 0xdc, 0xfe, 0x09, 0xaa, 0x4e, 0x2e,
|
||||
0xba, 0x06, 0x70, 0x4c, 0x63, 0xc2, 0x4f, 0xb9, 0x20, 0x89, 0x49, 0x10, 0x8f, 0xe2, 0x82, 0x21,
|
||||
0x03, 0x34, 0x6f, 0x82, 0xb1, 0x09, 0x55, 0x7c, 0x82, 0x69, 0x8c, 0x3b, 0xb1, 0x8e, 0xd2, 0x7c,
|
||||
0x34, 0x22, 0xa0, 0xab, 0x00, 0x89, 0x14, 0x4f, 0x7a, 0x6d, 0x96, 0xaa, 0x80, 0x55, 0xa3, 0xaa,
|
||||
0xa1, 0xbc, 0x4d, 0xc3, 0x3f, 0x03, 0x58, 0xf9, 0x86, 0xa8, 0x2c, 0x9a, 0xd1, 0x6b, 0x2d, 0x28,
|
||||
0x9f, 0x68, 0x41, 0xca, 0x3a, 0x7f, 0x22, 0x31, 0x0a, 0xd4, 0x44, 0x62, 0x99, 0xd0, 0x7f, 0xa0,
|
||||
0x92, 0xc5, 0x58, 0x1c, 0xb3, 0x3c, 0x31, 0x57, 0xe7, 0xe8, 0x76, 0x7e, 0x67, 0x0e, 0xf4, 0x0c,
|
||||
0x63, 0xd9, 0xe4, 0x20, 0xe6, 0x6c, 0xfd, 0xd8, 0x20, 0x56, 0x00, 0xe5, 0x39, 0xfc, 0xb7, 0x00,
|
||||
0x6a, 0x9e, 0x45, 0xf2, 0x96, 0x17, 0xd8, 0xdd, 0xf2, 0x02, 0xf7, 0x25, 0x85, 0x0f, 0xb0, 0x1d,
|
||||
0x01, 0xf9, 0x00, 0xcb, 0x4c, 0xed, 0x0c, 0x69, 0x2c, 0xcc, 0x45, 0xab, 0x37, 0xd2, 0xb7, 0x7d,
|
||||
0xd6, 0xb6, 0xa8, 0x8d, 0x6f, 0xfb, 0xcc, 0x08, 0x97, 0xcd, 0x85, 0x71, 0x55, 0x0b, 0xd5, 0xa8,
|
||||
0xc4, 0xb8, 0x0c, 0x1e, 0xce, 0xbb, 0x03, 0x55, 0x03, 0xd5, 0x48, 0xad, 0xc3, 0x47, 0xb0, 0xe4,
|
||||
0x83, 0x75, 0x15, 0x18, 0x8c, 0x57, 0xa0, 0xaa, 0x36, 0x53, 0x95, 0x72, 0x1d, 0xc6, 0x50, 0x3b,
|
||||
0x60, 0x7d, 0x6e, 0x5b, 0xca, 0x26, 0x54, 0x25, 0x2b, 0xcf, 0x70, 0xd7, 0x7e, 0x3b, 0x22, 0x98,
|
||||
0x2e, 0x57, 0x72, 0xd3, 0xd9, 0x36, 0x2c, 0xf6, 0x72, 0x7a, 0x42, 0x72, 0x05, 0xa7, 0xbe, 0x73,
|
||||
0xc9, 0x86, 0xf7, 0x05, 0x4b, 0x05, 0xa6, 0x29, 0xc9, 0xf7, 0xd4, 0x71, 0x64, 0xd8, 0x64, 0xd7,
|
||||
0x8c, 0x08, 0xee, 0x79, 0x0d, 0xcc, 0xeb, 0x72, 0x6a, 0xbd, 0xf3, 0x6b, 0x05, 0xca, 0x87, 0xda,
|
||||
0xf7, 0xe8, 0x09, 0x94, 0x4d, 0x73, 0x44, 0xa3, 0x02, 0x18, 0x6f, 0x97, 0xcd, 0x35, 0xab, 0x73,
|
||||
0x4f, 0xa6, 0x91, 0x89, 0xcd, 0xfd, 0x00, 0xfd, 0x0f, 0xe0, 0xf5, 0xb0, 0x43, 0xba, 0x2c, 0x3d,
|
||||
0xa6, 0x7d, 0xb4, 0x31, 0x31, 0xaf, 0xec, 0xcb, 0x87, 0xdf, 0xd4, 0xaf, 0xb7, 0xa0, 0x74, 0x70,
|
||||
0x84, 0x46, 0x15, 0xeb, 0x9a, 0x6e, 0xf3, 0xa2, 0xa3, 0xd9, 0x1e, 0x79, 0x3f, 0x40, 0xbb, 0x30,
|
||||
0x2f, 0xbd, 0x88, 0x46, 0xa9, 0xea, 0x39, 0x75, 0xaa, 0x92, 0x47, 0xb0, 0xa8, 0xab, 0xf9, 0x1c,
|
||||
0xf3, 0x8a, 0x65, 0xaf, 0xd3, 0x75, 0x5e, 0x7a, 0xd1, 0xd3, 0xe6, 0x39, 0xf5, 0x3c, 0x6d, 0xfa,
|
||||
0xdd, 0xf8, 0x09, 0xda, 0xfc, 0x87, 0xe8, 0x2e, 0x2c, 0xa8, 0x57, 0xde, 0xd4, 0xcf, 0x56, 0x8b,
|
||||
0xaf, 0x41, 0xf9, 0xd5, 0x33, 0x37, 0xd7, 0xcb, 0xc9, 0x7f, 0xea, 0xb7, 0x97, 0xcf, 0x7e, 0x27,
|
||||
0x48, 0x09, 0x6f, 0xa0, 0x3e, 0x7e, 0x9f, 0xa3, 0x6b, 0x53, 0x2f, 0x7a, 0x8d, 0x7c, 0x73, 0xea,
|
||||
0xb9, 0x94, 0xf7, 0xca, 0x0d, 0xe5, 0xea, 0x7a, 0x47, 0x9b, 0x53, 0x46, 0x3d, 0x2d, 0xab, 0x39,
|
||||
0xe5, 0x54, 0x4a, 0xda, 0x77, 0xd8, 0xe4, 0xfd, 0x8e, 0xae, 0x9c, 0x3d, 0x5d, 0x69, 0x39, 0x97,
|
||||
0xcf, 0x3e, 0x94, 0x62, 0x9e, 0x40, 0xc5, 0xbe, 0x57, 0xa7, 0xfa, 0x67, 0xe3, 0x8c, 0xa7, 0xad,
|
||||
0x9e, 0x5c, 0xcb, 0xe6, 0x85, 0xe8, 0x55, 0xc6, 0xf8, 0xfb, 0xb6, 0xb9, 0x3e, 0x79, 0xa0, 0xc7,
|
||||
0xc3, 0x05, 0xed, 0x00, 0xef, 0x11, 0xe3, 0x23, 0x5f, 0x2d, 0x92, 0xb3, 0xf8, 0x34, 0x9c, 0xfb,
|
||||
0xa5, 0x14, 0xa0, 0x87, 0x30, 0xaf, 0x00, 0x7b, 0x4f, 0x44, 0x0f, 0x29, 0x2a, 0x50, 0xdd, 0x67,
|
||||
0x8f, 0xa1, 0x6c, 0x3b, 0xd9, 0x34, 0x98, 0xeb, 0x93, 0xed, 0x36, 0x8b, 0x4f, 0x9f, 0xbf, 0x86,
|
||||
0x95, 0x2e, 0x4b, 0xdc, 0x19, 0xce, 0xe8, 0x73, 0x30, 0xbd, 0xe1, 0x8b, 0x8c, 0xbe, 0x0b, 0xbe,
|
||||
0xbb, 0xd7, 0xa7, 0x62, 0x30, 0xec, 0xc8, 0x8c, 0xdf, 0x16, 0x38, 0x66, 0x7c, 0x4b, 0xdf, 0x6f,
|
||||
0x5c, 0xef, 0xb6, 0x71, 0x46, 0xed, 0x3f, 0x41, 0x9d, 0x45, 0xa5, 0xf3, 0xc1, 0xdf, 0x01, 0x00,
|
||||
0x00, 0xff, 0xff, 0xb3, 0x68, 0xfa, 0xac, 0x23, 0x12, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
@@ -2329,7 +2282,7 @@ func (c *machineClient) CopyOut(ctx context.Context, in *CopyOutRequest, opts ..
|
||||
}
|
||||
|
||||
type Machine_CopyOutClient interface {
|
||||
Recv() (*StreamingData, error)
|
||||
Recv() (*common.DataResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
@@ -2337,8 +2290,8 @@ type machineCopyOutClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *machineCopyOutClient) Recv() (*StreamingData, error) {
|
||||
m := new(StreamingData)
|
||||
func (x *machineCopyOutClient) Recv() (*common.DataResponse, error) {
|
||||
m := new(common.DataResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -2361,7 +2314,7 @@ func (c *machineClient) Kubeconfig(ctx context.Context, in *empty.Empty, opts ..
|
||||
}
|
||||
|
||||
type Machine_KubeconfigClient interface {
|
||||
Recv() (*StreamingData, error)
|
||||
Recv() (*common.DataResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
@@ -2369,8 +2322,8 @@ type machineKubeconfigClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *machineKubeconfigClient) Recv() (*StreamingData, error) {
|
||||
m := new(StreamingData)
|
||||
func (x *machineKubeconfigClient) Recv() (*common.DataResponse, error) {
|
||||
m := new(common.DataResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -2425,7 +2378,7 @@ func (c *machineClient) Logs(ctx context.Context, in *LogsRequest, opts ...grpc.
|
||||
}
|
||||
|
||||
type Machine_LogsClient interface {
|
||||
Recv() (*common.Data, error)
|
||||
Recv() (*common.DataResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
@@ -2433,8 +2386,8 @@ type machineLogsClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *machineLogsClient) Recv() (*common.Data, error) {
|
||||
m := new(common.Data)
|
||||
func (x *machineLogsClient) Recv() (*common.DataResponse, error) {
|
||||
m := new(common.DataResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -2466,7 +2419,7 @@ func (c *machineClient) Read(ctx context.Context, in *ReadRequest, opts ...grpc.
|
||||
}
|
||||
|
||||
type Machine_ReadClient interface {
|
||||
Recv() (*StreamingData, error)
|
||||
Recv() (*common.DataResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
@@ -2474,8 +2427,8 @@ type machineReadClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *machineReadClient) Recv() (*StreamingData, error) {
|
||||
m := new(StreamingData)
|
||||
func (x *machineReadClient) Recv() (*common.DataResponse, error) {
|
||||
m := new(common.DataResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -2617,7 +2570,7 @@ func _Machine_CopyOut_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
}
|
||||
|
||||
type Machine_CopyOutServer interface {
|
||||
Send(*StreamingData) error
|
||||
Send(*common.DataResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
@@ -2625,7 +2578,7 @@ type machineCopyOutServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *machineCopyOutServer) Send(m *StreamingData) error {
|
||||
func (x *machineCopyOutServer) Send(m *common.DataResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
@@ -2638,7 +2591,7 @@ func _Machine_Kubeconfig_Handler(srv interface{}, stream grpc.ServerStream) erro
|
||||
}
|
||||
|
||||
type Machine_KubeconfigServer interface {
|
||||
Send(*StreamingData) error
|
||||
Send(*common.DataResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
@@ -2646,7 +2599,7 @@ type machineKubeconfigServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *machineKubeconfigServer) Send(m *StreamingData) error {
|
||||
func (x *machineKubeconfigServer) Send(m *common.DataResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
@@ -2680,7 +2633,7 @@ func _Machine_Logs_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
}
|
||||
|
||||
type Machine_LogsServer interface {
|
||||
Send(*common.Data) error
|
||||
Send(*common.DataResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
@@ -2688,7 +2641,7 @@ type machineLogsServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *machineLogsServer) Send(m *common.Data) error {
|
||||
func (x *machineLogsServer) Send(m *common.DataResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
@@ -2719,7 +2672,7 @@ func _Machine_Read_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
}
|
||||
|
||||
type Machine_ReadServer interface {
|
||||
Send(*StreamingData) error
|
||||
Send(*common.DataResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
@@ -2727,7 +2680,7 @@ type machineReadServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *machineReadServer) Send(m *StreamingData) error {
|
||||
func (x *machineReadServer) Send(m *common.DataResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@ import "common/common.proto";
|
||||
|
||||
// The machine service definition.
|
||||
service Machine {
|
||||
rpc CopyOut(CopyOutRequest) returns (stream StreamingData);
|
||||
rpc Kubeconfig(google.protobuf.Empty) returns (stream StreamingData);
|
||||
rpc CopyOut(CopyOutRequest) returns (stream common.DataResponse);
|
||||
rpc Kubeconfig(google.protobuf.Empty) returns (stream common.DataResponse);
|
||||
rpc LS(LSRequest) returns (stream FileInfo);
|
||||
rpc Logs(LogsRequest) returns (stream common.Data);
|
||||
rpc Logs(LogsRequest) returns (stream common.DataResponse);
|
||||
rpc Mounts(google.protobuf.Empty) returns (MountsReply);
|
||||
rpc Read(ReadRequest) returns (stream StreamingData);
|
||||
rpc Read(ReadRequest) returns (stream common.DataResponse);
|
||||
rpc Reboot(google.protobuf.Empty) returns (RebootReply);
|
||||
rpc Reset(google.protobuf.Empty) returns (ResetReply);
|
||||
rpc ServiceList(google.protobuf.Empty) returns (ServiceListReply);
|
||||
@@ -41,7 +41,7 @@ service Machine {
|
||||
// rpc reboot
|
||||
// The response message containing the reboot status.
|
||||
message RebootResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
}
|
||||
message RebootReply {
|
||||
repeated RebootResponse response = 1;
|
||||
@@ -50,7 +50,7 @@ message RebootReply {
|
||||
// rpc reset
|
||||
// The response message containing the restart status.
|
||||
message ResetResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
}
|
||||
message ResetReply {
|
||||
repeated ResetResponse response = 1;
|
||||
@@ -59,7 +59,7 @@ message ResetReply {
|
||||
// rpc shutdown
|
||||
// The response message containing the shutdown status.
|
||||
message ShutdownResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
}
|
||||
message ShutdownReply {
|
||||
repeated ShutdownResponse response = 1;
|
||||
@@ -70,7 +70,7 @@ message UpgradeRequest {
|
||||
string image = 1;
|
||||
}
|
||||
message UpgradeResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
string ack = 2;
|
||||
}
|
||||
message UpgradeReply {
|
||||
@@ -79,7 +79,7 @@ message UpgradeReply {
|
||||
|
||||
// rpc servicelist
|
||||
message ServiceListResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated ServiceInfo services = 2;
|
||||
}
|
||||
message ServiceListReply {
|
||||
@@ -116,7 +116,7 @@ message ServiceStartRequest {
|
||||
}
|
||||
|
||||
message ServiceStartResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
string resp = 2;
|
||||
}
|
||||
message ServiceStartReply {
|
||||
@@ -128,7 +128,7 @@ message ServiceStopRequest {
|
||||
}
|
||||
|
||||
message ServiceStopResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
string resp = 2;
|
||||
}
|
||||
message ServiceStopReply {
|
||||
@@ -140,7 +140,7 @@ message ServiceRestartRequest {
|
||||
}
|
||||
|
||||
message ServiceRestartResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
string resp = 2;
|
||||
}
|
||||
message ServiceRestartReply {
|
||||
@@ -167,12 +167,6 @@ message StopReply {
|
||||
string resp = 1;
|
||||
}
|
||||
|
||||
// StreamingData is used to stream back responses
|
||||
message StreamingData {
|
||||
bytes bytes = 1;
|
||||
string errors = 2;
|
||||
}
|
||||
|
||||
// CopyOutRequest describes a request to copy data out of Talos node
|
||||
//
|
||||
// CopyOut produces .tar.gz archive which is streamed back to the caller
|
||||
@@ -195,28 +189,29 @@ message LSRequest {
|
||||
|
||||
// FileInfo describes a file or directory's information
|
||||
message FileInfo {
|
||||
common.ResponseMetadata metadata = 1;
|
||||
// Name is the name (including prefixed path) of the file or directory
|
||||
string name = 1;
|
||||
string name = 2;
|
||||
// Size indicates the number of bytes contained within the file
|
||||
int64 size = 2;
|
||||
int64 size = 3;
|
||||
// Mode is the bitmap of UNIX mode/permission flags of the file
|
||||
uint32 mode = 3;
|
||||
uint32 mode = 4;
|
||||
// Modified indicates the UNIX timestamp at which the file was last modified
|
||||
int64 modified = 4; // TODO: unix timestamp or include proto's Date type
|
||||
int64 modified = 5; // TODO: unix timestamp or include proto's Date type
|
||||
// IsDir indicates that the file is a directory
|
||||
bool is_dir = 5;
|
||||
bool is_dir = 6;
|
||||
// Error describes any error encountered while trying to read the file
|
||||
// information.
|
||||
string error = 6;
|
||||
string error = 7;
|
||||
// Link is filled with symlink target
|
||||
string link = 7;
|
||||
string link = 8;
|
||||
// RelativeName is the name of the file or directory relative to the RootPath
|
||||
string relative_name = 8;
|
||||
string relative_name = 9;
|
||||
}
|
||||
|
||||
// The response message containing the requested df stats.
|
||||
message MountsResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated MountStat stats = 2;
|
||||
}
|
||||
message MountsReply {
|
||||
@@ -232,7 +227,7 @@ message MountStat {
|
||||
}
|
||||
|
||||
message VersionResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
VersionInfo version = 2;
|
||||
PlatformInfo platform = 3;
|
||||
}
|
||||
|
||||
@@ -211,11 +211,11 @@ func (m *RoutesReply) GetResponse() []*RoutesResponse {
|
||||
}
|
||||
|
||||
type RoutesResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Routes []*Route `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Routes []*Route `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *RoutesResponse) Reset() { *m = RoutesResponse{} }
|
||||
@@ -247,7 +247,7 @@ func (m *RoutesResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_RoutesResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *RoutesResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *RoutesResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -422,11 +422,11 @@ func (m *InterfacesReply) GetResponse() []*InterfacesResponse {
|
||||
}
|
||||
|
||||
type InterfacesResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Interfaces []*Interface `protobuf:"bytes,2,rep,name=interfaces,proto3" json:"interfaces,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Interfaces []*Interface `protobuf:"bytes,2,rep,name=interfaces,proto3" json:"interfaces,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *InterfacesResponse) Reset() { *m = InterfacesResponse{} }
|
||||
@@ -458,7 +458,7 @@ func (m *InterfacesResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_InterfacesResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *InterfacesResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *InterfacesResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -571,59 +571,59 @@ func init() {
|
||||
func init() { proto.RegisterFile("network/network.proto", fileDescriptor_96ad937ae012c472) }
|
||||
|
||||
var fileDescriptor_96ad937ae012c472 = []byte{
|
||||
// 830 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4d, 0x6f, 0xeb, 0x44,
|
||||
0x14, 0xc5, 0xf9, 0xce, 0x4d, 0x9d, 0x4c, 0xa7, 0xa5, 0xb5, 0xfa, 0x58, 0x44, 0x59, 0xa0, 0x2a,
|
||||
0xd2, 0x4b, 0x50, 0x1e, 0x2a, 0x3b, 0x24, 0x3b, 0x71, 0x1e, 0x21, 0xa9, 0x6d, 0xa6, 0x2e, 0xa0,
|
||||
0xb7, 0xa9, 0xa6, 0xf1, 0x24, 0xcf, 0x10, 0x7f, 0xc8, 0x76, 0x54, 0xc2, 0x0e, 0xf1, 0x4b, 0xf8,
|
||||
0x05, 0x6c, 0xf9, 0x79, 0xc8, 0xe3, 0xb1, 0xeb, 0x10, 0xd8, 0xb0, 0xf2, 0xdc, 0x73, 0xce, 0xdc,
|
||||
0x7b, 0x67, 0xce, 0xcc, 0x18, 0x3e, 0xf5, 0x59, 0xf2, 0x12, 0x44, 0x3f, 0x8f, 0xc5, 0x77, 0x14,
|
||||
0x46, 0x41, 0x12, 0xe0, 0xa6, 0x08, 0x6f, 0xde, 0x6c, 0x83, 0x60, 0xbb, 0x63, 0x63, 0x0e, 0x3f,
|
||||
0xef, 0x37, 0x63, 0xe6, 0x85, 0xc9, 0x21, 0x53, 0xdd, 0x5c, 0xac, 0x03, 0xcf, 0x0b, 0xfc, 0x71,
|
||||
0xf6, 0xc9, 0xc0, 0x81, 0x06, 0x1d, 0x12, 0xec, 0x13, 0x16, 0x13, 0x16, 0xee, 0x0e, 0xf8, 0x1d,
|
||||
0xb4, 0x22, 0x16, 0x87, 0x81, 0x1f, 0x33, 0x45, 0xea, 0x57, 0x6f, 0x3b, 0x93, 0xeb, 0x51, 0x5e,
|
||||
0x2b, 0xd7, 0x65, 0x34, 0x29, 0x84, 0x83, 0x9f, 0xa0, 0x7b, 0xcc, 0xe1, 0x2f, 0xa0, 0xe5, 0xb1,
|
||||
0x84, 0x3a, 0x34, 0xa1, 0x8a, 0xd4, 0x97, 0x6e, 0x3b, 0x93, 0xcb, 0x91, 0x28, 0x6b, 0x04, 0x0e,
|
||||
0xbb, 0x17, 0x1c, 0x29, 0x54, 0xf8, 0x73, 0x68, 0x44, 0x3c, 0x87, 0x52, 0xe1, 0x65, 0xbb, 0xc7,
|
||||
0x65, 0x89, 0x60, 0x07, 0x7f, 0x54, 0xa0, 0xce, 0x11, 0xfc, 0x19, 0xb4, 0x5d, 0x3f, 0x61, 0xd1,
|
||||
0x86, 0xae, 0x19, 0x2f, 0xd2, 0x26, 0xaf, 0x00, 0xee, 0x43, 0xc7, 0x61, 0x71, 0xe2, 0xfa, 0x34,
|
||||
0x71, 0x03, 0x5f, 0xa9, 0x70, 0xbe, 0x0c, 0x61, 0x05, 0x9a, 0x5b, 0x9a, 0xb0, 0x17, 0x7a, 0x50,
|
||||
0xaa, 0x9c, 0xcd, 0x43, 0x7c, 0x05, 0x0d, 0x8f, 0x25, 0x91, 0xbb, 0x56, 0x6a, 0x7d, 0xe9, 0x56,
|
||||
0x26, 0x22, 0xc2, 0x97, 0x50, 0x8f, 0xd7, 0x41, 0xc8, 0x94, 0x3a, 0x87, 0xb3, 0x20, 0x55, 0xc7,
|
||||
0xc1, 0x3e, 0x5a, 0x33, 0xa5, 0xc1, 0xd3, 0x88, 0x08, 0x8f, 0xa0, 0xb1, 0xa1, 0x9e, 0xbb, 0x3b,
|
||||
0x28, 0xcd, 0xbe, 0x74, 0xdb, 0x9d, 0x5c, 0x15, 0x2b, 0x52, 0x1d, 0x27, 0x62, 0x71, 0x3c, 0xe7,
|
||||
0x2c, 0x11, 0x2a, 0x3c, 0x81, 0x16, 0xb7, 0x64, 0x1d, 0xec, 0x94, 0xd6, 0x3f, 0x66, 0xf0, 0x15,
|
||||
0x5b, 0x82, 0x25, 0x85, 0x2e, 0xed, 0x68, 0xb3, 0xa3, 0xdb, 0x58, 0x69, 0x67, 0x1d, 0xf1, 0x60,
|
||||
0xf0, 0x2d, 0xf4, 0x16, 0xf9, 0x46, 0x08, 0x5f, 0xbf, 0x3a, 0xf1, 0xf5, 0x4d, 0x91, 0xbc, 0xac,
|
||||
0x3d, 0xf1, 0xf6, 0x57, 0xc0, 0xa7, 0xfc, 0xff, 0xf0, 0x77, 0x02, 0x50, 0x98, 0x93, 0x7b, 0x8c,
|
||||
0x4f, 0x5b, 0x20, 0x25, 0xd5, 0xe0, 0x2f, 0x09, 0xda, 0x05, 0x93, 0xae, 0xd5, 0xf5, 0x1d, 0xf6,
|
||||
0x0b, 0x2f, 0x28, 0x93, 0x2c, 0xc0, 0x08, 0xaa, 0x5e, 0xb2, 0xe7, 0xfe, 0xca, 0x24, 0x1d, 0x62,
|
||||
0x0c, 0x35, 0x9f, 0x7a, 0x4c, 0x98, 0xca, 0xc7, 0x78, 0x00, 0x67, 0x1f, 0x69, 0xe4, 0xbc, 0xd0,
|
||||
0x88, 0x51, 0xc7, 0x89, 0xb8, 0xaf, 0x6d, 0x72, 0x84, 0xe1, 0xb7, 0xf9, 0x5e, 0xd6, 0xf9, 0xe6,
|
||||
0x5f, 0x9f, 0x36, 0x37, 0x4f, 0x69, 0xb1, 0xc9, 0xfc, 0xf8, 0x85, 0x34, 0x73, 0x52, 0x69, 0xf4,
|
||||
0xab, 0xfc, 0xf8, 0xe5, 0xc0, 0xf0, 0x3b, 0x90, 0x8f, 0x5c, 0xc6, 0x32, 0xb4, 0xd5, 0xf9, 0xd3,
|
||||
0xa3, 0xf1, 0x60, 0xe9, 0x53, 0xf4, 0x09, 0xee, 0x40, 0x53, 0x9d, 0x3f, 0x2d, 0x0c, 0xdd, 0x46,
|
||||
0x15, 0xdc, 0x82, 0xda, 0xc2, 0xfa, 0xfe, 0x4b, 0x54, 0xc1, 0x67, 0xd0, 0x12, 0xf0, 0x1d, 0x02,
|
||||
0x81, 0xdf, 0x21, 0xb8, 0xa9, 0x20, 0x69, 0xf8, 0x67, 0x05, 0xe4, 0xa3, 0x73, 0x80, 0xcf, 0x41,
|
||||
0x26, 0xb6, 0x45, 0x4c, 0xfb, 0x35, 0xef, 0x05, 0xf4, 0x04, 0x44, 0xf4, 0xd9, 0x82, 0xe8, 0x53,
|
||||
0x1b, 0x49, 0x25, 0xdd, 0x52, 0x27, 0x86, 0xbe, 0x42, 0x15, 0xdc, 0x83, 0x8e, 0x80, 0x34, 0xd3,
|
||||
0xb4, 0x51, 0xb5, 0xa4, 0x79, 0xb0, 0x55, 0x7b, 0x31, 0x45, 0x35, 0x8c, 0xe0, 0x4c, 0x40, 0xef,
|
||||
0x55, 0x5b, 0x9f, 0xa1, 0x56, 0xba, 0x88, 0x3c, 0xbb, 0x8a, 0xda, 0xb8, 0x0b, 0x20, 0xc2, 0x7b,
|
||||
0x62, 0x23, 0x28, 0x4d, 0xf8, 0xa0, 0x6b, 0x44, 0x45, 0x9d, 0x72, 0x99, 0x05, 0x99, 0xa1, 0xb3,
|
||||
0x52, 0x7f, 0x33, 0x83, 0x98, 0x8f, 0x69, 0x5a, 0xb9, 0xa4, 0xfa, 0xd1, 0x24, 0x16, 0xea, 0x96,
|
||||
0x12, 0x1b, 0xf6, 0x12, 0xf5, 0x4a, 0x82, 0xd9, 0x37, 0x53, 0x0b, 0x21, 0x8c, 0xa1, 0x5b, 0x54,
|
||||
0xce, 0xb2, 0x9c, 0x97, 0xaa, 0x6b, 0xaa, 0xa6, 0xaf, 0xd0, 0x70, 0xf8, 0xbb, 0x04, 0xdd, 0x63,
|
||||
0xf3, 0x52, 0xd1, 0x7c, 0xa5, 0xbe, 0x7f, 0x7a, 0x34, 0x96, 0x86, 0xf9, 0x83, 0x91, 0x39, 0x91,
|
||||
0x21, 0x16, 0x92, 0xd2, 0xbc, 0x3c, 0xd0, 0x88, 0xa9, 0xce, 0xa6, 0xea, 0x43, 0xea, 0xce, 0x39,
|
||||
0xc8, 0x1c, 0x5b, 0x99, 0xa6, 0xa5, 0xa9, 0xd3, 0x25, 0xaa, 0xe2, 0x6b, 0xb8, 0xe0, 0x90, 0x65,
|
||||
0x2e, 0x0c, 0xfb, 0xc9, 0x36, 0xb3, 0x01, 0xaa, 0x15, 0xf3, 0xef, 0x1f, 0x57, 0xf6, 0x82, 0xcf,
|
||||
0xaf, 0x4f, 0x7e, 0x93, 0xa0, 0x69, 0x64, 0x47, 0x09, 0xdf, 0x41, 0x23, 0x7b, 0x29, 0xf1, 0xd5,
|
||||
0x28, 0x7b, 0xaa, 0x47, 0xf9, 0x53, 0x3d, 0xd2, 0xd3, 0xa7, 0xfa, 0xe6, 0xf2, 0xe4, 0xb9, 0x4d,
|
||||
0xaf, 0xef, 0xd7, 0x00, 0xaf, 0xb7, 0xf0, 0x3f, 0xe7, 0x2a, 0xff, 0x7a, 0xa5, 0xc3, 0xdd, 0x41,
|
||||
0x5b, 0x42, 0x6f, 0x1d, 0x78, 0x05, 0x4d, 0x43, 0x57, 0x03, 0xd1, 0x93, 0x1a, 0xba, 0x96, 0xf4,
|
||||
0x61, 0xb8, 0x75, 0x93, 0x8f, 0xfb, 0xe7, 0xf4, 0x12, 0x8f, 0x13, 0xba, 0x0b, 0xe2, 0xb7, 0xf1,
|
||||
0x21, 0x4e, 0x98, 0x17, 0x67, 0xd1, 0x98, 0x86, 0x6e, 0xfe, 0xcf, 0x79, 0x6e, 0xf0, 0xb2, 0xef,
|
||||
0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf3, 0xb1, 0x46, 0x21, 0x8d, 0x06, 0x00, 0x00,
|
||||
// 829 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4d, 0x6f, 0xe3, 0x36,
|
||||
0x10, 0xad, 0xfc, 0xed, 0x71, 0x64, 0x33, 0xcc, 0x36, 0x11, 0xb2, 0x3d, 0x18, 0x3e, 0x14, 0x81,
|
||||
0x81, 0xb5, 0x01, 0xef, 0x22, 0xbd, 0x15, 0x90, 0x6c, 0x79, 0xeb, 0xda, 0x91, 0x54, 0x46, 0x69,
|
||||
0x8b, 0xbd, 0x04, 0x8c, 0x45, 0x3b, 0x42, 0xad, 0x0f, 0x48, 0x32, 0x52, 0x5f, 0x0a, 0x14, 0xfd,
|
||||
0x25, 0xfd, 0x05, 0xbd, 0xf6, 0xe7, 0x15, 0xa2, 0x28, 0x45, 0xae, 0xdb, 0xcb, 0x9e, 0xc4, 0x79,
|
||||
0xef, 0x71, 0x66, 0xc8, 0x47, 0x52, 0xf0, 0xa5, 0xcf, 0x92, 0x97, 0x20, 0xfa, 0x65, 0x2c, 0xbe,
|
||||
0xa3, 0x30, 0x0a, 0x92, 0x00, 0x37, 0x45, 0x78, 0xfd, 0x76, 0x1b, 0x04, 0xdb, 0x1d, 0x1b, 0x73,
|
||||
0xf8, 0x69, 0xbf, 0x19, 0x33, 0x2f, 0x4c, 0x0e, 0x99, 0xea, 0xfa, 0x62, 0x1d, 0x78, 0x5e, 0xe0,
|
||||
0x8f, 0xb3, 0x4f, 0x06, 0x0e, 0x34, 0xe8, 0x90, 0x60, 0x9f, 0xb0, 0x98, 0xb0, 0x70, 0x77, 0xc0,
|
||||
0xef, 0xa1, 0x15, 0xb1, 0x38, 0x0c, 0xfc, 0x98, 0x29, 0x52, 0xbf, 0x7a, 0xd3, 0x99, 0x5c, 0x8d,
|
||||
0xf2, 0x5a, 0xb9, 0x2e, 0xa3, 0x49, 0x21, 0x1c, 0xf8, 0xd0, 0x3d, 0xe6, 0xf0, 0x07, 0x68, 0x79,
|
||||
0x2c, 0xa1, 0x0e, 0x4d, 0xa8, 0x22, 0xf5, 0xa5, 0x9b, 0xce, 0x44, 0x19, 0x89, 0xb2, 0xb9, 0xe6,
|
||||
0x4e, 0xf0, 0xa4, 0x50, 0xe2, 0xaf, 0xa1, 0x11, 0xf1, 0x3c, 0x4a, 0x85, 0x97, 0xee, 0x1e, 0x97,
|
||||
0x26, 0x82, 0x1d, 0xfc, 0x59, 0x81, 0x3a, 0x47, 0xf0, 0x57, 0xd0, 0x76, 0xfd, 0x84, 0x45, 0x1b,
|
||||
0xba, 0x66, 0xbc, 0x50, 0x9b, 0xbc, 0x02, 0xb8, 0x0f, 0x1d, 0x87, 0xc5, 0x89, 0xeb, 0xd3, 0xc4,
|
||||
0x0d, 0x7c, 0xa5, 0xc2, 0xf9, 0x32, 0x84, 0x15, 0x68, 0x6e, 0x69, 0xc2, 0x5e, 0xe8, 0x41, 0xa9,
|
||||
0x72, 0x36, 0x0f, 0xf1, 0x25, 0x34, 0x3c, 0x96, 0x44, 0xee, 0x5a, 0xa9, 0xf5, 0xa5, 0x1b, 0x99,
|
||||
0x88, 0x08, 0xbf, 0x81, 0x7a, 0xbc, 0x0e, 0x42, 0xa6, 0xd4, 0x39, 0x9c, 0x05, 0xa9, 0x3a, 0x0e,
|
||||
0xf6, 0xd1, 0x9a, 0x29, 0x0d, 0x9e, 0x46, 0x44, 0x78, 0x04, 0x8d, 0x0d, 0xf5, 0xdc, 0xdd, 0x41,
|
||||
0x69, 0xf6, 0xa5, 0x9b, 0xee, 0xe4, 0xb2, 0x58, 0x91, 0xea, 0x38, 0x11, 0x8b, 0xe3, 0x39, 0x67,
|
||||
0x89, 0x50, 0xe1, 0x09, 0xb4, 0xb8, 0x2d, 0xeb, 0x60, 0xa7, 0xb4, 0xfe, 0x35, 0x83, 0xaf, 0xd8,
|
||||
0x12, 0x2c, 0x29, 0x74, 0x69, 0x47, 0x9b, 0x1d, 0xdd, 0xc6, 0x4a, 0x3b, 0xeb, 0x88, 0x07, 0x83,
|
||||
0xef, 0xa1, 0xb7, 0xc8, 0x37, 0x42, 0x78, 0xfb, 0xcd, 0x89, 0xb7, 0x6f, 0x8b, 0xe4, 0x65, 0xed,
|
||||
0x89, 0xbf, 0xbf, 0x01, 0x3e, 0xe5, 0x3f, 0xd3, 0xe3, 0x09, 0x40, 0x61, 0x50, 0xee, 0x33, 0x3e,
|
||||
0x6d, 0x83, 0x94, 0x54, 0x83, 0xbf, 0x25, 0x68, 0x17, 0x4c, 0xba, 0x5e, 0xd7, 0x77, 0xd8, 0xaf,
|
||||
0xbc, 0xa8, 0x4c, 0xb2, 0x00, 0x23, 0xa8, 0x7a, 0xc9, 0x9e, 0x7b, 0x2c, 0x93, 0x74, 0x88, 0x31,
|
||||
0xd4, 0x7c, 0xea, 0x31, 0x61, 0x2c, 0x1f, 0xe3, 0x01, 0x9c, 0x3d, 0xd3, 0xc8, 0x79, 0xa1, 0x11,
|
||||
0xa3, 0x8e, 0x13, 0x71, 0x6f, 0xdb, 0xe4, 0x08, 0xc3, 0xef, 0xf2, 0xfd, 0xac, 0x73, 0x03, 0xae,
|
||||
0x4e, 0x9b, 0x9b, 0xa7, 0xb4, 0xd8, 0x68, 0x7e, 0x04, 0x43, 0x9a, 0xb9, 0xa9, 0x34, 0xfa, 0x55,
|
||||
0x7e, 0x04, 0x73, 0x60, 0xf8, 0x03, 0xc8, 0x47, 0x4e, 0x63, 0x19, 0xda, 0xea, 0xfc, 0xf1, 0xc1,
|
||||
0xb8, 0xb7, 0xf4, 0x29, 0xfa, 0x02, 0x77, 0xa0, 0xa9, 0xce, 0x1f, 0x17, 0x86, 0x6e, 0xa3, 0x0a,
|
||||
0x6e, 0x41, 0x6d, 0x61, 0xfd, 0xf8, 0x01, 0x55, 0xf0, 0x19, 0xb4, 0x04, 0x7c, 0x8b, 0x40, 0xe0,
|
||||
0xb7, 0x08, 0xae, 0x2b, 0x48, 0x1a, 0xfe, 0x55, 0x01, 0xf9, 0xe8, 0x2c, 0xe0, 0x73, 0x90, 0x89,
|
||||
0x6d, 0x11, 0xd3, 0x7e, 0xcd, 0x7b, 0x01, 0x3d, 0x01, 0x11, 0x7d, 0xb6, 0x20, 0xfa, 0xd4, 0x46,
|
||||
0x52, 0x49, 0xb7, 0xd4, 0x89, 0xa1, 0xaf, 0x50, 0x05, 0xf7, 0xa0, 0x23, 0x20, 0xcd, 0x34, 0x6d,
|
||||
0x54, 0x2d, 0x69, 0xee, 0x6d, 0xd5, 0x5e, 0x4c, 0x51, 0x0d, 0x23, 0x38, 0x13, 0xd0, 0x47, 0xd5,
|
||||
0xd6, 0x67, 0xa8, 0x95, 0x2e, 0x22, 0xcf, 0xae, 0xa2, 0x36, 0xee, 0x02, 0x88, 0xf0, 0x8e, 0xd8,
|
||||
0x08, 0x4a, 0x13, 0x3e, 0xe9, 0x1a, 0x51, 0x51, 0xa7, 0x5c, 0x66, 0x41, 0x66, 0xe8, 0xac, 0xd4,
|
||||
0xdf, 0xcc, 0x20, 0xe6, 0x43, 0x9a, 0x56, 0x2e, 0xa9, 0x7e, 0x36, 0x89, 0x85, 0xba, 0xa5, 0xc4,
|
||||
0x86, 0xbd, 0x44, 0xbd, 0x92, 0x60, 0xf6, 0xdd, 0xd4, 0x42, 0x08, 0x63, 0xe8, 0x16, 0x95, 0xb3,
|
||||
0x2c, 0xe7, 0xa5, 0xea, 0x9a, 0xaa, 0xe9, 0x2b, 0x34, 0x1c, 0xfe, 0x21, 0x41, 0xf7, 0xd8, 0xbc,
|
||||
0x54, 0x34, 0x5f, 0xa9, 0x1f, 0x1f, 0x1f, 0x8c, 0xa5, 0x61, 0xfe, 0x64, 0x64, 0x4e, 0x64, 0x88,
|
||||
0x85, 0xa4, 0x34, 0x2f, 0x0f, 0x34, 0x62, 0xaa, 0xb3, 0xa9, 0x7a, 0x9f, 0xba, 0x73, 0x0e, 0x32,
|
||||
0xc7, 0x56, 0xa6, 0x69, 0x69, 0xea, 0x74, 0x89, 0xaa, 0xf8, 0x0a, 0x2e, 0x38, 0x64, 0x99, 0x0b,
|
||||
0xc3, 0x7e, 0xb4, 0xcd, 0x6c, 0x80, 0x6a, 0xc5, 0xfc, 0xbb, 0x87, 0x95, 0xbd, 0xe0, 0xf3, 0xeb,
|
||||
0x93, 0xdf, 0x25, 0x68, 0x1a, 0xd9, 0x51, 0xc2, 0xb7, 0xd0, 0xc8, 0x5e, 0x4c, 0x7c, 0x39, 0xca,
|
||||
0x9e, 0xec, 0x51, 0xfe, 0x64, 0x8f, 0xf4, 0xf4, 0xc9, 0xbe, 0x7e, 0x73, 0xf2, 0xec, 0xa6, 0x57,
|
||||
0xf8, 0x5b, 0x80, 0xd7, 0x9b, 0xf8, 0xbf, 0x73, 0x95, 0xff, 0xbc, 0xd6, 0xe1, 0xee, 0xa0, 0x2d,
|
||||
0xa1, 0xb7, 0x0e, 0xbc, 0x82, 0xa6, 0xa1, 0xab, 0x81, 0xe8, 0x49, 0x0d, 0x5d, 0x4b, 0xfa, 0x34,
|
||||
0xdc, 0xba, 0xc9, 0xf3, 0xfe, 0x29, 0xbd, 0xc8, 0xe3, 0x84, 0xee, 0x82, 0xf8, 0x5d, 0x7c, 0x88,
|
||||
0x13, 0xe6, 0xc5, 0x59, 0x34, 0xa6, 0xa1, 0x9b, 0xff, 0x7b, 0x9e, 0x1a, 0xbc, 0xec, 0xfb, 0x7f,
|
||||
0x02, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x6f, 0x63, 0x58, 0x95, 0x06, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
||||
@@ -59,7 +59,7 @@ message RoutesReply {
|
||||
}
|
||||
|
||||
message RoutesResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated Route routes = 2;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ message InterfacesReply {
|
||||
}
|
||||
|
||||
message InterfacesResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated Interface interfaces = 2;
|
||||
}
|
||||
|
||||
|
||||
236
api/os/os.pb.go
236
api/os/os.pb.go
@@ -174,11 +174,11 @@ func (m *Container) GetName() string {
|
||||
|
||||
// The response message containing the requested containers.
|
||||
type ContainerResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Containers []*Container `protobuf:"bytes,2,rep,name=containers,proto3" json:"containers,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Containers []*Container `protobuf:"bytes,2,rep,name=containers,proto3" json:"containers,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ContainerResponse) Reset() { *m = ContainerResponse{} }
|
||||
@@ -210,7 +210,7 @@ func (m *ContainerResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ContainerResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ContainerResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ContainerResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -347,11 +347,11 @@ func (m *ProcessesReply) GetResponse() []*ProcessResponse {
|
||||
}
|
||||
|
||||
type ProcessResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Processes []*Process `protobuf:"bytes,2,rep,name=processes,proto3" json:"processes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Processes []*Process `protobuf:"bytes,2,rep,name=processes,proto3" json:"processes,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ProcessResponse) Reset() { *m = ProcessResponse{} }
|
||||
@@ -383,7 +383,7 @@ func (m *ProcessResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_ProcessResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *ProcessResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *ProcessResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -575,10 +575,10 @@ func (m *RestartRequest) GetDriver() common.ContainerDriver {
|
||||
}
|
||||
|
||||
type RestartResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *RestartResponse) Reset() { *m = RestartResponse{} }
|
||||
@@ -610,7 +610,7 @@ func (m *RestartResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_RestartResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *RestartResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *RestartResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -716,11 +716,11 @@ func (m *StatsRequest) GetDriver() common.ContainerDriver {
|
||||
|
||||
// The response message containing the requested stats.
|
||||
type StatsResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Stats []*Stat `protobuf:"bytes,2,rep,name=stats,proto3" json:"stats,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Stats []*Stat `protobuf:"bytes,2,rep,name=stats,proto3" json:"stats,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *StatsResponse) Reset() { *m = StatsResponse{} }
|
||||
@@ -752,7 +752,7 @@ func (m *StatsResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_StatsResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *StatsResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *StatsResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -894,11 +894,11 @@ func (m *Stat) GetName() string {
|
||||
}
|
||||
|
||||
type MemInfoResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Meminfo *MemInfo `protobuf:"bytes,2,opt,name=meminfo,proto3" json:"meminfo,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Meminfo *MemInfo `protobuf:"bytes,2,opt,name=meminfo,proto3" json:"meminfo,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *MemInfoResponse) Reset() { *m = MemInfoResponse{} }
|
||||
@@ -930,7 +930,7 @@ func (m *MemInfoResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_MemInfoResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *MemInfoResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *MemInfoResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -1430,95 +1430,95 @@ func init() {
|
||||
func init() { proto.RegisterFile("os/os.proto", fileDescriptor_b20a722d09fd3254) }
|
||||
|
||||
var fileDescriptor_b20a722d09fd3254 = []byte{
|
||||
// 1400 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdb, 0x6e, 0x1b, 0xb7,
|
||||
0x16, 0x85, 0x64, 0xc9, 0xb2, 0x68, 0x5b, 0xb6, 0xe9, 0x5c, 0x18, 0x27, 0x27, 0xc7, 0xd1, 0x89,
|
||||
0x13, 0xe7, 0x9c, 0xd8, 0x4a, 0x7c, 0x0a, 0xb4, 0x40, 0x0b, 0x14, 0x49, 0xdc, 0x87, 0x3c, 0xa4,
|
||||
0x09, 0x26, 0xed, 0x4b, 0x81, 0xc2, 0xa0, 0x66, 0x28, 0x89, 0xf5, 0x70, 0x38, 0x1d, 0x72, 0x94,
|
||||
0xba, 0xbf, 0xd0, 0x1f, 0xe8, 0x5b, 0x5f, 0xfa, 0x17, 0xfd, 0xb9, 0x62, 0x73, 0x73, 0x46, 0x1c,
|
||||
0xe5, 0xd2, 0x24, 0x45, 0x9f, 0x34, 0x7b, 0xed, 0xc5, 0x45, 0xee, 0x0b, 0x2f, 0x22, 0xeb, 0xda,
|
||||
0x8c, 0xb4, 0x39, 0xce, 0x0b, 0x6d, 0x35, 0x6d, 0x6b, 0xb3, 0x77, 0x7d, 0xaa, 0xf5, 0x34, 0x15,
|
||||
0x23, 0x87, 0x8c, 0xcb, 0xc9, 0x48, 0xa8, 0xdc, 0x5e, 0x20, 0x61, 0x6f, 0x37, 0xd6, 0x4a, 0xe9,
|
||||
0x6c, 0x84, 0x3f, 0x08, 0x0e, 0xc7, 0x64, 0xe7, 0x89, 0xce, 0x2c, 0x97, 0x99, 0x28, 0x4c, 0x24,
|
||||
0x7e, 0x2c, 0x85, 0xb1, 0xf4, 0x06, 0xe9, 0x67, 0x5c, 0x09, 0x93, 0xf3, 0x58, 0xb0, 0xd6, 0x7e,
|
||||
0xeb, 0xb0, 0x1f, 0x2d, 0x00, 0x3a, 0x22, 0xab, 0x49, 0x21, 0xe7, 0xa2, 0x60, 0xed, 0xfd, 0xd6,
|
||||
0xe1, 0xe0, 0xe4, 0xea, 0xb1, 0x57, 0xac, 0x85, 0x4e, 0x9d, 0x3b, 0xf2, 0xb4, 0xe1, 0xef, 0x2d,
|
||||
0xd2, 0xaf, 0x7d, 0x7f, 0x21, 0x3e, 0x20, 0x6d, 0x99, 0x38, 0xe1, 0x7e, 0xd4, 0x96, 0x09, 0xbd,
|
||||
0x44, 0xba, 0x52, 0xf1, 0xa9, 0x60, 0x2b, 0x0e, 0x42, 0x83, 0x6e, 0x93, 0x95, 0x5c, 0x26, 0xac,
|
||||
0xb3, 0xdf, 0x3a, 0xdc, 0x8c, 0xe0, 0x93, 0x5e, 0x21, 0xab, 0xc6, 0x72, 0x5b, 0x1a, 0xd6, 0x75,
|
||||
0x44, 0x6f, 0xd1, 0xcb, 0x64, 0x35, 0xd7, 0xc9, 0x99, 0x4c, 0xd8, 0x2a, 0x0a, 0xe4, 0x3a, 0x79,
|
||||
0x9a, 0x50, 0x4a, 0x3a, 0x30, 0x27, 0xeb, 0x39, 0xd0, 0x7d, 0x0f, 0x6d, 0x90, 0x8a, 0x48, 0x98,
|
||||
0x5c, 0x67, 0x46, 0xd0, 0x07, 0x64, 0x4d, 0x09, 0xcb, 0x13, 0x6e, 0xb9, 0x5b, 0xec, 0xfa, 0xc9,
|
||||
0xa5, 0x2a, 0xdc, 0xaf, 0x75, 0x22, 0x9e, 0x79, 0x5f, 0x54, 0xb3, 0xe8, 0x11, 0x21, 0x71, 0x9d,
|
||||
0x51, 0xd6, 0xde, 0x5f, 0x39, 0x5c, 0x3f, 0xd9, 0x3c, 0xd6, 0x66, 0x91, 0x9e, 0x28, 0x20, 0x0c,
|
||||
0x4f, 0xc9, 0x56, 0x58, 0x80, 0x3c, 0xbd, 0xa0, 0x0f, 0xc9, 0x5a, 0xe1, 0xe7, 0x67, 0x2d, 0x37,
|
||||
0xfe, 0x72, 0x73, 0xbc, 0x77, 0x46, 0x35, 0x6d, 0x48, 0xc9, 0xf6, 0x8b, 0x42, 0xc7, 0xc2, 0x18,
|
||||
0x51, 0x55, 0x71, 0xf8, 0x88, 0x0c, 0x02, 0x0c, 0x84, 0x47, 0xaf, 0x09, 0xef, 0x82, 0xb0, 0x67,
|
||||
0xbd, 0x41, 0x36, 0x23, 0x5b, 0x4b, 0xce, 0x8f, 0x48, 0xc8, 0x3d, 0xd2, 0xcf, 0xab, 0x75, 0xf8,
|
||||
0x7c, 0xac, 0x87, 0xd3, 0x2e, 0xbc, 0xc3, 0x5f, 0xdb, 0xa4, 0xe7, 0xe1, 0xaa, 0xc6, 0x30, 0x47,
|
||||
0x17, 0x6b, 0x4c, 0x49, 0x27, 0xcf, 0x7d, 0x77, 0x74, 0x23, 0xf7, 0x0d, 0xfd, 0x01, 0x95, 0xae,
|
||||
0xfb, 0xc3, 0x19, 0x94, 0x91, 0x9e, 0x9d, 0x15, 0x82, 0x27, 0xc6, 0xf5, 0x48, 0x37, 0xaa, 0x4c,
|
||||
0x7a, 0x8d, 0xac, 0xc5, 0x79, 0x79, 0x66, 0xa5, 0x12, 0xae, 0x53, 0x5a, 0x51, 0x2f, 0xce, 0xcb,
|
||||
0x6f, 0xa4, 0x12, 0xf4, 0x80, 0x0c, 0xe6, 0xb2, 0xb0, 0x25, 0x4f, 0xcf, 0x94, 0x50, 0xba, 0xb8,
|
||||
0x70, 0x2d, 0xd3, 0x89, 0x36, 0x3d, 0xfa, 0xcc, 0x81, 0xf4, 0x2e, 0xd9, 0x2a, 0x84, 0x91, 0x89,
|
||||
0xc8, 0x6c, 0xc5, 0xeb, 0x39, 0xde, 0xa0, 0x82, 0x3d, 0x91, 0x91, 0x1e, 0x24, 0x86, 0x67, 0x09,
|
||||
0x5b, 0x73, 0x8b, 0xab, 0x4c, 0x7a, 0x93, 0x10, 0xf1, 0x93, 0x88, 0x4b, 0xcb, 0xc7, 0xa9, 0x60,
|
||||
0x7d, 0xe7, 0x0c, 0x10, 0x08, 0x94, 0x17, 0x53, 0xc3, 0x08, 0x76, 0x27, 0x7c, 0x0f, 0x35, 0x19,
|
||||
0x44, 0xc2, 0x58, 0x5e, 0xd8, 0xf7, 0xdb, 0xa5, 0xcb, 0x1b, 0x69, 0xb1, 0x6b, 0x57, 0xde, 0x6f,
|
||||
0xd7, 0x3e, 0x21, 0x5b, 0xf5, 0x84, 0x1f, 0x5b, 0xfb, 0xe1, 0x97, 0x64, 0xa3, 0x16, 0x79, 0x47,
|
||||
0x07, 0x2e, 0x4d, 0x14, 0x74, 0xe0, 0xf7, 0x64, 0xe3, 0xa5, 0xe5, 0xf6, 0x9f, 0x3a, 0x9a, 0x38,
|
||||
0xd9, 0xf4, 0xf2, 0x1f, 0xdd, 0xde, 0x37, 0xb1, 0x03, 0xab, 0xd6, 0x5e, 0x83, 0x78, 0x40, 0x13,
|
||||
0x7b, 0xd1, 0x0c, 0x3f, 0x27, 0xc4, 0x4f, 0x01, 0x09, 0x38, 0x7a, 0x2d, 0x01, 0x3b, 0xd5, 0x80,
|
||||
0x37, 0x6d, 0xc0, 0xdf, 0x5a, 0xa4, 0x03, 0xbe, 0x0f, 0x2c, 0xf6, 0x2d, 0xb2, 0x81, 0xad, 0x79,
|
||||
0x56, 0x1a, 0x38, 0x3c, 0x3b, 0xae, 0x41, 0xd7, 0x11, 0xfb, 0x16, 0x20, 0x7a, 0x9d, 0xf4, 0x61,
|
||||
0x23, 0xa0, 0xbf, 0xeb, 0xfc, 0xb0, 0x33, 0xd0, 0xf9, 0x01, 0xa7, 0xe6, 0x0f, 0x64, 0xeb, 0x99,
|
||||
0x50, 0x4f, 0xb3, 0x89, 0xfe, 0x1b, 0x39, 0x3c, 0x20, 0x3d, 0x25, 0x94, 0xcc, 0x26, 0xda, 0x05,
|
||||
0xe1, 0x0f, 0x88, 0x4a, 0xb7, 0xf2, 0x41, 0x37, 0xd5, 0x73, 0xbd, 0xa3, 0x9b, 0x96, 0xd6, 0x13,
|
||||
0xa4, 0xf3, 0x97, 0x0d, 0xd2, 0xf3, 0x5e, 0xba, 0x07, 0xab, 0x54, 0x56, 0x5b, 0x9e, 0xba, 0x55,
|
||||
0x76, 0xa2, 0xda, 0x86, 0xad, 0xab, 0x84, 0x9a, 0x14, 0x42, 0xb8, 0xf5, 0x74, 0xa2, 0xca, 0xa4,
|
||||
0x43, 0x97, 0x59, 0x3e, 0xe7, 0x32, 0x75, 0x9b, 0x77, 0xc5, 0xb9, 0x1b, 0x18, 0x8c, 0x1e, 0x97,
|
||||
0x93, 0x09, 0x1c, 0xff, 0x98, 0xf8, 0xca, 0x84, 0x5b, 0x2a, 0xe6, 0xf1, 0x4c, 0x24, 0x3e, 0xe3,
|
||||
0xde, 0x82, 0x03, 0xc1, 0xbc, 0xe2, 0xb9, 0xf7, 0xe1, 0xb1, 0x13, 0x20, 0x30, 0x8e, 0xc7, 0x56,
|
||||
0xce, 0x85, 0x3f, 0x6a, 0xbc, 0x05, 0x31, 0xc8, 0xcc, 0x7b, 0xd6, 0x30, 0x86, 0xca, 0x06, 0x4d,
|
||||
0xfc, 0xe2, 0x99, 0xce, 0xdc, 0x21, 0xd3, 0x89, 0x02, 0x04, 0x22, 0xa9, 0xb8, 0x8e, 0x41, 0x30,
|
||||
0x92, 0x10, 0x5b, 0x68, 0x4c, 0x64, 0x2a, 0xd8, 0x7a, 0xa8, 0x01, 0x48, 0xa8, 0xe1, 0x18, 0x1b,
|
||||
0x4d, 0x0d, 0xc7, 0xd9, 0x27, 0xeb, 0x65, 0x26, 0xe6, 0x32, 0xc6, 0xd3, 0x6e, 0x13, 0x5b, 0x31,
|
||||
0x80, 0x5c, 0xb6, 0x53, 0x1d, 0x9f, 0x8b, 0x84, 0x0d, 0x7c, 0xb6, 0xd1, 0x84, 0xae, 0x87, 0x2c,
|
||||
0x60, 0x91, 0xb6, 0x9c, 0x6f, 0x01, 0x40, 0xf4, 0x60, 0xb8, 0x32, 0x6d, 0x63, 0xf4, 0x95, 0x0d,
|
||||
0xf7, 0x42, 0x22, 0x0b, 0x7b, 0xc1, 0x76, 0x9c, 0x03, 0x0d, 0xd0, 0x7b, 0x55, 0x48, 0x2b, 0xc6,
|
||||
0x3c, 0x3e, 0x67, 0x14, 0xf5, 0x6a, 0x00, 0xbc, 0x10, 0x75, 0xce, 0xa7, 0xc2, 0xb0, 0x5d, 0xf4,
|
||||
0xd6, 0x00, 0xd4, 0x40, 0xf1, 0x3c, 0x17, 0x09, 0xbb, 0x84, 0x35, 0x40, 0xcb, 0xdd, 0x40, 0x33,
|
||||
0x25, 0x14, 0xbb, 0x8c, 0x33, 0x39, 0x03, 0xb6, 0x8a, 0x49, 0xf9, 0x98, 0x5d, 0x71, 0xa0, 0xfb,
|
||||
0x86, 0x6c, 0x99, 0x42, 0xc4, 0x29, 0x97, 0xca, 0xa5, 0xe2, 0x2a, 0x66, 0x2b, 0xc4, 0x5c, 0x27,
|
||||
0x94, 0x99, 0x47, 0x18, 0xf3, 0x9d, 0x50, 0x23, 0x90, 0xcd, 0x73, 0x51, 0x64, 0x22, 0x35, 0x16,
|
||||
0x62, 0xb8, 0x86, 0xd9, 0x0c, 0x20, 0x50, 0x80, 0x05, 0xbb, 0xd4, 0x1a, 0xb6, 0x87, 0x0a, 0x0b,
|
||||
0x04, 0x14, 0xb2, 0x89, 0x29, 0x33, 0x83, 0xf5, 0xb8, 0x8e, 0x0a, 0x01, 0x04, 0x91, 0x8e, 0x75,
|
||||
0x99, 0xc5, 0x82, 0xdd, 0xc0, 0x48, 0xd1, 0x82, 0xf5, 0xd7, 0xc9, 0xb2, 0x2a, 0x67, 0xff, 0xc2,
|
||||
0xf5, 0x87, 0x18, 0xa8, 0xc3, 0x56, 0x97, 0x36, 0x95, 0x4a, 0x5a, 0x76, 0x13, 0xd5, 0x03, 0x68,
|
||||
0xc1, 0xb0, 0x22, 0xe1, 0x86, 0xfd, 0x3b, 0x64, 0x38, 0x08, 0xe6, 0x99, 0x2b, 0x9e, 0xa6, 0x3a,
|
||||
0xc6, 0xc2, 0xef, 0xe3, 0x3c, 0x21, 0x06, 0x2a, 0xde, 0x2e, 0x8d, 0x48, 0xd8, 0x2d, 0x54, 0x09,
|
||||
0xa0, 0x40, 0x25, 0x9e, 0x95, 0xd9, 0x39, 0x1b, 0x36, 0x54, 0x1c, 0x46, 0xef, 0x93, 0x9d, 0x19,
|
||||
0x2f, 0x92, 0x57, 0xbc, 0x10, 0xb1, 0x2e, 0x8a, 0x32, 0xb7, 0x22, 0x61, 0xff, 0x71, 0xc4, 0xd7,
|
||||
0x1d, 0xf4, 0x36, 0xd9, 0x84, 0x76, 0x98, 0x95, 0x53, 0x81, 0x3d, 0x72, 0x1b, 0xdf, 0x07, 0x0d,
|
||||
0x90, 0xde, 0x21, 0x03, 0xd7, 0x02, 0x0b, 0xda, 0x01, 0x3e, 0x0f, 0x9a, 0x68, 0xcd, 0xcb, 0x55,
|
||||
0xe2, 0xfb, 0xea, 0x4e, 0xc0, 0xab, 0x51, 0xe8, 0xf2, 0x58, 0x71, 0xcc, 0xc4, 0x5d, 0x7f, 0x4e,
|
||||
0x7b, 0xdb, 0x3d, 0x31, 0x14, 0x77, 0x1b, 0xe0, 0x10, 0x77, 0x8e, 0x37, 0x41, 0xbd, 0x9e, 0x0a,
|
||||
0xc7, 0xde, 0x43, 0xf5, 0x26, 0x0a, 0x31, 0xd5, 0x88, 0xd3, 0xf9, 0x2f, 0xc6, 0xd4, 0x00, 0x1b,
|
||||
0xac, 0xc2, 0xcc, 0x13, 0xf6, 0xbf, 0x25, 0x16, 0x80, 0x0d, 0x96, 0x29, 0x8b, 0x9c, 0xdd, 0x5f,
|
||||
0x62, 0x01, 0x08, 0x75, 0xa9, 0x01, 0xf9, 0xb3, 0x60, 0x47, 0x58, 0x97, 0x10, 0x83, 0xea, 0x26,
|
||||
0xb2, 0x10, 0xb1, 0x55, 0x3c, 0xff, 0xe4, 0x9c, 0x1d, 0x63, 0x75, 0x03, 0xa8, 0xc1, 0x38, 0x51,
|
||||
0x6c, 0xb4, 0xc4, 0x38, 0x51, 0x0d, 0xc6, 0xc3, 0x29, 0x7b, 0xb0, 0xc4, 0x78, 0x38, 0x3d, 0xf9,
|
||||
0xa3, 0x4d, 0xda, 0xcf, 0x5f, 0xd2, 0xcf, 0x08, 0x59, 0xbc, 0xc0, 0x69, 0xf3, 0xa9, 0x5d, 0xbd,
|
||||
0x3b, 0xf6, 0x76, 0x97, 0x61, 0xb8, 0x7f, 0x4e, 0x48, 0xf7, 0x54, 0x09, 0x33, 0xa5, 0x57, 0x8e,
|
||||
0xf1, 0x8f, 0xd7, 0x71, 0xf5, 0xc7, 0xeb, 0xf8, 0x2b, 0xf8, 0xe3, 0xb5, 0xb7, 0x53, 0xdd, 0x7b,
|
||||
0xa7, 0x70, 0xdf, 0xf9, 0x31, 0xab, 0xfe, 0x7d, 0xf8, 0xb6, 0x41, 0xdb, 0x8d, 0x3b, 0x0c, 0xc6,
|
||||
0x7c, 0x4a, 0xfa, 0xf5, 0x4b, 0xfe, 0xad, 0xc3, 0x68, 0xf0, 0xa6, 0x5e, 0x3c, 0xf8, 0x7b, 0xfe,
|
||||
0x69, 0x45, 0x69, 0xe3, 0x9d, 0x85, 0x41, 0x6d, 0x37, 0x30, 0x18, 0x70, 0x8f, 0x74, 0xdd, 0x53,
|
||||
0x84, 0x6e, 0x07, 0xaf, 0x12, 0x24, 0x0f, 0x02, 0x24, 0x4f, 0x2f, 0x1e, 0x7f, 0x01, 0xff, 0x73,
|
||||
0x14, 0x80, 0x3c, 0x97, 0x8f, 0xbb, 0xcf, 0xcd, 0xa3, 0x5c, 0xbe, 0x68, 0x7d, 0x77, 0x30, 0x95,
|
||||
0x76, 0x56, 0x8e, 0x21, 0xf0, 0x91, 0xe5, 0xa9, 0x36, 0x47, 0xe6, 0xc2, 0x58, 0xa1, 0x0c, 0x5a,
|
||||
0x23, 0x9e, 0xcb, 0x91, 0x36, 0xe3, 0x55, 0xb7, 0xfa, 0xff, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff,
|
||||
0x42, 0x1d, 0x62, 0x84, 0xc3, 0x0e, 0x00, 0x00,
|
||||
// 1396 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6e, 0x1b, 0x45,
|
||||
0x14, 0x96, 0x1d, 0x3b, 0x8e, 0xc7, 0x89, 0x93, 0x4c, 0xfa, 0x33, 0x4d, 0x4b, 0x49, 0x4d, 0xd3,
|
||||
0xa6, 0xd0, 0xd8, 0xd4, 0x54, 0x02, 0x09, 0x24, 0xd4, 0x12, 0x84, 0x7a, 0x51, 0xb5, 0xda, 0xc2,
|
||||
0x0d, 0x12, 0x8a, 0xc6, 0xbb, 0x63, 0x7b, 0x94, 0x9d, 0xdd, 0x65, 0x67, 0xd6, 0x6d, 0x78, 0x05,
|
||||
0x5e, 0x80, 0x3b, 0x6e, 0x78, 0x0b, 0x5e, 0x0e, 0x9d, 0x39, 0xb3, 0xeb, 0x59, 0xf7, 0x87, 0x96,
|
||||
0x88, 0x2b, 0xef, 0xf9, 0xce, 0x37, 0xdf, 0xcc, 0xf9, 0x99, 0x1f, 0x93, 0x5e, 0xaa, 0x47, 0xa9,
|
||||
0x1e, 0x66, 0x79, 0x6a, 0x52, 0xda, 0x4c, 0xf5, 0xfe, 0xf5, 0x59, 0x9a, 0xce, 0x62, 0x31, 0xb2,
|
||||
0xc8, 0xa4, 0x98, 0x8e, 0x84, 0xca, 0xcc, 0x39, 0x12, 0xf6, 0xf7, 0xc2, 0x54, 0xa9, 0x34, 0x19,
|
||||
0xe1, 0x0f, 0x82, 0x83, 0x09, 0xd9, 0xfd, 0x2e, 0x4d, 0x0c, 0x97, 0x89, 0xc8, 0x75, 0x20, 0x7e,
|
||||
0x2d, 0x84, 0x36, 0xf4, 0x06, 0xe9, 0x26, 0x5c, 0x09, 0x9d, 0xf1, 0x50, 0xb0, 0xc6, 0x41, 0xe3,
|
||||
0xa8, 0x1b, 0x2c, 0x01, 0x3a, 0x22, 0xeb, 0x51, 0x2e, 0x17, 0x22, 0x67, 0xcd, 0x83, 0xc6, 0x51,
|
||||
0x7f, 0x7c, 0x75, 0xe8, 0x14, 0x2b, 0xa1, 0x13, 0xeb, 0x0e, 0x1c, 0x6d, 0xf0, 0x57, 0x83, 0x74,
|
||||
0x2b, 0xdf, 0xbf, 0x88, 0xf7, 0x49, 0x53, 0x46, 0x56, 0xb8, 0x1b, 0x34, 0x65, 0x44, 0x2f, 0x91,
|
||||
0xb6, 0x54, 0x7c, 0x26, 0xd8, 0x9a, 0x85, 0xd0, 0xa0, 0x3b, 0x64, 0x2d, 0x93, 0x11, 0x6b, 0x1d,
|
||||
0x34, 0x8e, 0xb6, 0x02, 0xf8, 0xa4, 0x57, 0xc8, 0xba, 0x36, 0xdc, 0x14, 0x9a, 0xb5, 0x2d, 0xd1,
|
||||
0x59, 0xf4, 0x32, 0x59, 0xcf, 0xd2, 0xe8, 0x54, 0x46, 0x6c, 0x1d, 0x05, 0xb2, 0x34, 0x7a, 0x12,
|
||||
0x51, 0x4a, 0x5a, 0x30, 0x27, 0xeb, 0x58, 0xd0, 0x7e, 0x0f, 0x5e, 0x79, 0xa9, 0x08, 0x84, 0xce,
|
||||
0xd2, 0x44, 0x0b, 0xfa, 0x90, 0x6c, 0x28, 0x61, 0x78, 0xc4, 0x0d, 0xb7, 0x8b, 0xed, 0x8d, 0x59,
|
||||
0x19, 0x6e, 0xc9, 0x79, 0xea, 0xfc, 0x41, 0xc5, 0xa4, 0xc7, 0x84, 0x84, 0x55, 0x56, 0x59, 0xf3,
|
||||
0x60, 0xed, 0xa8, 0x37, 0xde, 0x1a, 0xa6, 0x7a, 0x99, 0xa2, 0xc0, 0x23, 0x0c, 0x4e, 0xc8, 0xb6,
|
||||
0x5f, 0x84, 0x2c, 0x3e, 0xa7, 0x0f, 0xc8, 0x46, 0xee, 0xf4, 0x59, 0xc3, 0x8e, 0xbf, 0x5c, 0x1f,
|
||||
0xef, 0x9c, 0x41, 0x45, 0x1b, 0x50, 0xb2, 0xf3, 0x3c, 0x4f, 0x43, 0xa1, 0xb5, 0x28, 0x2b, 0x39,
|
||||
0x78, 0x44, 0xfa, 0x1e, 0x06, 0xc2, 0xa3, 0xd7, 0x84, 0xf7, 0x40, 0xd8, 0xb1, 0xde, 0x20, 0x9b,
|
||||
0x93, 0xed, 0x15, 0xe7, 0x7f, 0x4c, 0xca, 0x3d, 0xd2, 0xcd, 0xca, 0xb5, 0xb8, 0x9c, 0xf4, 0xfc,
|
||||
0xa9, 0x97, 0xde, 0xc1, 0x1f, 0x4d, 0xd2, 0x71, 0x70, 0x59, 0x6b, 0x98, 0xa7, 0x8d, 0xb5, 0xa6,
|
||||
0xa4, 0x95, 0x65, 0xae, 0x4b, 0xda, 0x81, 0xfd, 0x86, 0x3e, 0x81, 0x8a, 0x57, 0x7d, 0x62, 0x0d,
|
||||
0xca, 0x48, 0xc7, 0xcc, 0x73, 0xc1, 0x23, 0x6d, 0x7b, 0xa5, 0x1d, 0x94, 0x26, 0xbd, 0x46, 0x36,
|
||||
0xc2, 0xac, 0x38, 0x35, 0x52, 0x09, 0xdb, 0x31, 0x8d, 0xa0, 0x13, 0x66, 0xc5, 0x8f, 0x52, 0x09,
|
||||
0x7a, 0x48, 0xfa, 0x0b, 0x99, 0x9b, 0x82, 0xc7, 0xa7, 0x4a, 0xa8, 0x34, 0x3f, 0xb7, 0xad, 0xd3,
|
||||
0x0a, 0xb6, 0x1c, 0xfa, 0xd4, 0x82, 0xf4, 0x2e, 0xd9, 0xce, 0x85, 0x96, 0x91, 0x48, 0x4c, 0xc9,
|
||||
0xeb, 0x58, 0x5e, 0xbf, 0x84, 0x1d, 0x91, 0x91, 0x0e, 0x24, 0x87, 0x27, 0x11, 0xdb, 0xb0, 0x8b,
|
||||
0x2b, 0x4d, 0x7a, 0x93, 0x10, 0xf1, 0x4a, 0x84, 0x85, 0xe1, 0x93, 0x58, 0xb0, 0xae, 0x75, 0x7a,
|
||||
0x08, 0x04, 0xca, 0xf3, 0x99, 0x66, 0x04, 0xbb, 0x14, 0xbe, 0x07, 0x29, 0xe9, 0x07, 0x42, 0x1b,
|
||||
0x9e, 0x9b, 0xf7, 0xdb, 0xad, 0xab, 0x1b, 0x6a, 0xb9, 0x7b, 0xd7, 0xde, 0x6f, 0xf7, 0xfe, 0x40,
|
||||
0xb6, 0xab, 0x09, 0x2f, 0x52, 0xff, 0xc1, 0xb7, 0x64, 0xb3, 0x12, 0x7a, 0x47, 0x27, 0xae, 0x4c,
|
||||
0xe6, 0x75, 0xe2, 0x2f, 0x64, 0xf3, 0x85, 0xe1, 0xe6, 0xff, 0x3a, 0xa6, 0x04, 0xd9, 0x72, 0xf2,
|
||||
0x17, 0x6a, 0xf3, 0x9b, 0xd8, 0x89, 0x65, 0x8b, 0x6f, 0x40, 0x4c, 0xa0, 0x8b, 0x3d, 0xa9, 0x07,
|
||||
0x5f, 0x13, 0xe2, 0xa6, 0x81, 0x24, 0x1c, 0xbf, 0x96, 0x84, 0xdd, 0x72, 0xc0, 0x9b, 0x36, 0xe3,
|
||||
0x9f, 0x0d, 0xd2, 0x02, 0xdf, 0x07, 0x16, 0xfd, 0x16, 0xd9, 0xc4, 0x16, 0x3d, 0x2d, 0x34, 0x1c,
|
||||
0xa6, 0x2d, 0xdb, 0xa8, 0x3d, 0xc4, 0x7e, 0x02, 0x88, 0x5e, 0x27, 0x5d, 0xd8, 0x10, 0xe8, 0x6f,
|
||||
0x5b, 0x3f, 0xec, 0x10, 0x74, 0x7e, 0xc0, 0x29, 0x9a, 0x90, 0xed, 0xa7, 0x42, 0x3d, 0x49, 0xa6,
|
||||
0xe9, 0x05, 0xf3, 0x78, 0x48, 0x3a, 0x4a, 0x28, 0x99, 0x4c, 0x53, 0x1b, 0x88, 0x3b, 0x2c, 0x4a,
|
||||
0xed, 0xd2, 0x07, 0x5d, 0x55, 0xcd, 0xf7, 0x8e, 0xae, 0x5a, 0x59, 0x93, 0x97, 0xd2, 0xdf, 0x37,
|
||||
0x49, 0xc7, 0x79, 0xe9, 0x3e, 0xac, 0x54, 0x99, 0xd4, 0xf0, 0xd8, 0xae, 0xb4, 0x15, 0x54, 0x36,
|
||||
0x6c, 0x63, 0x25, 0xd4, 0x34, 0x17, 0xc2, 0xae, 0xa7, 0x15, 0x94, 0x26, 0x1d, 0xd8, 0xec, 0xf2,
|
||||
0x05, 0x97, 0xb1, 0xdd, 0xc8, 0x6b, 0xd6, 0x5d, 0xc3, 0x60, 0xf4, 0xa4, 0x98, 0x4e, 0xe1, 0x3a,
|
||||
0xc0, 0xe4, 0x97, 0x26, 0xdc, 0x5c, 0x21, 0x0f, 0xe7, 0x22, 0x72, 0x59, 0x77, 0x16, 0x1c, 0x0e,
|
||||
0xfa, 0x25, 0xcf, 0x9c, 0x0f, 0x8f, 0x20, 0x0f, 0x81, 0x71, 0x3c, 0x34, 0x72, 0x21, 0xdc, 0xb1,
|
||||
0xe3, 0x2c, 0x88, 0x41, 0x26, 0xce, 0xb3, 0x81, 0x31, 0x94, 0x36, 0x68, 0xe2, 0x17, 0x4f, 0xd2,
|
||||
0xc4, 0x1e, 0x38, 0xad, 0xc0, 0x43, 0x20, 0x92, 0x92, 0x6b, 0x19, 0x04, 0x23, 0xf1, 0xb1, 0xa5,
|
||||
0xc6, 0x54, 0xc6, 0x82, 0xf5, 0x7c, 0x0d, 0x40, 0x7c, 0x0d, 0xcb, 0xd8, 0xac, 0x6b, 0x58, 0xce,
|
||||
0x01, 0xe9, 0x15, 0x89, 0x58, 0xc8, 0x10, 0x4f, 0xbe, 0x2d, 0x6c, 0x47, 0x0f, 0xb2, 0xd9, 0x8e,
|
||||
0xd3, 0xf0, 0x4c, 0x44, 0xac, 0xef, 0xb2, 0x8d, 0x26, 0x74, 0x3e, 0x64, 0x01, 0x8b, 0xb4, 0x6d,
|
||||
0x7d, 0x4b, 0x00, 0xa2, 0x07, 0xc3, 0x96, 0x69, 0x07, 0xa3, 0x2f, 0x6d, 0xb8, 0x23, 0x22, 0x99,
|
||||
0x9b, 0x73, 0xb6, 0x6b, 0x1d, 0x68, 0x80, 0xde, 0xcb, 0x5c, 0x1a, 0x31, 0xe1, 0xe1, 0x19, 0xa3,
|
||||
0xa8, 0x57, 0x01, 0xe0, 0x85, 0xa8, 0x33, 0x3e, 0x13, 0x9a, 0xed, 0xa1, 0xb7, 0x02, 0xa0, 0x06,
|
||||
0x8a, 0x67, 0x99, 0x88, 0xd8, 0x25, 0xac, 0x01, 0x5a, 0xf6, 0x36, 0x9a, 0x2b, 0xa1, 0xd8, 0x65,
|
||||
0x9c, 0xc9, 0x1a, 0xb0, 0x5d, 0x74, 0xcc, 0x27, 0xec, 0x8a, 0x05, 0xed, 0x37, 0x64, 0x4b, 0xe7,
|
||||
0x22, 0x8c, 0xb9, 0x54, 0x36, 0x15, 0x57, 0x31, 0x5b, 0x3e, 0x66, 0x3b, 0xa1, 0x48, 0x1c, 0xc2,
|
||||
0x98, 0xeb, 0x84, 0x0a, 0x81, 0x6c, 0x9e, 0x89, 0x3c, 0x11, 0xb1, 0x36, 0x10, 0xc3, 0x35, 0xcc,
|
||||
0xa6, 0x07, 0x81, 0x02, 0x2c, 0xd8, 0xa6, 0x56, 0xb3, 0x7d, 0x54, 0x58, 0x22, 0xa0, 0x90, 0x4c,
|
||||
0x75, 0x91, 0x68, 0xac, 0xc7, 0x75, 0x54, 0xf0, 0x20, 0x88, 0x74, 0x92, 0x16, 0x49, 0x28, 0xd8,
|
||||
0x0d, 0x8c, 0x14, 0x2d, 0x58, 0x7f, 0x95, 0x2c, 0xa3, 0x32, 0xf6, 0x11, 0xae, 0xdf, 0xc7, 0x40,
|
||||
0x1d, 0xb6, 0xbb, 0x34, 0xb1, 0x54, 0xd2, 0xb0, 0x9b, 0xa8, 0xee, 0x41, 0x4b, 0x86, 0x11, 0x11,
|
||||
0xd7, 0xec, 0x63, 0x9f, 0x61, 0x21, 0x98, 0x67, 0xa1, 0x78, 0x1c, 0xa7, 0x21, 0x16, 0xfe, 0x00,
|
||||
0xe7, 0xf1, 0x31, 0x50, 0x71, 0x76, 0xa1, 0x45, 0xc4, 0x6e, 0xa1, 0x8a, 0x07, 0x79, 0x2a, 0xe1,
|
||||
0xbc, 0x48, 0xce, 0xd8, 0xa0, 0xa6, 0x62, 0x31, 0x7a, 0x9f, 0xec, 0xce, 0x79, 0x1e, 0xbd, 0xe4,
|
||||
0xb9, 0x08, 0xd3, 0x3c, 0x2f, 0x32, 0x23, 0x22, 0xf6, 0x89, 0x25, 0xbe, 0xee, 0xa0, 0xb7, 0xc9,
|
||||
0x16, 0xb4, 0xc3, 0xbc, 0x98, 0x09, 0xec, 0x91, 0xdb, 0xf8, 0x56, 0xa8, 0x81, 0xf4, 0x0e, 0xe9,
|
||||
0xdb, 0x16, 0x58, 0xd2, 0x0e, 0xf1, 0xa9, 0x50, 0x47, 0x2b, 0x5e, 0xa6, 0x22, 0xd7, 0x57, 0x77,
|
||||
0x3c, 0x5e, 0x85, 0x42, 0x97, 0x87, 0x8a, 0x63, 0x26, 0xee, 0xba, 0xb3, 0xda, 0xd9, 0xf6, 0xb9,
|
||||
0xa1, 0xb8, 0xdd, 0x00, 0x47, 0xb8, 0x73, 0x9c, 0x09, 0xea, 0xd5, 0x54, 0x38, 0xf6, 0x1e, 0xaa,
|
||||
0xd7, 0x51, 0x88, 0xa9, 0x42, 0xac, 0xce, 0xa7, 0x18, 0x53, 0x0d, 0xac, 0xb1, 0x72, 0xbd, 0x88,
|
||||
0xd8, 0x67, 0x2b, 0x2c, 0x00, 0x6b, 0x2c, 0x5d, 0xe4, 0x19, 0xbb, 0xbf, 0xc2, 0x02, 0x10, 0xea,
|
||||
0x52, 0x01, 0xf2, 0x37, 0xc1, 0x8e, 0xb1, 0x2e, 0x3e, 0x06, 0xd5, 0x8d, 0x64, 0x2e, 0x42, 0xa3,
|
||||
0x78, 0xf6, 0xf0, 0x8c, 0x0d, 0xb1, 0xba, 0x1e, 0x54, 0x63, 0x8c, 0x15, 0x1b, 0xad, 0x30, 0xc6,
|
||||
0xaa, 0xc6, 0x78, 0x30, 0x63, 0x9f, 0xaf, 0x30, 0x1e, 0xcc, 0xc6, 0x7f, 0x37, 0x49, 0xf3, 0xd9,
|
||||
0x0b, 0xfa, 0x15, 0x21, 0xcb, 0x17, 0x39, 0xad, 0x3f, 0xbd, 0xcb, 0xf7, 0xc7, 0xfe, 0xde, 0x2a,
|
||||
0x0c, 0xf7, 0xcf, 0x98, 0xb4, 0x4f, 0x94, 0xd0, 0x33, 0x7a, 0x65, 0x88, 0x7f, 0xc6, 0x86, 0xe5,
|
||||
0x9f, 0xb1, 0xe1, 0xf7, 0xf0, 0x67, 0x6c, 0x7f, 0xb7, 0xbc, 0xfb, 0x4e, 0xe0, 0xbe, 0x73, 0x63,
|
||||
0xd6, 0xdd, 0x5b, 0xf1, 0x6d, 0x83, 0x76, 0x6a, 0x77, 0x18, 0x8c, 0xf9, 0x92, 0x74, 0xab, 0x97,
|
||||
0xfd, 0x5b, 0x87, 0x51, 0xef, 0x7d, 0xbd, 0xfc, 0x03, 0xd0, 0x71, 0x4f, 0x2c, 0x4a, 0x6b, 0xef,
|
||||
0x2d, 0x0c, 0x6a, 0xa7, 0x86, 0xc1, 0x80, 0x7b, 0xa4, 0x6d, 0x9f, 0x23, 0x74, 0xc7, 0x7b, 0x99,
|
||||
0x20, 0xb9, 0xef, 0x21, 0x59, 0x7c, 0xfe, 0xf8, 0x1b, 0xf8, 0xdf, 0xa3, 0x00, 0xe4, 0x99, 0x7c,
|
||||
0xdc, 0x7e, 0xa6, 0x1f, 0x65, 0xf2, 0x79, 0xe3, 0xe7, 0xc3, 0x99, 0x34, 0xf3, 0x62, 0x02, 0x81,
|
||||
0x8f, 0x0c, 0x8f, 0x53, 0x7d, 0xac, 0xcf, 0xb5, 0x11, 0x4a, 0xa3, 0x35, 0xe2, 0x99, 0x1c, 0xa5,
|
||||
0x7a, 0xb2, 0x6e, 0x57, 0xff, 0xc5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x2c, 0xaa, 0xad,
|
||||
0xd7, 0x0e, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
||||
@@ -44,7 +44,7 @@ message Container {
|
||||
|
||||
// The response message containing the requested containers.
|
||||
message ContainerResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated Container containers = 2;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ message ProcessesReply {
|
||||
}
|
||||
|
||||
message ProcessResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated Process processes = 2;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ message RestartRequest {
|
||||
}
|
||||
|
||||
message RestartResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
}
|
||||
|
||||
// The response message containing the restart status.
|
||||
@@ -106,7 +106,7 @@ message StatsRequest {
|
||||
|
||||
// The response message containing the requested stats.
|
||||
message StatsResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
repeated Stat stats = 2;
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ message Stat {
|
||||
|
||||
|
||||
message MemInfoResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
MemInfo meminfo = 2;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,13 +118,13 @@ func (m *TimeReply) GetResponse() []*TimeResponse {
|
||||
}
|
||||
|
||||
type TimeResponse struct {
|
||||
Metadata *common.NodeMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"`
|
||||
Localtime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=localtime,proto3" json:"localtime,omitempty"`
|
||||
Remotetime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=remotetime,proto3" json:"remotetime,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
Metadata *common.ResponseMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"`
|
||||
Localtime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=localtime,proto3" json:"localtime,omitempty"`
|
||||
Remotetime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=remotetime,proto3" json:"remotetime,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *TimeResponse) Reset() { *m = TimeResponse{} }
|
||||
@@ -156,7 +156,7 @@ func (m *TimeResponse) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_TimeResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *TimeResponse) GetMetadata() *common.NodeMetadata {
|
||||
func (m *TimeResponse) GetMetadata() *common.ResponseMetadata {
|
||||
if m != nil {
|
||||
return m.Metadata
|
||||
}
|
||||
@@ -193,28 +193,28 @@ func init() {
|
||||
func init() { proto.RegisterFile("time/time.proto", fileDescriptor_e7ed1ef5b20ef4ce) }
|
||||
|
||||
var fileDescriptor_e7ed1ef5b20ef4ce = []byte{
|
||||
// 332 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xc1, 0x4e, 0x32, 0x31,
|
||||
0x14, 0x85, 0x33, 0x3f, 0x84, 0x1f, 0x2e, 0x24, 0xc4, 0x6a, 0x08, 0x19, 0x17, 0x12, 0x12, 0x23,
|
||||
0x1b, 0xa7, 0x06, 0x37, 0x46, 0x57, 0x62, 0x5c, 0x6a, 0xcc, 0xc4, 0x95, 0xbb, 0x32, 0x5c, 0xa1,
|
||||
0x71, 0xca, 0xad, 0xd3, 0x62, 0xc2, 0x4b, 0xfa, 0x4c, 0xa6, 0xed, 0x88, 0x8d, 0x2c, 0xdc, 0x4c,
|
||||
0xa7, 0xf7, 0x9c, 0x33, 0x3d, 0xf9, 0xa6, 0xd0, 0xb7, 0x52, 0x21, 0x77, 0x8f, 0x4c, 0x57, 0x64,
|
||||
0x89, 0x35, 0xdd, 0x7b, 0x7a, 0xbc, 0x24, 0x5a, 0x96, 0xc8, 0xfd, 0x6c, 0xbe, 0x79, 0xe5, 0xa8,
|
||||
0xb4, 0xdd, 0x06, 0x4b, 0x7a, 0xf2, 0x5b, 0x74, 0x11, 0x63, 0x85, 0xd2, 0xb5, 0xe1, 0xb0, 0x20,
|
||||
0xa5, 0x68, 0xcd, 0xc3, 0x12, 0x86, 0xe3, 0x53, 0xe8, 0x3e, 0x4b, 0x85, 0x39, 0xbe, 0x6f, 0xd0,
|
||||
0x58, 0x36, 0x80, 0x96, 0xc1, 0xea, 0x03, 0xab, 0x61, 0x32, 0x4a, 0x26, 0x9d, 0xbc, 0xde, 0x8d,
|
||||
0x6f, 0xa0, 0x13, 0x6c, 0xba, 0xdc, 0xb2, 0x0c, 0xda, 0x15, 0x1a, 0x4d, 0x6b, 0x83, 0xc3, 0x64,
|
||||
0xd4, 0x98, 0x74, 0xa7, 0x2c, 0xf3, 0x5d, 0x83, 0x25, 0x28, 0xf9, 0xce, 0x33, 0xfe, 0x4c, 0xa0,
|
||||
0x17, 0x4b, 0xec, 0x02, 0xda, 0x0a, 0xad, 0x58, 0x08, 0x2b, 0xfc, 0x39, 0xdd, 0xe9, 0x51, 0x56,
|
||||
0xb7, 0x7a, 0xa4, 0x05, 0x3e, 0xd4, 0x5a, 0xbe, 0x73, 0x45, 0xbd, 0xfe, 0xc5, 0xbd, 0xd8, 0x15,
|
||||
0x74, 0x4a, 0x2a, 0x44, 0xe9, 0x8e, 0x1f, 0x36, 0xfc, 0xa7, 0xd2, 0x2c, 0x80, 0xc8, 0xbe, 0x41,
|
||||
0xf8, 0x5a, 0x1e, 0x44, 0xfe, 0x63, 0x66, 0xd7, 0x00, 0x15, 0x2a, 0xb2, 0xe8, 0xa3, 0xcd, 0x3f,
|
||||
0xa3, 0x91, 0x7b, 0xba, 0x82, 0xa6, 0x13, 0x18, 0xaf, 0xd7, 0xc1, 0x5e, 0xee, 0xde, 0xfd, 0x98,
|
||||
0xb4, 0x1f, 0x63, 0x71, 0xe4, 0x78, 0xc0, 0x78, 0xb7, 0xc2, 0xe2, 0x8d, 0x1d, 0xc4, 0xaa, 0xc7,
|
||||
0xbf, 0x17, 0x98, 0xcd, 0xa0, 0x57, 0x90, 0x0a, 0x53, 0xa1, 0xe5, 0xec, 0xbf, 0x93, 0x6e, 0xb5,
|
||||
0x7c, 0x4a, 0x5e, 0xce, 0x96, 0xd2, 0xae, 0x36, 0x73, 0x07, 0x8e, 0x5b, 0x51, 0x92, 0x39, 0x37,
|
||||
0x5b, 0x63, 0x51, 0x99, 0xb0, 0xe3, 0x42, 0x4b, 0x7f, 0x05, 0xe6, 0x2d, 0xdf, 0xea, 0xf2, 0x2b,
|
||||
0x00, 0x00, 0xff, 0xff, 0xa7, 0x62, 0x03, 0x24, 0x55, 0x02, 0x00, 0x00,
|
||||
// 331 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x41, 0x4b, 0xfb, 0x30,
|
||||
0x18, 0xc6, 0xe9, 0x7f, 0x63, 0xff, 0xed, 0xdd, 0x60, 0x18, 0x61, 0x94, 0x7a, 0x70, 0x0c, 0xc4,
|
||||
0x5d, 0x4c, 0x60, 0x7a, 0x10, 0x3d, 0x39, 0xf1, 0x28, 0x48, 0xf1, 0xe4, 0x2d, 0xab, 0xaf, 0x5b,
|
||||
0xb0, 0x59, 0x62, 0x93, 0x0a, 0xfd, 0x9a, 0x7e, 0x22, 0x49, 0xd2, 0xcd, 0xe0, 0x0e, 0x5e, 0x9a,
|
||||
0xe6, 0x7d, 0x7e, 0x4f, 0xfb, 0xf0, 0x24, 0x30, 0xb6, 0x42, 0x22, 0x73, 0x0f, 0xaa, 0x2b, 0x65,
|
||||
0x15, 0xe9, 0xba, 0xf7, 0xec, 0x64, 0xad, 0xd4, 0xba, 0x44, 0xe6, 0x67, 0xab, 0xfa, 0x8d, 0xa1,
|
||||
0xd4, 0xb6, 0x09, 0x48, 0x76, 0xfa, 0x5b, 0x74, 0x16, 0x63, 0xb9, 0xd4, 0x2d, 0x70, 0x5c, 0x28,
|
||||
0x29, 0xd5, 0x96, 0x85, 0x25, 0x0c, 0x67, 0x67, 0x30, 0x7c, 0x16, 0x12, 0x73, 0xfc, 0xa8, 0xd1,
|
||||
0x58, 0x32, 0x81, 0x9e, 0xc1, 0xea, 0x13, 0xab, 0x34, 0x99, 0x26, 0xf3, 0x41, 0xde, 0xee, 0x66,
|
||||
0xb7, 0x30, 0x08, 0x98, 0x2e, 0x1b, 0x42, 0xa1, 0x5f, 0xa1, 0xd1, 0x6a, 0x6b, 0x30, 0x4d, 0xa6,
|
||||
0x9d, 0xf9, 0x70, 0x41, 0xa8, 0xcf, 0x1a, 0x90, 0xa0, 0xe4, 0x7b, 0x66, 0xf6, 0x95, 0xc0, 0x28,
|
||||
0x96, 0xc8, 0x15, 0xf4, 0x25, 0x5a, 0xfe, 0xca, 0x2d, 0xf7, 0xff, 0x19, 0x2e, 0x52, 0xda, 0xa6,
|
||||
0xda, 0x31, 0x8f, 0xad, 0x9e, 0xef, 0xc9, 0x28, 0xdb, 0xbf, 0x38, 0x1b, 0xb9, 0x86, 0x41, 0xa9,
|
||||
0x0a, 0x5e, 0xba, 0x08, 0x69, 0xc7, 0x7f, 0x2e, 0xa3, 0xa1, 0x0c, 0xba, 0x2b, 0xc3, 0x47, 0xf3,
|
||||
0x65, 0xe4, 0x3f, 0x30, 0xb9, 0x01, 0xa8, 0x50, 0x2a, 0x8b, 0xde, 0xda, 0xfd, 0xd3, 0x1a, 0xd1,
|
||||
0x8b, 0x0d, 0x74, 0x9d, 0x40, 0x58, 0xbb, 0x4e, 0x0e, 0x7c, 0x0f, 0xee, 0x70, 0xb2, 0x71, 0x5c,
|
||||
0x8d, 0x6b, 0x8f, 0x85, 0x2a, 0xef, 0x37, 0x58, 0xbc, 0x93, 0xa3, 0x58, 0xf5, 0x47, 0x70, 0x60,
|
||||
0x58, 0x2e, 0x61, 0x54, 0x28, 0x19, 0xa6, 0x5c, 0x8b, 0xe5, 0x7f, 0x27, 0xdd, 0x69, 0xf1, 0x94,
|
||||
0xbc, 0x9c, 0xaf, 0x85, 0xdd, 0xd4, 0x2b, 0x57, 0x1e, 0xb3, 0xbc, 0x54, 0xe6, 0xc2, 0x34, 0xc6,
|
||||
0xa2, 0x34, 0x61, 0xc7, 0xb8, 0x16, 0xfe, 0x1a, 0xac, 0x7a, 0x3e, 0xd5, 0xe5, 0x77, 0x00, 0x00,
|
||||
0x00, 0xff, 0xff, 0x2f, 0x43, 0x34, 0x6f, 0x59, 0x02, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
||||
@@ -26,7 +26,7 @@ message TimeReply {
|
||||
}
|
||||
|
||||
message TimeResponse {
|
||||
common.NodeMetadata metadata = 1;
|
||||
common.ResponseMetadata metadata = 1;
|
||||
string server = 2;
|
||||
google.protobuf.Timestamp localtime = 3;
|
||||
google.protobuf.Timestamp remotetime = 4;
|
||||
|
||||
@@ -86,8 +86,8 @@ func NewNode(clusterName string, req *Request) (err error) {
|
||||
|
||||
switch req.Type {
|
||||
case generate.TypeInit:
|
||||
var osdPort nat.Port
|
||||
osdPort, err = nat.NewPort("tcp", "50000")
|
||||
var apidPort nat.Port
|
||||
apidPort, err = nat.NewPort("tcp", "50000")
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -101,12 +101,12 @@ func NewNode(clusterName string, req *Request) (err error) {
|
||||
}
|
||||
|
||||
containerConfig.ExposedPorts = nat.PortSet{
|
||||
osdPort: struct{}{},
|
||||
apidPort: struct{}{},
|
||||
apiServerPort: struct{}{},
|
||||
}
|
||||
|
||||
hostConfig.PortBindings = nat.PortMap{
|
||||
osdPort: []nat.PortBinding{
|
||||
apidPort: []nat.PortBinding{
|
||||
{
|
||||
HostIP: "0.0.0.0",
|
||||
HostPort: "50000",
|
||||
|
||||
@@ -38,7 +38,7 @@ var dmesgCmd = &cobra.Command{
|
||||
if len(reply.Response) > 1 {
|
||||
fmt.Println(resp.Metadata.Hostname)
|
||||
}
|
||||
_, err = os.Stdout.Write(resp.Bytes.Bytes)
|
||||
_, err = os.Stdout.Write(resp.Bytes)
|
||||
helpers.Should(err)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -119,7 +119,7 @@ func setupClient(action func(*client.Client)) {
|
||||
helpers.Fatalf("error getting client credentials: %s", err)
|
||||
}
|
||||
|
||||
c, err := client.NewClient(creds, t, constants.OsdPort)
|
||||
c, err := client.NewClient(creds, t, constants.ApidPort)
|
||||
if err != nil {
|
||||
helpers.Fatalf("error constructing client: %s", err)
|
||||
}
|
||||
|
||||
@@ -373,7 +373,7 @@ func (c *Client) Read(ctx context.Context, path string) (io.Reader, <-chan error
|
||||
}
|
||||
|
||||
type machineStream interface {
|
||||
Recv() (*machineapi.StreamingData, error)
|
||||
Recv() (*common.DataResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
@@ -404,8 +404,8 @@ func readStream(stream machineStream) (io.Reader, <-chan error, error) {
|
||||
}
|
||||
}
|
||||
|
||||
if data.Errors != "" {
|
||||
errCh <- errors.New(data.Errors)
|
||||
if data.Metadata != nil && data.Metadata.Error != "" {
|
||||
errCh <- errors.New(data.Metadata.Error)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
3
go.mod
3
go.mod
@@ -31,6 +31,7 @@ require (
|
||||
github.com/gizak/termui/v3 v3.0.0
|
||||
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
|
||||
github.com/gogo/googleapis v1.1.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.1
|
||||
github.com/golang/protobuf v1.3.2
|
||||
github.com/google/uuid v1.1.1
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0
|
||||
@@ -53,10 +54,12 @@ require (
|
||||
github.com/spf13/cobra v0.0.5
|
||||
github.com/stretchr/testify v1.4.0
|
||||
github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e
|
||||
github.com/talos-systems/grpc-proxy v0.0.0-20191129165806-5c579a7a6147
|
||||
github.com/u-root/u-root v6.0.0+incompatible // indirect
|
||||
github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728
|
||||
go.etcd.io/etcd v3.3.13+incompatible
|
||||
golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a
|
||||
golang.org/x/net v0.0.0-20191116160921-f9c825593386 // indirect
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
|
||||
golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4
|
||||
golang.org/x/text v0.3.2
|
||||
|
||||
6
go.sum
6
go.sum
@@ -394,6 +394,10 @@ github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e h1:QjF5rxNgRSL
|
||||
github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
|
||||
github.com/talos-systems/bootkube v0.14.1-0.20191127182503-08e42a4c200c h1:By7EcuWOTMwvsmymyiWsi+RfK2pVbYEA6Kuk3Ma/K6g=
|
||||
github.com/talos-systems/bootkube v0.14.1-0.20191127182503-08e42a4c200c/go.mod h1:CIpoNLW4Lm9zNVFRgqQIylnbZi/x9TnulTEA8edC0O4=
|
||||
github.com/talos-systems/grpc-proxy v0.0.0-20191127172027-6c9f7b399173 h1:ZxCT4CuPSQPHkK0pFDg820AhozcaMXmDinuXc/E5HSo=
|
||||
github.com/talos-systems/grpc-proxy v0.0.0-20191127172027-6c9f7b399173/go.mod h1:sm97Vc/z2cok3pu6ruNeszQej4KDxFrDgfWs4C1mtC4=
|
||||
github.com/talos-systems/grpc-proxy v0.0.0-20191129165806-5c579a7a6147 h1:Sf4q46/8IkNY+JaYoBV0peSYsO5quJlvvmv2AytJlLI=
|
||||
github.com/talos-systems/grpc-proxy v0.0.0-20191129165806-5c579a7a6147/go.mod h1:sm97Vc/z2cok3pu6ruNeszQej4KDxFrDgfWs4C1mtC4=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/u-root/u-root v6.0.0+incompatible h1:YqPGmRoRyYmeg17KIWFRSyVq6LX5T6GSzawyA6wG6EE=
|
||||
@@ -480,6 +484,8 @@ golang.org/x/net v0.0.0-20191007182048-72f939374954 h1:JGZucVF/L/TotR719NbujzadO
|
||||
golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM=
|
||||
golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191116160921-f9c825593386 h1:ktbWvQrW08Txdxno1PiDpSxPXG6ndGsfnJjRRtkM0LQ=
|
||||
golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
|
||||
@@ -9,12 +9,15 @@ import (
|
||||
"log"
|
||||
stdlibnet "net"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials"
|
||||
|
||||
"github.com/talos-systems/talos/api"
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/backend"
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/director"
|
||||
"github.com/talos-systems/talos/pkg/config"
|
||||
"github.com/talos-systems/talos/pkg/constants"
|
||||
"github.com/talos-systems/talos/pkg/grpc/factory"
|
||||
@@ -61,43 +64,57 @@ func main() {
|
||||
log.Fatalf("failed to create OS-level TLS configuration: %v", err)
|
||||
}
|
||||
|
||||
machineClient, err := api.NewLocalMachineClient()
|
||||
// TODO: refactor
|
||||
certs, err := provider.GetCertificate(nil)
|
||||
if err != nil {
|
||||
log.Fatalf("machine client: %v", err)
|
||||
log.Fatalf("failed to get TLS certs: %v", err)
|
||||
}
|
||||
|
||||
osClient, err := api.NewLocalOSClient()
|
||||
clientTLSConfig, err := tls.New(
|
||||
tls.WithClientAuthType(tls.Mutual),
|
||||
tls.WithCACertPEM(ca),
|
||||
tls.WithKeypair(*certs), // TODO: this doesn't support cert refresh, fix me!
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("networkd client: %v", err)
|
||||
log.Fatalf("failed to create client TLS config: %v", err)
|
||||
}
|
||||
|
||||
timeClient, err := api.NewLocalTimeClient()
|
||||
if err != nil {
|
||||
log.Fatalf("time client: %v", err)
|
||||
backendFactory := backend.NewAPIDFactory(clientTLSConfig)
|
||||
router := director.NewRouter(backendFactory.Get)
|
||||
|
||||
router.RegisterLocalBackend("os.OS", backend.NewLocal("osd", constants.OSSocketPath))
|
||||
router.RegisterLocalBackend("machine.Machine", backend.NewLocal("machined", constants.MachineSocketPath))
|
||||
router.RegisterLocalBackend("time.Time", backend.NewLocal("timed", constants.TimeSocketPath))
|
||||
router.RegisterLocalBackend("network.Network", backend.NewLocal("networkd", constants.NetworkSocketPath))
|
||||
|
||||
// all existing streaming methods
|
||||
for _, methodName := range []string{
|
||||
"/machine.Machine/CopyOut",
|
||||
"/machine.Machine/Kubeconfig",
|
||||
"/machine.Machine/LS",
|
||||
"/machine.Machine/Logs",
|
||||
"/machine.Machine/Read",
|
||||
} {
|
||||
router.RegisterStreamedRegex("^" + regexp.QuoteMeta(methodName) + "$")
|
||||
}
|
||||
|
||||
networkClient, err := api.NewLocalNetworkClient()
|
||||
if err != nil {
|
||||
log.Fatalf("time client: %v", err)
|
||||
}
|
||||
|
||||
protoProxy := api.NewApiProxy(provider)
|
||||
// register future pattern: method should have suffix "Stream"
|
||||
router.RegisterStreamedRegex("Stream$")
|
||||
|
||||
err = factory.ListenAndServe(
|
||||
&api.Registrator{
|
||||
MachineClient: machineClient,
|
||||
OSClient: osClient,
|
||||
TimeClient: timeClient,
|
||||
NetworkClient: networkClient,
|
||||
},
|
||||
factory.Port(constants.OsdPort),
|
||||
factory.WithStreamInterceptor(protoProxy.StreamInterceptor()),
|
||||
factory.WithUnaryInterceptor(protoProxy.UnaryInterceptor()),
|
||||
router,
|
||||
factory.Port(constants.ApidPort),
|
||||
factory.WithDefaultLog(),
|
||||
factory.ServerOptions(
|
||||
grpc.Creds(
|
||||
credentials.NewTLS(tlsConfig),
|
||||
),
|
||||
grpc.CustomCodec(proxy.Codec()),
|
||||
grpc.UnknownServiceHandler(
|
||||
proxy.TransparentHandler(
|
||||
router.Director,
|
||||
proxy.WithStreamedDetector(router.StreamedDetector),
|
||||
)),
|
||||
),
|
||||
)
|
||||
if err != nil {
|
||||
|
||||
213
internal/app/apid/pkg/backend/apid.go
Normal file
213
internal/app/apid/pkg/backend/apid.go
Normal file
@@ -0,0 +1,213 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"github.com/talos-systems/talos/api/common"
|
||||
"github.com/talos-systems/talos/pkg/constants"
|
||||
)
|
||||
|
||||
// APID backend performs proxying to another apid instance.
|
||||
//
|
||||
// Backend authenticates itself using given grpc credentials.
|
||||
type APID struct {
|
||||
target string
|
||||
creds credentials.TransportCredentials
|
||||
|
||||
mu sync.Mutex
|
||||
conn *grpc.ClientConn
|
||||
}
|
||||
|
||||
// NewAPID creates new instance of APID backend
|
||||
func NewAPID(target string, creds credentials.TransportCredentials) (*APID, error) {
|
||||
// perform very basic validation on target
|
||||
if target == "" || strings.Contains(target, ":") {
|
||||
return nil, fmt.Errorf("invalid target %q", target)
|
||||
}
|
||||
|
||||
return &APID{
|
||||
target: target,
|
||||
creds: creds,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (a *APID) String() string {
|
||||
return a.target
|
||||
}
|
||||
|
||||
// GetConnection returns a grpc connection to the backend.
|
||||
func (a *APID) GetConnection(ctx context.Context) (context.Context, *grpc.ClientConn, error) {
|
||||
origMd, ok := metadata.FromIncomingContext(ctx)
|
||||
|
||||
md := origMd.Copy()
|
||||
delete(md, "targets")
|
||||
delete(md, ":authority")
|
||||
|
||||
if ok {
|
||||
md.Set("proxyfrom", origMd[":authority"]...)
|
||||
} else {
|
||||
md.Set("proxyfrom", "unknown")
|
||||
}
|
||||
|
||||
outCtx := metadata.NewOutgoingContext(ctx, md)
|
||||
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
|
||||
if a.conn != nil {
|
||||
return outCtx, a.conn, nil
|
||||
}
|
||||
|
||||
var err error
|
||||
a.conn, err = grpc.DialContext(
|
||||
ctx,
|
||||
fmt.Sprintf("%s:%d", a.target, constants.ApidPort),
|
||||
grpc.WithTransportCredentials(a.creds),
|
||||
grpc.WithCodec(proxy.Codec()), //nolint: staticcheck
|
||||
)
|
||||
|
||||
return outCtx, a.conn, err
|
||||
}
|
||||
|
||||
// AppendInfo is called to enhance response from the backend with additional data.
|
||||
//
|
||||
// AppendInfo enhances upstream response with node metadata (target).
|
||||
//
|
||||
// This method depends on grpc protobuf response structure, each response should
|
||||
// look like:
|
||||
//
|
||||
// message SomeReply {
|
||||
// repeated SomeResponse response = 1; // please note field ID == 1
|
||||
// }
|
||||
//
|
||||
// message SomeResponse {
|
||||
// common.ResponseMetadata metadata = 1;
|
||||
// <other fields go here ...>
|
||||
// }
|
||||
//
|
||||
// As 'SomeResponse' is repeated in 'SomeReply', if we concatenate protobuf representation
|
||||
// of several 'SomeReply' messages, we still get valid 'SomeReply' representation but with more
|
||||
// entries (feature of protobuf binary representation).
|
||||
//
|
||||
// If we look at binary representation of any 'SomeReply' message, it will always contain one
|
||||
// protobuf field with field ID 1 (see above) and type 2 (embedded message SomeResponse is encoded
|
||||
// as string with length). So if we want to add fields to 'SomeResponse', we can simply read field
|
||||
// header, adjust length for new 'SomeResponse' representation, and prepend new field header.
|
||||
//
|
||||
// At the same time, we can add 'common.ResponseMetadata' structure to 'SomeResponse' by simply
|
||||
// appending or prepending 'common.ResponseMetadata' as a single field. This requires 'metadata'
|
||||
// field to be not defined in original response. (This is due to the fact that protobuf message
|
||||
// representation is concatenation of each field representation).
|
||||
//
|
||||
// To build only single field (ResponseMetadata) we use helper message which contains exactly this
|
||||
// field with same field ID as in every other 'Response':
|
||||
//
|
||||
// message EmptyResponse {
|
||||
// common.ResponseMetadata metadata = 1;
|
||||
// }
|
||||
//
|
||||
// As streaming responses are not wrapped into 'SomeReply' with 'repeated', handling is simpler: we just
|
||||
// need to append EmptyResponse with details.
|
||||
//
|
||||
// So AppendInfo does the following: validates that reply contains field ID 1 encoded as string,
|
||||
// cuts field header, rest is representation of some 'Response'. Marshal 'EmptyResponse' as protobuf,
|
||||
// which builds 'common.ResponseMetadata' field, append it to original 'Response' message, build new header
|
||||
// for new length of some 'Response', and add back new field header.
|
||||
func (a *APID) AppendInfo(streaming bool, resp []byte) ([]byte, error) {
|
||||
payload, err := proto.Marshal(&common.EmptyResponse{
|
||||
Metadata: &common.ResponseMetadata{
|
||||
Hostname: a.target,
|
||||
},
|
||||
})
|
||||
|
||||
if streaming {
|
||||
return append(resp, payload...), err
|
||||
}
|
||||
|
||||
const (
|
||||
metadataField = 1 // field number in proto definition for repeated response
|
||||
metadataType = 2 // "string" for embedded messages
|
||||
)
|
||||
|
||||
// decode protobuf embedded header
|
||||
typ, n1 := proto.DecodeVarint(resp)
|
||||
_, n2 := proto.DecodeVarint(resp[n1:]) // length
|
||||
|
||||
if typ != (metadataField<<3)|metadataType {
|
||||
return nil, fmt.Errorf("unexpected message format: %d", typ)
|
||||
}
|
||||
|
||||
if n1+n2 > len(resp) {
|
||||
return nil, fmt.Errorf("unexpected message size: %d", len(resp))
|
||||
}
|
||||
|
||||
// cut off embedded message header
|
||||
resp = resp[n1+n2:]
|
||||
// build new embedded message header
|
||||
prefix := append(proto.EncodeVarint((metadataField<<3)|metadataType), proto.EncodeVarint(uint64(len(resp)+len(payload)))...)
|
||||
resp = append(prefix, resp...)
|
||||
|
||||
return append(resp, payload...), err
|
||||
}
|
||||
|
||||
// BuildError is called to convert error from upstream into response field.
|
||||
//
|
||||
// BuildError converts upstream error into message from upstream, so that multiple
|
||||
// successful and failure responses might be returned.
|
||||
//
|
||||
// This simply relies on the fact that any response contains 'EmptyReply' message.
|
||||
// So if 'EmptyReply' is unmarshalled into any other 'Reply' message, all the fields
|
||||
// are undefined but 'ResponseMetadata':
|
||||
//
|
||||
// message EmptyResponse {
|
||||
// common.ResponseMetadata metadata = 1;
|
||||
// }
|
||||
//
|
||||
// message EmptyReply {
|
||||
// repeated EmptyResponse response = 1;
|
||||
// }
|
||||
//
|
||||
// Streaming responses are not wrapped into EmptyReply, so we simply marshall EmptyResponse
|
||||
// message.
|
||||
func (a *APID) BuildError(streaming bool, err error) ([]byte, error) {
|
||||
var resp proto.Message = &common.EmptyResponse{
|
||||
Metadata: &common.ResponseMetadata{
|
||||
Hostname: a.target,
|
||||
Error: err.Error(),
|
||||
},
|
||||
}
|
||||
|
||||
if !streaming {
|
||||
resp = &common.EmptyReply{
|
||||
Response: []*common.EmptyResponse{
|
||||
resp.(*common.EmptyResponse),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return proto.Marshal(resp)
|
||||
}
|
||||
|
||||
// Close connection.
|
||||
func (a *APID) Close() {
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
|
||||
if a.conn != nil {
|
||||
a.conn.Close() //nolint: errcheck
|
||||
a.conn = nil
|
||||
}
|
||||
}
|
||||
55
internal/app/apid/pkg/backend/apid_factory.go
Normal file
55
internal/app/apid/pkg/backend/apid_factory.go
Normal file
@@ -0,0 +1,55 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"sync"
|
||||
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc/credentials"
|
||||
)
|
||||
|
||||
// APIDFactory caches connection to apid instances by target.
|
||||
//
|
||||
// TODO: need to clean up idle connections from time to time.
|
||||
type APIDFactory struct {
|
||||
cache sync.Map
|
||||
creds credentials.TransportCredentials
|
||||
}
|
||||
|
||||
// NewAPIDFactory creates new APIDFactory with given tls.Config.
|
||||
//
|
||||
// Client TLS config is used to connect to other apid instances.
|
||||
func NewAPIDFactory(config *tls.Config) *APIDFactory {
|
||||
return &APIDFactory{
|
||||
creds: credentials.NewTLS(config),
|
||||
}
|
||||
}
|
||||
|
||||
// Get backend by target.
|
||||
//
|
||||
// Get performs caching of backends.
|
||||
func (factory *APIDFactory) Get(target string) (proxy.Backend, error) {
|
||||
b, ok := factory.cache.Load(target)
|
||||
if ok {
|
||||
return b.(proxy.Backend), nil
|
||||
}
|
||||
|
||||
backend, err := NewAPID(target, factory.creds)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
existing, loaded := factory.cache.LoadOrStore(target, backend)
|
||||
if loaded {
|
||||
// race: another Get() call built different backend
|
||||
backend.Close()
|
||||
|
||||
return existing.(proxy.Backend), nil
|
||||
}
|
||||
|
||||
return backend, nil
|
||||
}
|
||||
74
internal/app/apid/pkg/backend/apid_factory_test.go
Normal file
74
internal/app/apid/pkg/backend/apid_factory_test.go
Normal file
@@ -0,0 +1,74 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend_test
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/backend"
|
||||
)
|
||||
|
||||
type APIDFactorySuite struct {
|
||||
suite.Suite
|
||||
|
||||
f *backend.APIDFactory
|
||||
}
|
||||
|
||||
func (suite *APIDFactorySuite) SetupSuite() {
|
||||
suite.f = backend.NewAPIDFactory(&tls.Config{})
|
||||
}
|
||||
|
||||
func (suite *APIDFactorySuite) TestGet() {
|
||||
b1, err := suite.f.Get("127.0.0.1")
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().NotNil(b1)
|
||||
|
||||
b2, err := suite.f.Get("127.0.0.1")
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().Equal(b1, b2)
|
||||
|
||||
b3, err := suite.f.Get("127.0.0.2")
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().NotEqual(b1, b3)
|
||||
|
||||
_, err = suite.f.Get("127.0.0.2:50000")
|
||||
suite.Require().Error(err)
|
||||
}
|
||||
|
||||
func (suite *APIDFactorySuite) TestGetConcurrent() {
|
||||
// for race detector
|
||||
var wg sync.WaitGroup
|
||||
|
||||
backendCh := make(chan proxy.Backend, 10)
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
wg.Add(1)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
b, _ := suite.f.Get("10.0.0.1") //nolint: errcheck
|
||||
backendCh <- b
|
||||
}()
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
close(backendCh)
|
||||
|
||||
b := <-backendCh
|
||||
|
||||
for anotherB := range backendCh {
|
||||
suite.Assert().Equal(b, anotherB)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAPIDFactorySuite(t *testing.T) {
|
||||
suite.Run(t, new(APIDFactorySuite))
|
||||
}
|
||||
162
internal/app/apid/pkg/backend/apid_test.go
Normal file
162
internal/app/apid/pkg/backend/apid_test.go
Normal file
@@ -0,0 +1,162 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc/credentials"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"github.com/talos-systems/talos/api/common"
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/backend"
|
||||
)
|
||||
|
||||
func TestAPIDInterfaces(t *testing.T) {
|
||||
assert.Implements(t, (*proxy.Backend)(nil), new(backend.APID))
|
||||
}
|
||||
|
||||
type APIDSuite struct {
|
||||
suite.Suite
|
||||
|
||||
b *backend.APID
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) SetupSuite() {
|
||||
var err error
|
||||
suite.b, err = backend.NewAPID("127.0.0.1", credentials.NewTLS(&tls.Config{}))
|
||||
suite.Require().NoError(err)
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestGetConnection() {
|
||||
md := metadata.New(nil)
|
||||
md.Set(":authority", "127.0.0.2")
|
||||
md.Set("targets", "127.0.0.1")
|
||||
md.Set("key", "value1", "value2")
|
||||
ctx := metadata.NewIncomingContext(context.Background(), md)
|
||||
|
||||
outCtx1, conn1, err1 := suite.b.GetConnection(ctx)
|
||||
suite.Require().NoError(err1)
|
||||
suite.Assert().NotNil(conn1)
|
||||
|
||||
mdOut1, ok1 := metadata.FromOutgoingContext(outCtx1)
|
||||
suite.Require().True(ok1)
|
||||
suite.Assert().Equal([]string{"value1", "value2"}, mdOut1.Get("key"))
|
||||
suite.Assert().Equal([]string{"127.0.0.2"}, mdOut1.Get("proxyfrom"))
|
||||
|
||||
outCtx2, conn2, err2 := suite.b.GetConnection(ctx)
|
||||
suite.Require().NoError(err2)
|
||||
suite.Assert().Equal(conn1, conn2) // connection is cached
|
||||
|
||||
mdOut2, ok2 := metadata.FromOutgoingContext(outCtx2)
|
||||
suite.Require().True(ok2)
|
||||
suite.Assert().Equal([]string{"value1", "value2"}, mdOut2.Get("key"))
|
||||
suite.Assert().Equal([]string{"127.0.0.2"}, mdOut2.Get("proxyfrom"))
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestAppendInfoUnary() {
|
||||
reply := &common.DataReply{
|
||||
Response: []*common.DataResponse{
|
||||
{
|
||||
Bytes: []byte("foobar"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
resp, err := proto.Marshal(reply)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
newResp, err := suite.b.AppendInfo(false, resp)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
var newReply common.DataReply
|
||||
err = proto.Unmarshal(newResp, &newReply)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Assert().EqualValues([]byte("foobar"), newReply.Response[0].Bytes)
|
||||
suite.Assert().Equal(suite.b.String(), newReply.Response[0].Metadata.Hostname)
|
||||
suite.Assert().Empty(newReply.Response[0].Metadata.Error)
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestAppendInfoStreaming() {
|
||||
response := &common.DataResponse{
|
||||
Bytes: []byte("foobar"),
|
||||
}
|
||||
|
||||
resp, err := proto.Marshal(response)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
newResp, err := suite.b.AppendInfo(true, resp)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
var newResponse common.DataResponse
|
||||
err = proto.Unmarshal(newResp, &newResponse)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Assert().EqualValues([]byte("foobar"), newResponse.Bytes)
|
||||
suite.Assert().Equal(suite.b.String(), newResponse.Metadata.Hostname)
|
||||
suite.Assert().Empty(newResponse.Metadata.Error)
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestAppendInfoStreamingMetadata() {
|
||||
// this tests the case when metadata field is appended twice
|
||||
// to the message, but protobuf merges definitions
|
||||
response := &common.DataResponse{
|
||||
Metadata: &common.ResponseMetadata{
|
||||
Error: "something went wrong",
|
||||
},
|
||||
}
|
||||
|
||||
resp, err := proto.Marshal(response)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
newResp, err := suite.b.AppendInfo(true, resp)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
var newResponse common.DataResponse
|
||||
err = proto.Unmarshal(newResp, &newResponse)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Assert().Nil(newResponse.Bytes)
|
||||
suite.Assert().Equal(suite.b.String(), newResponse.Metadata.Hostname)
|
||||
suite.Assert().Equal("something went wrong", newResponse.Metadata.Error)
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestBuildErrorUnary() {
|
||||
resp, err := suite.b.BuildError(false, errors.New("some error"))
|
||||
suite.Require().NoError(err)
|
||||
|
||||
var reply common.DataReply
|
||||
err = proto.Unmarshal(resp, &reply)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Assert().Nil(reply.Response[0].Bytes)
|
||||
suite.Assert().Equal(suite.b.String(), reply.Response[0].Metadata.Hostname)
|
||||
suite.Assert().Equal("some error", reply.Response[0].Metadata.Error)
|
||||
}
|
||||
|
||||
func (suite *APIDSuite) TestBuildErrorStreaming() {
|
||||
resp, err := suite.b.BuildError(true, errors.New("some error"))
|
||||
suite.Require().NoError(err)
|
||||
|
||||
var response common.DataResponse
|
||||
err = proto.Unmarshal(resp, &response)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.Assert().Nil(response.Bytes)
|
||||
suite.Assert().Equal(suite.b.String(), response.Metadata.Hostname)
|
||||
suite.Assert().Equal("some error", response.Metadata.Error)
|
||||
}
|
||||
|
||||
func TestAPIDSuite(t *testing.T) {
|
||||
suite.Run(t, new(APIDSuite))
|
||||
}
|
||||
6
internal/app/apid/pkg/backend/backend.go
Normal file
6
internal/app/apid/pkg/backend/backend.go
Normal file
@@ -0,0 +1,6 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
// Package backend implements backends satisfying proxy.Backend interface
|
||||
package backend
|
||||
72
internal/app/apid/pkg/backend/local.go
Normal file
72
internal/app/apid/pkg/backend/local.go
Normal file
@@ -0,0 +1,72 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/metadata"
|
||||
)
|
||||
|
||||
// Local implements local backend (proxying one2one to local service)
|
||||
type Local struct {
|
||||
name string
|
||||
socketPath string
|
||||
|
||||
mu sync.Mutex
|
||||
conn *grpc.ClientConn
|
||||
}
|
||||
|
||||
// NewLocal builds new Local backend
|
||||
func NewLocal(name, socketPath string) *Local {
|
||||
return &Local{
|
||||
name: name,
|
||||
socketPath: socketPath,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Local) String() string {
|
||||
return l.name
|
||||
}
|
||||
|
||||
// GetConnection returns a grpc connection to the backend.
|
||||
func (l *Local) GetConnection(ctx context.Context) (context.Context, *grpc.ClientConn, error) {
|
||||
l.mu.Lock()
|
||||
defer l.mu.Unlock()
|
||||
|
||||
// copy metadata
|
||||
outCtx := ctx
|
||||
if md, ok := metadata.FromIncomingContext(ctx); ok {
|
||||
outCtx = metadata.NewOutgoingContext(ctx, md)
|
||||
}
|
||||
|
||||
if l.conn != nil {
|
||||
return outCtx, l.conn, nil
|
||||
}
|
||||
|
||||
var err error
|
||||
l.conn, err = grpc.DialContext(
|
||||
ctx,
|
||||
"unix:"+l.socketPath,
|
||||
grpc.WithInsecure(),
|
||||
grpc.WithCodec(proxy.Codec()), //nolint: staticcheck
|
||||
|
||||
)
|
||||
|
||||
return outCtx, l.conn, err
|
||||
}
|
||||
|
||||
// AppendInfo is called to enhance response from the backend with additional data.
|
||||
func (l *Local) AppendInfo(streaming bool, resp []byte) ([]byte, error) {
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// BuildError is called to convert error from upstream into response field.
|
||||
func (l *Local) BuildError(streaming bool, err error) ([]byte, error) {
|
||||
return nil, nil
|
||||
}
|
||||
44
internal/app/apid/pkg/backend/local_test.go
Normal file
44
internal/app/apid/pkg/backend/local_test.go
Normal file
@@ -0,0 +1,44 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package backend_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/backend"
|
||||
)
|
||||
|
||||
func TestLocalInterfaces(t *testing.T) {
|
||||
assert.Implements(t, (*proxy.Backend)(nil), new(backend.Local))
|
||||
}
|
||||
|
||||
func TestLocalGetConnection(t *testing.T) {
|
||||
l := backend.NewLocal("test", "/tmp/test.sock")
|
||||
|
||||
md := metadata.New(nil)
|
||||
md.Set("key", "value1", "value2")
|
||||
ctx := metadata.NewIncomingContext(context.Background(), md)
|
||||
|
||||
outCtx1, conn1, err1 := l.GetConnection(ctx)
|
||||
assert.NoError(t, err1)
|
||||
assert.NotNil(t, conn1)
|
||||
|
||||
mdOut1, ok1 := metadata.FromOutgoingContext(outCtx1)
|
||||
assert.True(t, ok1)
|
||||
assert.Equal(t, []string{"value1", "value2"}, mdOut1.Get("key"))
|
||||
|
||||
outCtx2, conn2, err2 := l.GetConnection(ctx)
|
||||
assert.NoError(t, err2)
|
||||
assert.Equal(t, conn1, conn2) // connection is cached
|
||||
|
||||
mdOut2, ok2 := metadata.FromOutgoingContext(outCtx2)
|
||||
assert.True(t, ok2)
|
||||
assert.Equal(t, []string{"value1", "value2"}, mdOut2.Get("key"))
|
||||
}
|
||||
122
internal/app/apid/pkg/director/director.go
Normal file
122
internal/app/apid/pkg/director/director.go
Normal file
@@ -0,0 +1,122 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
// Package director provides proxy call routing facility
|
||||
package director
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/metadata"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
// Router wraps grpc-proxy StreamDirector
|
||||
type Router struct {
|
||||
localBackends map[string]proxy.Backend
|
||||
remoteBackendFactory RemoteBackendFactory
|
||||
streamedMatchers []*regexp.Regexp
|
||||
}
|
||||
|
||||
// RemoteBackendFactory provides backend generation by address (target)
|
||||
type RemoteBackendFactory func(target string) (proxy.Backend, error)
|
||||
|
||||
// NewRouter builds new Router
|
||||
func NewRouter(backendFactory RemoteBackendFactory) *Router {
|
||||
return &Router{
|
||||
localBackends: map[string]proxy.Backend{},
|
||||
remoteBackendFactory: backendFactory,
|
||||
}
|
||||
}
|
||||
|
||||
// Register is no-op to implement factory.Registrator interface.
|
||||
//
|
||||
// Actual proxy handler is installed via grpc.UnknownServiceHandler option.
|
||||
func (r *Router) Register(srv *grpc.Server) {
|
||||
}
|
||||
|
||||
// Director implements proxy.StreamDirector function
|
||||
func (r *Router) Director(ctx context.Context, fullMethodName string) (proxy.Mode, []proxy.Backend, error) {
|
||||
md, ok := metadata.FromIncomingContext(ctx)
|
||||
if !ok {
|
||||
return r.localDirector(fullMethodName)
|
||||
}
|
||||
|
||||
if _, exists := md["proxyfrom"]; exists {
|
||||
return r.localDirector(fullMethodName)
|
||||
}
|
||||
|
||||
var targets []string
|
||||
|
||||
if targets, ok = md["targets"]; !ok {
|
||||
// send directly to local node, skips another layer of proxying
|
||||
return r.localDirector(fullMethodName)
|
||||
}
|
||||
|
||||
return r.aggregateDirector(targets)
|
||||
}
|
||||
|
||||
// localDirector sends requests down to local service in one2one mode.
|
||||
//
|
||||
// Local backends are registered via RegisterLocalBackend
|
||||
func (r *Router) localDirector(fullMethodName string) (proxy.Mode, []proxy.Backend, error) {
|
||||
parts := strings.SplitN(fullMethodName, "/", 3)
|
||||
serviceName := parts[1]
|
||||
|
||||
if backend, ok := r.localBackends[serviceName]; ok {
|
||||
return proxy.One2One, []proxy.Backend{backend}, nil
|
||||
}
|
||||
|
||||
return proxy.One2One, nil, status.Errorf(codes.Unknown, "service %v is not defined", serviceName)
|
||||
}
|
||||
|
||||
// aggregateDirector sends request across set of remote instances and aggregates results.
|
||||
func (r *Router) aggregateDirector(targets []string) (proxy.Mode, []proxy.Backend, error) {
|
||||
var err error
|
||||
|
||||
backends := make([]proxy.Backend, len(targets))
|
||||
|
||||
for i, target := range targets {
|
||||
backends[i], err = r.remoteBackendFactory(target)
|
||||
if err != nil {
|
||||
return proxy.One2Many, nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return proxy.One2Many, backends, nil
|
||||
}
|
||||
|
||||
// RegisterLocalBackend registers local backend by service name.
|
||||
func (r *Router) RegisterLocalBackend(serviceName string, backend proxy.Backend) {
|
||||
if _, exists := r.localBackends[serviceName]; exists {
|
||||
panic(fmt.Sprintf("local backend %v already registered", serviceName))
|
||||
}
|
||||
|
||||
r.localBackends[serviceName] = backend
|
||||
}
|
||||
|
||||
// StreamedDetector implements proxy.StreamedDetector.
|
||||
func (r *Router) StreamedDetector(fullMethodName string) bool {
|
||||
for _, re := range r.streamedMatchers {
|
||||
if re.MatchString(fullMethodName) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// RegisterStreamedRegex register regex for streamed method.
|
||||
//
|
||||
// This could be exact literal match: /^\/serviceName\/methodName$/ or any
|
||||
// suffix/prefix match.
|
||||
func (r *Router) RegisterStreamedRegex(regex string) {
|
||||
r.streamedMatchers = append(r.streamedMatchers, regexp.MustCompile(regex))
|
||||
}
|
||||
105
internal/app/apid/pkg/director/director_test.go
Normal file
105
internal/app/apid/pkg/director/director_test.go
Normal file
@@ -0,0 +1,105 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package director_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"github.com/talos-systems/talos/internal/app/apid/pkg/director"
|
||||
)
|
||||
|
||||
type DirectorSuite struct {
|
||||
suite.Suite
|
||||
|
||||
router *director.Router
|
||||
}
|
||||
|
||||
func (suite *DirectorSuite) SetupSuite() {
|
||||
suite.router = director.NewRouter(mockBackendFactory)
|
||||
}
|
||||
|
||||
func (suite *DirectorSuite) TestRegisterLocalBackend() {
|
||||
suite.router.RegisterLocalBackend("a.A", &mockBackend{})
|
||||
suite.router.RegisterLocalBackend("b.B", &mockBackend{})
|
||||
|
||||
suite.Require().Panics(func() { suite.router.RegisterLocalBackend("a.A", &mockBackend{}) })
|
||||
}
|
||||
|
||||
func (suite *DirectorSuite) TestStreamedDetector() {
|
||||
suite.Assert().False(suite.router.StreamedDetector("/service.Service/someMethod"))
|
||||
|
||||
suite.router.RegisterStreamedRegex("^" + regexp.QuoteMeta("/service.Service/someMethod") + "$")
|
||||
|
||||
suite.Assert().True(suite.router.StreamedDetector("/service.Service/someMethod"))
|
||||
suite.Assert().False(suite.router.StreamedDetector("/service.Service/someMethod2"))
|
||||
suite.Assert().False(suite.router.StreamedDetector("/servicexService/someMethod"))
|
||||
|
||||
suite.router.RegisterStreamedRegex("Stream$")
|
||||
|
||||
suite.Assert().True(suite.router.StreamedDetector("/service.Service/getStream"))
|
||||
suite.Assert().False(suite.router.StreamedDetector("/service.Service/getStreamItem"))
|
||||
}
|
||||
|
||||
func (suite *DirectorSuite) TestDirectorLocal() {
|
||||
ctx := context.Background()
|
||||
|
||||
mode, backends, err := suite.router.Director(ctx, "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2One, mode)
|
||||
suite.Assert().Nil(backends)
|
||||
suite.Assert().EqualError(err, "rpc error: code = Unknown desc = service service.Service is not defined")
|
||||
|
||||
suite.router.RegisterLocalBackend("service.Service", &mockBackend{target: "local"})
|
||||
|
||||
mode, backends, err = suite.router.Director(ctx, "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2One, mode)
|
||||
suite.Assert().Len(backends, 1)
|
||||
suite.Assert().Equal("local", backends[0].(*mockBackend).target)
|
||||
suite.Assert().NoError(err)
|
||||
|
||||
ctxProxyFrom := metadata.NewIncomingContext(ctx, metadata.Pairs("proxyfrom", "127.0.0.1"))
|
||||
mode, backends, err = suite.router.Director(ctxProxyFrom, "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2One, mode)
|
||||
suite.Assert().Len(backends, 1)
|
||||
suite.Assert().Equal("local", backends[0].(*mockBackend).target)
|
||||
suite.Assert().NoError(err)
|
||||
|
||||
ctxNoTargets := metadata.NewIncomingContext(ctx, metadata.Pairs(":authority", "127.0.0.1"))
|
||||
mode, backends, err = suite.router.Director(ctxNoTargets, "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2One, mode)
|
||||
suite.Assert().Len(backends, 1)
|
||||
suite.Assert().Equal("local", backends[0].(*mockBackend).target)
|
||||
suite.Assert().NoError(err)
|
||||
}
|
||||
|
||||
func (suite *DirectorSuite) TestDirectorAggregate() {
|
||||
ctx := context.Background()
|
||||
|
||||
md := metadata.New(nil)
|
||||
md.Set("targets", "127.0.0.1", "127.0.0.2")
|
||||
mode, backends, err := suite.router.Director(metadata.NewIncomingContext(ctx, md), "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2Many, mode)
|
||||
suite.Assert().Len(backends, 2)
|
||||
suite.Assert().Equal("127.0.0.1", backends[0].(*mockBackend).target)
|
||||
suite.Assert().Equal("127.0.0.2", backends[1].(*mockBackend).target)
|
||||
suite.Assert().NoError(err)
|
||||
|
||||
md = metadata.New(nil)
|
||||
md.Set("targets", "127.0.0.1")
|
||||
mode, backends, err = suite.router.Director(metadata.NewIncomingContext(ctx, md), "/service.Service/method")
|
||||
suite.Assert().Equal(proxy.One2Many, mode)
|
||||
suite.Assert().Len(backends, 1)
|
||||
suite.Assert().Equal("127.0.0.1", backends[0].(*mockBackend).target)
|
||||
suite.Assert().NoError(err)
|
||||
}
|
||||
|
||||
func TestDirectorSuite(t *testing.T) {
|
||||
suite.Run(t, new(DirectorSuite))
|
||||
}
|
||||
36
internal/app/apid/pkg/director/mocks_test.go
Normal file
36
internal/app/apid/pkg/director/mocks_test.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
package director_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/talos-systems/grpc-proxy/proxy"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
type mockBackend struct {
|
||||
target string
|
||||
}
|
||||
|
||||
func (m *mockBackend) String() string {
|
||||
return m.target
|
||||
}
|
||||
|
||||
func (m *mockBackend) GetConnection(ctx context.Context) (context.Context, *grpc.ClientConn, error) {
|
||||
return ctx, nil, nil
|
||||
}
|
||||
|
||||
func (m *mockBackend) AppendInfo(streaming bool, resp []byte) ([]byte, error) {
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (m *mockBackend) BuildError(streaming bool, err error) ([]byte, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func mockBackendFactory(target string) (proxy.Backend, error) {
|
||||
return &mockBackend{target: target}, nil
|
||||
}
|
||||
@@ -259,7 +259,7 @@ func (r *Registrator) CopyOut(req *machineapi.CopyOutRequest, s machineapi.Machi
|
||||
chunkCh := chunker.Read(ctx)
|
||||
|
||||
for data := range chunkCh {
|
||||
err := s.SendMsg(&machineapi.StreamingData{Bytes: data})
|
||||
err := s.SendMsg(&common.DataResponse{Bytes: data})
|
||||
if err != nil {
|
||||
ctxCancel()
|
||||
}
|
||||
@@ -267,7 +267,11 @@ func (r *Registrator) CopyOut(req *machineapi.CopyOutRequest, s machineapi.Machi
|
||||
|
||||
archiveErr := <-errCh
|
||||
if archiveErr != nil {
|
||||
return s.SendMsg(&machineapi.StreamingData{Errors: archiveErr.Error()})
|
||||
return s.SendMsg(&common.DataResponse{
|
||||
Metadata: &common.ResponseMetadata{
|
||||
Error: archiveErr.Error(),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -460,7 +464,7 @@ func (r *Registrator) Logs(req *machineapi.LogsRequest, l machineapi.Machine_Log
|
||||
}
|
||||
|
||||
for data := range chunk.Read(l.Context()) {
|
||||
if err = l.Send(&common.Data{Bytes: data}); err != nil {
|
||||
if err = l.Send(&common.DataResponse{Bytes: data}); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -531,7 +535,7 @@ func (r *Registrator) Read(in *machineapi.ReadRequest, srv machineapi.Machine_Re
|
||||
chunkCh := chunker.Read(ctx)
|
||||
|
||||
for data := range chunkCh {
|
||||
err := srv.SendMsg(&machineapi.StreamingData{Bytes: data})
|
||||
err := srv.SendMsg(&common.DataResponse{Bytes: data})
|
||||
if err != nil {
|
||||
cancel()
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ func (o *APID) Runner(config runtime.Configurator) (runner.Runner, error) {
|
||||
func (o *APID) HealthFunc(runtime.Configurator) health.Check {
|
||||
return func(ctx context.Context) error {
|
||||
var d net.Dialer
|
||||
conn, err := d.DialContext(ctx, "tcp", fmt.Sprintf("%s:%d", "127.0.0.1", constants.OsdPort))
|
||||
conn, err := d.DialContext(ctx, "tcp", fmt.Sprintf("%s:%d", "127.0.0.1", constants.ApidPort))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ func (r *Registrator) Dmesg(ctx context.Context, in *empty.Empty) (data *common.
|
||||
data = &common.DataReply{
|
||||
Response: []*common.DataResponse{
|
||||
{
|
||||
Bytes: &common.Data{Bytes: buf[:n]},
|
||||
Bytes: buf[:n],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ func (apiSuite *APISuite) SetupSuite() {
|
||||
target = apiSuite.Target
|
||||
}
|
||||
|
||||
apiSuite.Client, err = client.NewClient(creds, target, constants.OsdPort)
|
||||
apiSuite.Client, err = client.NewClient(creds, target, constants.ApidPort)
|
||||
apiSuite.Require().NoError(err)
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ func NewClient(endpoint string, connectionTimeout time.Duration) (*Client, error
|
||||
grpc.WithInsecure(),
|
||||
grpc.WithBlock(),
|
||||
grpc.FailOnNonTempDialError(false),
|
||||
grpc.WithBackoffMaxDelay(3*time.Second),
|
||||
grpc.WithBackoffMaxDelay(3*time.Second), //nolint: staticcheck
|
||||
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize)))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error connecting to CRI: %w", err)
|
||||
|
||||
@@ -179,8 +179,8 @@ const (
|
||||
// EncryptionConfigRootfsPath is the path to the EncryptionConfig relative to rootfs.
|
||||
EncryptionConfigRootfsPath = "/etc/kubernetes/encryptionconfig.yaml"
|
||||
|
||||
// OsdPort is the port for the osd service.
|
||||
OsdPort = 50000
|
||||
// ApidPort is the port for the apid service.
|
||||
ApidPort = 50000
|
||||
|
||||
// TrustdPort is the port for the trustd service.
|
||||
TrustdPort = 50001
|
||||
|
||||
Reference in New Issue
Block a user