From cbe538e3bce2903c59d17f9abfb1bf850e992922 Mon Sep 17 00:00:00 2001 From: Joseph Gu Date: Mon, 13 Dec 2021 15:38:38 +0800 Subject: [PATCH] implement imageList (#513) --- cluster/calcium/image.go | 53 ++ cluster/cluster.go | 1 + cluster/mocks/Cluster.go | 25 +- engine/virt/image.go | 17 +- go.mod | 2 +- go.sum | 4 +- rpc/errors.go | 2 + rpc/gen/core.pb.go | 1591 ++++++++++++++++++++++---------------- rpc/gen/core.proto | 844 ++++++++++---------- rpc/gen/core_grpc.pb.go | 79 +- rpc/rpc.go | 19 + rpc/transform.go | 33 + types/message.go | 13 + types/options.go | 1 + 14 files changed, 1583 insertions(+), 1101 deletions(-) diff --git a/cluster/calcium/image.go b/cluster/calcium/image.go index 74840a622..fc5574529 100644 --- a/cluster/calcium/image.go +++ b/cluster/calcium/image.go @@ -129,3 +129,56 @@ func (c *Calcium) CacheImage(ctx context.Context, opts *types.ImageOptions) (cha return ch, nil } + +// ListImage list Image on a pod or some nodes. +func (c *Calcium) ListImage(ctx context.Context, opts *types.ImageOptions) (chan *types.ListImageMessage, error) { + logger := log.WithField("Calcium", "ListImage").WithField("opts", opts) + opts.Normalize() + + nodes, err := c.filterNodes(ctx, types.NodeFilter{Podname: opts.Podname, Includes: opts.Nodenames}) + if err != nil { + return nil, logger.Err(ctx, err) + } + + if len(nodes) == 0 { + return nil, logger.Err(ctx, errors.WithStack(types.ErrPodNoNodes)) + } + + ch := make(chan *types.ListImageMessage) + + utils.SentryGo(func() { + defer close(ch) + wg := sync.WaitGroup{} + defer wg.Wait() + for i, node := range nodes { + wg.Add(1) + utils.SentryGo(func(node *types.Node) func() { + return func() { + defer wg.Done() + msg := &types.ListImageMessage{ + Images: []*types.Image{}, + Nodename: node.Name, + Error: nil, + } + if images, err := node.Engine.ImageList(ctx, opts.Filter); err != nil { + msg.Error = logger.Err(ctx, err) + } else { + for _, image := range images { + msg.Images = append(msg.Images, &types.Image{ + ID: image.ID, + Tags: image.Tags, + }) + } + } + ch <- msg + } + }(node)) + if (i+1)%opts.Step == 0 { + log.Info("[ListImage] Wait for image listed") + wg.Wait() + } + } + }) + + return ch, nil +} diff --git a/cluster/cluster.go b/cluster/cluster.go index 7de1c0bc8..7b788f5d3 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -77,6 +77,7 @@ type Cluster interface { BuildImage(ctx context.Context, opts *types.BuildOptions) (chan *types.BuildImageMessage, error) CacheImage(ctx context.Context, opts *types.ImageOptions) (chan *types.CacheImageMessage, error) RemoveImage(ctx context.Context, opts *types.ImageOptions) (chan *types.RemoveImageMessage, error) + ListImage(ctx context.Context, opts *types.ImageOptions) (chan *types.ListImageMessage, error) // workload methods CreateWorkload(ctx context.Context, opts *types.DeployOptions) (chan *types.CreateWorkloadMessage, error) ReplaceWorkload(ctx context.Context, opts *types.ReplaceOptions) (chan *types.ReplaceWorkloadMessage, error) diff --git a/cluster/mocks/Cluster.go b/cluster/mocks/Cluster.go index 0a444201b..22520361f 100644 --- a/cluster/mocks/Cluster.go +++ b/cluster/mocks/Cluster.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.8.0. DO NOT EDIT. +// Code generated by mockery 2.9.4. DO NOT EDIT. package mocks @@ -433,6 +433,29 @@ func (_m *Cluster) GetWorkloadsStatus(ctx context.Context, ids []string) ([]*typ return r0, r1 } +// ListImage provides a mock function with given fields: ctx, opts +func (_m *Cluster) ListImage(ctx context.Context, opts *types.ImageOptions) (chan *types.ListImageMessage, error) { + ret := _m.Called(ctx, opts) + + var r0 chan *types.ListImageMessage + if rf, ok := ret.Get(0).(func(context.Context, *types.ImageOptions) chan *types.ListImageMessage); ok { + r0 = rf(ctx, opts) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(chan *types.ListImageMessage) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *types.ImageOptions) error); ok { + r1 = rf(ctx, opts) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // ListNetworks provides a mock function with given fields: ctx, podname, driver func (_m *Cluster) ListNetworks(ctx context.Context, podname string, driver string) ([]*enginetypes.Network, error) { ret := _m.Called(ctx, podname, driver) diff --git a/engine/virt/image.go b/engine/virt/image.go index 75d197861..4baaf25b1 100644 --- a/engine/virt/image.go +++ b/engine/virt/image.go @@ -14,8 +14,21 @@ import ( ) // ImageList lists images. -func (v *Virt) ImageList(ctx context.Context, image string) (imgs []*enginetypes.Image, err error) { - log.Warnf(ctx, "ImageList does not implement") +func (v *Virt) ImageList(ctx context.Context, imageName string) (imgs []*enginetypes.Image, err error) { + images, err := v.client.ListImage(ctx, imageName) + if err != nil { + return nil, err + } + + imgs = []*enginetypes.Image{} + + for _, image := range images { + imgs = append(imgs, &enginetypes.Image{ + ID: image.Id, + Tags: []string{image.Name}, + }) + } + return } diff --git a/go.mod b/go.mod index 4d75ca4ff..9677278a1 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/opencontainers/runc v1.0.0-rc95 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 - github.com/projecteru2/libyavirt v0.0.0-20211202092239-8539e8218458 + github.com/projecteru2/libyavirt v0.0.0-20211213024339-7490368380c0 github.com/prometheus/client_golang v1.11.0 github.com/sanity-io/litter v1.5.1 github.com/sirupsen/logrus v1.7.0 diff --git a/go.sum b/go.sum index 7dc0b921c..98b21ebe4 100644 --- a/go.sum +++ b/go.sum @@ -430,8 +430,8 @@ github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/projecteru2/libyavirt v0.0.0-20211202092239-8539e8218458 h1:/vzYKTEuiRyb2izwt/ZiafWsrcBHCLDbqbJBkHWUKOQ= -github.com/projecteru2/libyavirt v0.0.0-20211202092239-8539e8218458/go.mod h1:FOc+hWBMLsMrmx5p3/moizKeSomedZPNwB6LhS+kEnE= +github.com/projecteru2/libyavirt v0.0.0-20211213024339-7490368380c0 h1:Fzx/e/V/GoLdiiqBEhH/srG9003oOBBOgqWsRdWkv6Y= +github.com/projecteru2/libyavirt v0.0.0-20211213024339-7490368380c0/go.mod h1:FOc+hWBMLsMrmx5p3/moizKeSomedZPNwB6LhS+kEnE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= diff --git a/rpc/errors.go b/rpc/errors.go index 78c770e31..23b1f38a3 100644 --- a/rpc/errors.go +++ b/rpc/errors.go @@ -87,4 +87,6 @@ const ( LogStream codes.Code = 10711 // RunAndWait . RunAndWait codes.Code = 10712 + // ListImage . + ListImage codes.Code = 10713 ) diff --git a/rpc/gen/core.pb.go b/rpc/gen/core.pb.go index dd459cbcf..9733f3d32 100644 --- a/rpc/gen/core.pb.go +++ b/rpc/gen/core.pb.go @@ -4432,6 +4432,69 @@ func (x *RemoveImageOptions) GetPrune() bool { return false } +type ListImageOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Podname string `protobuf:"bytes,1,opt,name=podname,proto3" json:"podname,omitempty"` + Nodenames []string `protobuf:"bytes,2,rep,name=nodenames,proto3" json:"nodenames,omitempty"` + Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListImageOptions) Reset() { + *x = ListImageOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_gen_core_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListImageOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListImageOptions) ProtoMessage() {} + +func (x *ListImageOptions) ProtoReflect() protoreflect.Message { + mi := &file_rpc_gen_core_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListImageOptions.ProtoReflect.Descriptor instead. +func (*ListImageOptions) Descriptor() ([]byte, []int) { + return file_rpc_gen_core_proto_rawDescGZIP(), []int{55} +} + +func (x *ListImageOptions) GetPodname() string { + if x != nil { + return x.Podname + } + return "" +} + +func (x *ListImageOptions) GetNodenames() []string { + if x != nil { + return x.Nodenames + } + return nil +} + +func (x *ListImageOptions) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + type CopyPaths struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4443,7 +4506,7 @@ type CopyPaths struct { func (x *CopyPaths) Reset() { *x = CopyPaths{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[55] + mi := &file_rpc_gen_core_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4456,7 +4519,7 @@ func (x *CopyPaths) String() string { func (*CopyPaths) ProtoMessage() {} func (x *CopyPaths) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[55] + mi := &file_rpc_gen_core_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4469,7 +4532,7 @@ func (x *CopyPaths) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyPaths.ProtoReflect.Descriptor instead. func (*CopyPaths) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{55} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{56} } func (x *CopyPaths) GetPaths() []string { @@ -4490,7 +4553,7 @@ type CopyOptions struct { func (x *CopyOptions) Reset() { *x = CopyOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[56] + mi := &file_rpc_gen_core_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4503,7 +4566,7 @@ func (x *CopyOptions) String() string { func (*CopyOptions) ProtoMessage() {} func (x *CopyOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[56] + mi := &file_rpc_gen_core_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4516,7 +4579,7 @@ func (x *CopyOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyOptions.ProtoReflect.Descriptor instead. func (*CopyOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{56} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{57} } func (x *CopyOptions) GetTargets() map[string]*CopyPaths { @@ -4538,7 +4601,7 @@ type FileOwner struct { func (x *FileOwner) Reset() { *x = FileOwner{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[57] + mi := &file_rpc_gen_core_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4551,7 +4614,7 @@ func (x *FileOwner) String() string { func (*FileOwner) ProtoMessage() {} func (x *FileOwner) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[57] + mi := &file_rpc_gen_core_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4564,7 +4627,7 @@ func (x *FileOwner) ProtoReflect() protoreflect.Message { // Deprecated: Use FileOwner.ProtoReflect.Descriptor instead. func (*FileOwner) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{57} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{58} } func (x *FileOwner) GetUid() int32 { @@ -4592,7 +4655,7 @@ type FileMode struct { func (x *FileMode) Reset() { *x = FileMode{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[58] + mi := &file_rpc_gen_core_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4605,7 +4668,7 @@ func (x *FileMode) String() string { func (*FileMode) ProtoMessage() {} func (x *FileMode) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[58] + mi := &file_rpc_gen_core_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4618,7 +4681,7 @@ func (x *FileMode) ProtoReflect() protoreflect.Message { // Deprecated: Use FileMode.ProtoReflect.Descriptor instead. func (*FileMode) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{58} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{59} } func (x *FileMode) GetMode() int64 { @@ -4642,7 +4705,7 @@ type SendOptions struct { func (x *SendOptions) Reset() { *x = SendOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[59] + mi := &file_rpc_gen_core_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4655,7 +4718,7 @@ func (x *SendOptions) String() string { func (*SendOptions) ProtoMessage() {} func (x *SendOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[59] + mi := &file_rpc_gen_core_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4668,7 +4731,7 @@ func (x *SendOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use SendOptions.ProtoReflect.Descriptor instead. func (*SendOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{59} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{60} } func (x *SendOptions) GetIds() []string { @@ -4711,7 +4774,7 @@ type ErrorDetail struct { func (x *ErrorDetail) Reset() { *x = ErrorDetail{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[60] + mi := &file_rpc_gen_core_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4724,7 +4787,7 @@ func (x *ErrorDetail) String() string { func (*ErrorDetail) ProtoMessage() {} func (x *ErrorDetail) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[60] + mi := &file_rpc_gen_core_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4737,7 +4800,7 @@ func (x *ErrorDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ErrorDetail.ProtoReflect.Descriptor instead. func (*ErrorDetail) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{60} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{61} } func (x *ErrorDetail) GetCode() int64 { @@ -4770,7 +4833,7 @@ type BuildImageMessage struct { func (x *BuildImageMessage) Reset() { *x = BuildImageMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[61] + mi := &file_rpc_gen_core_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4783,7 +4846,7 @@ func (x *BuildImageMessage) String() string { func (*BuildImageMessage) ProtoMessage() {} func (x *BuildImageMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[61] + mi := &file_rpc_gen_core_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4796,7 +4859,7 @@ func (x *BuildImageMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildImageMessage.ProtoReflect.Descriptor instead. func (*BuildImageMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{61} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{62} } func (x *BuildImageMessage) GetId() string { @@ -4860,7 +4923,7 @@ type CreateWorkloadMessage struct { func (x *CreateWorkloadMessage) Reset() { *x = CreateWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[62] + mi := &file_rpc_gen_core_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4873,7 +4936,7 @@ func (x *CreateWorkloadMessage) String() string { func (*CreateWorkloadMessage) ProtoMessage() {} func (x *CreateWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[62] + mi := &file_rpc_gen_core_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4886,7 +4949,7 @@ func (x *CreateWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWorkloadMessage.ProtoReflect.Descriptor instead. func (*CreateWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{62} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{63} } func (x *CreateWorkloadMessage) GetPodname() string { @@ -4965,7 +5028,7 @@ type ReplaceWorkloadMessage struct { func (x *ReplaceWorkloadMessage) Reset() { *x = ReplaceWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[63] + mi := &file_rpc_gen_core_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4978,7 +5041,7 @@ func (x *ReplaceWorkloadMessage) String() string { func (*ReplaceWorkloadMessage) ProtoMessage() {} func (x *ReplaceWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[63] + mi := &file_rpc_gen_core_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4991,7 +5054,7 @@ func (x *ReplaceWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaceWorkloadMessage.ProtoReflect.Descriptor instead. func (*ReplaceWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{63} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{64} } func (x *ReplaceWorkloadMessage) GetCreate() *CreateWorkloadMessage { @@ -5029,7 +5092,7 @@ type CacheImageMessage struct { func (x *CacheImageMessage) Reset() { *x = CacheImageMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[64] + mi := &file_rpc_gen_core_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5042,7 +5105,7 @@ func (x *CacheImageMessage) String() string { func (*CacheImageMessage) ProtoMessage() {} func (x *CacheImageMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[64] + mi := &file_rpc_gen_core_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5055,7 +5118,7 @@ func (x *CacheImageMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheImageMessage.ProtoReflect.Descriptor instead. func (*CacheImageMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{64} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{65} } func (x *CacheImageMessage) GetImage() string { @@ -5099,7 +5162,7 @@ type RemoveImageMessage struct { func (x *RemoveImageMessage) Reset() { *x = RemoveImageMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[65] + mi := &file_rpc_gen_core_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5112,7 +5175,7 @@ func (x *RemoveImageMessage) String() string { func (*RemoveImageMessage) ProtoMessage() {} func (x *RemoveImageMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[65] + mi := &file_rpc_gen_core_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5125,7 +5188,7 @@ func (x *RemoveImageMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveImageMessage.ProtoReflect.Descriptor instead. func (*RemoveImageMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{65} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{66} } func (x *RemoveImageMessage) GetImage() string { @@ -5149,6 +5212,124 @@ func (x *RemoveImageMessage) GetMessages() []string { return nil } +type ImageItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Tags []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"` +} + +func (x *ImageItem) Reset() { + *x = ImageItem{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_gen_core_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageItem) ProtoMessage() {} + +func (x *ImageItem) ProtoReflect() protoreflect.Message { + mi := &file_rpc_gen_core_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImageItem.ProtoReflect.Descriptor instead. +func (*ImageItem) Descriptor() ([]byte, []int) { + return file_rpc_gen_core_proto_rawDescGZIP(), []int{67} +} + +func (x *ImageItem) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ImageItem) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +type ListImageMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Images []*ImageItem `protobuf:"bytes,1,rep,name=images,proto3" json:"images,omitempty"` + Nodename string `protobuf:"bytes,2,opt,name=nodename,proto3" json:"nodename,omitempty"` + Err string `protobuf:"bytes,3,opt,name=err,proto3" json:"err,omitempty"` +} + +func (x *ListImageMessage) Reset() { + *x = ListImageMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_gen_core_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListImageMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListImageMessage) ProtoMessage() {} + +func (x *ListImageMessage) ProtoReflect() protoreflect.Message { + mi := &file_rpc_gen_core_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListImageMessage.ProtoReflect.Descriptor instead. +func (*ListImageMessage) Descriptor() ([]byte, []int) { + return file_rpc_gen_core_proto_rawDescGZIP(), []int{68} +} + +func (x *ListImageMessage) GetImages() []*ImageItem { + if x != nil { + return x.Images + } + return nil +} + +func (x *ListImageMessage) GetNodename() string { + if x != nil { + return x.Nodename + } + return "" +} + +func (x *ListImageMessage) GetErr() string { + if x != nil { + return x.Err + } + return "" +} + type RemoveWorkloadMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5162,7 +5343,7 @@ type RemoveWorkloadMessage struct { func (x *RemoveWorkloadMessage) Reset() { *x = RemoveWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[66] + mi := &file_rpc_gen_core_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5175,7 +5356,7 @@ func (x *RemoveWorkloadMessage) String() string { func (*RemoveWorkloadMessage) ProtoMessage() {} func (x *RemoveWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[66] + mi := &file_rpc_gen_core_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5188,7 +5369,7 @@ func (x *RemoveWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveWorkloadMessage.ProtoReflect.Descriptor instead. func (*RemoveWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{66} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{69} } func (x *RemoveWorkloadMessage) GetId() string { @@ -5224,7 +5405,7 @@ type DissociateWorkloadMessage struct { func (x *DissociateWorkloadMessage) Reset() { *x = DissociateWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[67] + mi := &file_rpc_gen_core_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5237,7 +5418,7 @@ func (x *DissociateWorkloadMessage) String() string { func (*DissociateWorkloadMessage) ProtoMessage() {} func (x *DissociateWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[67] + mi := &file_rpc_gen_core_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5250,7 +5431,7 @@ func (x *DissociateWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DissociateWorkloadMessage.ProtoReflect.Descriptor instead. func (*DissociateWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{67} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{70} } func (x *DissociateWorkloadMessage) GetId() string { @@ -5278,7 +5459,7 @@ type ReallocResourceMessage struct { func (x *ReallocResourceMessage) Reset() { *x = ReallocResourceMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[68] + mi := &file_rpc_gen_core_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5291,7 +5472,7 @@ func (x *ReallocResourceMessage) String() string { func (*ReallocResourceMessage) ProtoMessage() {} func (x *ReallocResourceMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[68] + mi := &file_rpc_gen_core_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5304,7 +5485,7 @@ func (x *ReallocResourceMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ReallocResourceMessage.ProtoReflect.Descriptor instead. func (*ReallocResourceMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{68} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{71} } func (x *ReallocResourceMessage) GetError() string { @@ -5329,7 +5510,7 @@ type CopyMessage struct { func (x *CopyMessage) Reset() { *x = CopyMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[69] + mi := &file_rpc_gen_core_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5342,7 +5523,7 @@ func (x *CopyMessage) String() string { func (*CopyMessage) ProtoMessage() {} func (x *CopyMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[69] + mi := &file_rpc_gen_core_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5355,7 +5536,7 @@ func (x *CopyMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMessage.ProtoReflect.Descriptor instead. func (*CopyMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{69} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{72} } func (x *CopyMessage) GetId() string { @@ -5406,7 +5587,7 @@ type SendMessage struct { func (x *SendMessage) Reset() { *x = SendMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[70] + mi := &file_rpc_gen_core_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5419,7 +5600,7 @@ func (x *SendMessage) String() string { func (*SendMessage) ProtoMessage() {} func (x *SendMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[70] + mi := &file_rpc_gen_core_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5432,7 +5613,7 @@ func (x *SendMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SendMessage.ProtoReflect.Descriptor instead. func (*SendMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{70} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{73} } func (x *SendMessage) GetId() string { @@ -5469,7 +5650,7 @@ type AttachWorkloadMessage struct { func (x *AttachWorkloadMessage) Reset() { *x = AttachWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[71] + mi := &file_rpc_gen_core_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5482,7 +5663,7 @@ func (x *AttachWorkloadMessage) String() string { func (*AttachWorkloadMessage) ProtoMessage() {} func (x *AttachWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[71] + mi := &file_rpc_gen_core_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5495,7 +5676,7 @@ func (x *AttachWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AttachWorkloadMessage.ProtoReflect.Descriptor instead. func (*AttachWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{71} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{74} } func (x *AttachWorkloadMessage) GetWorkloadId() string { @@ -5533,7 +5714,7 @@ type RunAndWaitOptions struct { func (x *RunAndWaitOptions) Reset() { *x = RunAndWaitOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[72] + mi := &file_rpc_gen_core_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5546,7 +5727,7 @@ func (x *RunAndWaitOptions) String() string { func (*RunAndWaitOptions) ProtoMessage() {} func (x *RunAndWaitOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[72] + mi := &file_rpc_gen_core_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5559,7 +5740,7 @@ func (x *RunAndWaitOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use RunAndWaitOptions.ProtoReflect.Descriptor instead. func (*RunAndWaitOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{72} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{75} } func (x *RunAndWaitOptions) GetDeployOptions() *DeployOptions { @@ -5603,7 +5784,7 @@ type ControlWorkloadOptions struct { func (x *ControlWorkloadOptions) Reset() { *x = ControlWorkloadOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[73] + mi := &file_rpc_gen_core_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5616,7 +5797,7 @@ func (x *ControlWorkloadOptions) String() string { func (*ControlWorkloadOptions) ProtoMessage() {} func (x *ControlWorkloadOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[73] + mi := &file_rpc_gen_core_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5629,7 +5810,7 @@ func (x *ControlWorkloadOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlWorkloadOptions.ProtoReflect.Descriptor instead. func (*ControlWorkloadOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{73} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{76} } func (x *ControlWorkloadOptions) GetIds() []string { @@ -5666,7 +5847,7 @@ type ControlWorkloadMessage struct { func (x *ControlWorkloadMessage) Reset() { *x = ControlWorkloadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[74] + mi := &file_rpc_gen_core_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5679,7 +5860,7 @@ func (x *ControlWorkloadMessage) String() string { func (*ControlWorkloadMessage) ProtoMessage() {} func (x *ControlWorkloadMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[74] + mi := &file_rpc_gen_core_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5692,7 +5873,7 @@ func (x *ControlWorkloadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlWorkloadMessage.ProtoReflect.Descriptor instead. func (*ControlWorkloadMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{74} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{77} } func (x *ControlWorkloadMessage) GetId() string { @@ -5731,7 +5912,7 @@ type LogStreamOptions struct { func (x *LogStreamOptions) Reset() { *x = LogStreamOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[75] + mi := &file_rpc_gen_core_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5744,7 +5925,7 @@ func (x *LogStreamOptions) String() string { func (*LogStreamOptions) ProtoMessage() {} func (x *LogStreamOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[75] + mi := &file_rpc_gen_core_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5757,7 +5938,7 @@ func (x *LogStreamOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use LogStreamOptions.ProtoReflect.Descriptor instead. func (*LogStreamOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{75} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{78} } func (x *LogStreamOptions) GetId() string { @@ -5809,7 +5990,7 @@ type LogStreamMessage struct { func (x *LogStreamMessage) Reset() { *x = LogStreamMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[76] + mi := &file_rpc_gen_core_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5822,7 +6003,7 @@ func (x *LogStreamMessage) String() string { func (*LogStreamMessage) ProtoMessage() {} func (x *LogStreamMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[76] + mi := &file_rpc_gen_core_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5835,7 +6016,7 @@ func (x *LogStreamMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use LogStreamMessage.ProtoReflect.Descriptor instead. func (*LogStreamMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{76} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{79} } func (x *LogStreamMessage) GetId() string { @@ -5882,7 +6063,7 @@ type ExecuteWorkloadOptions struct { func (x *ExecuteWorkloadOptions) Reset() { *x = ExecuteWorkloadOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[77] + mi := &file_rpc_gen_core_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5895,7 +6076,7 @@ func (x *ExecuteWorkloadOptions) String() string { func (*ExecuteWorkloadOptions) ProtoMessage() {} func (x *ExecuteWorkloadOptions) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[77] + mi := &file_rpc_gen_core_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5908,7 +6089,7 @@ func (x *ExecuteWorkloadOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteWorkloadOptions.ProtoReflect.Descriptor instead. func (*ExecuteWorkloadOptions) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{77} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{80} } func (x *ExecuteWorkloadOptions) GetWorkloadId() string { @@ -5965,7 +6146,7 @@ type CapacityMessage struct { func (x *CapacityMessage) Reset() { *x = CapacityMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_gen_core_proto_msgTypes[78] + mi := &file_rpc_gen_core_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5978,7 +6159,7 @@ func (x *CapacityMessage) String() string { func (*CapacityMessage) ProtoMessage() {} func (x *CapacityMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_gen_core_proto_msgTypes[78] + mi := &file_rpc_gen_core_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5991,7 +6172,7 @@ func (x *CapacityMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use CapacityMessage.ProtoReflect.Descriptor instead. func (*CapacityMessage) Descriptor() ([]byte, []int) { - return file_rpc_gen_core_proto_rawDescGZIP(), []int{78} + return file_rpc_gen_core_proto_rawDescGZIP(), []int{81} } func (x *CapacityMessage) GetTotal() int64 { @@ -6800,366 +6981,386 @@ var file_rpc_gen_core_proto_rawDesc = []byte{ 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x22, 0x21, 0x0a, 0x09, 0x43, - 0x6f, 0x70, 0x79, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x90, - 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, - 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, - 0x79, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x2f, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x67, - 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x22, 0x80, 0x03, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, - 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a, 0x0b, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x22, 0x62, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x64, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, + 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, + 0x21, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, + 0x68, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x49, 0x0a, 0x0c, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x32, 0x0a, 0x0c, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xdd, - 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x40, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x1a, 0x3a, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, - 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x06, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, - 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x79, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, + 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x50, 0x61, 0x74, 0x68, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x80, 0x03, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x37, + 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x48, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x23, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x0b, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x32, + 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x22, 0xdd, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x6f, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x28, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3a, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, + 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x79, 0x0a, 0x11, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x60, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, - 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, - 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x60, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x22, 0x55, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, + 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x67, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x72, 0x72, + 0x22, 0x55, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x41, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2e, 0x0a, 0x16, 0x52, 0x65, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6f, 0x0a, 0x0b, 0x43, 0x6f, + 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x53, + 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9a, + 0x01, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, + 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x63, 0x6d, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, + 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x22, 0x52, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x41, 0x0a, 0x19, 0x44, 0x69, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x7a, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x69, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x69, + 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, + 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x22, 0x87, 0x01, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2e, 0x0a, 0x16, - 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6f, 0x0a, 0x0b, - 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, - 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, - 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x0d, 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x9a, 0x01, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x63, - 0x6d, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x73, 0x79, 0x6e, - 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x54, 0x0a, - 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x22, 0x52, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x7a, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, - 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x6c, - 0x6c, 0x6f, 0x77, 0x22, 0x87, 0x01, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, - 0x73, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbd, 0x01, - 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x6f, 0x72, - 0x6b, 0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, - 0x64, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x64, 0x69, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x64, - 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x43, 0x6d, 0x64, 0x22, 0xbc, 0x01, - 0x0a, 0x0f, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x50, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x43, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4e, 0x6f, 0x64, - 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x27, 0x0a, 0x06, - 0x54, 0x72, 0x69, 0x4f, 0x70, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, - 0x4c, 0x53, 0x45, 0x10, 0x02, 0x2a, 0x52, 0x0a, 0x0d, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x12, - 0x0a, 0x0e, 0x54, 0x59, 0x50, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x44, - 0x10, 0x06, 0x12, 0x15, 0x0a, 0x08, 0x45, 0x52, 0x55, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0x90, 0x13, 0x0a, 0x07, 0x43, 0x6f, - 0x72, 0x65, 0x52, 0x50, 0x43, 0x12, 0x21, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x09, 0x2e, - 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, - 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, - 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x36, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x12, 0x11, - 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, - 0x6f, 0x64, 0x22, 0x00, 0x12, 0x21, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, - 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x08, 0x2e, 0x70, 0x62, - 0x2e, 0x50, 0x6f, 0x64, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, - 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x12, - 0x29, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, - 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, - 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0a, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, 0x2e, 0x70, - 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x00, 0x12, - 0x29, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, - 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x07, 0x53, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x09, 0x2e, 0x70, 0x62, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x11, 0x43, 0x61, - 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x22, 0x00, 0x30, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0d, - 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, - 0x3c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, - 0x12, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x14, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x39, 0x0a, 0x0f, 0x73, 0x74, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x73, 0x74, + 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x16, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, + 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x64, 0x69, 0x6e, + 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x43, 0x6d, 0x64, 0x22, 0xbc, 0x01, 0x0a, 0x0f, + 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x50, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x61, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x27, 0x0a, 0x06, 0x54, 0x72, + 0x69, 0x4f, 0x70, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53, + 0x45, 0x10, 0x02, 0x2a, 0x52, 0x0a, 0x0d, 0x53, 0x74, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x4f, 0x55, 0x54, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, + 0x54, 0x59, 0x50, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x44, 0x10, 0x06, + 0x12, 0x15, 0x0a, 0x08, 0x45, 0x52, 0x55, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0xcd, 0x13, 0x0a, 0x07, 0x43, 0x6f, 0x72, 0x65, + 0x52, 0x50, 0x43, 0x12, 0x21, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x09, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, 0x12, 0x36, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x16, + 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, + 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, + 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x06, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x07, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6f, 0x64, + 0x22, 0x00, 0x12, 0x21, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x09, + 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x50, + 0x6f, 0x64, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, + 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, + 0x07, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x64, + 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, + 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, 0x2e, + 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x00, 0x12, 0x29, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, + 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x09, + 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x43, 0x6f, 0x70, 0x79, 0x12, - 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, - 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, - 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x0f, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e, - 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, - 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, 0x0a, - 0x12, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x11, 0x43, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x11, 0x2e, + 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x44, 0x73, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0d, 0x2e, 0x70, + 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x00, 0x12, 0x3c, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x44, 0x73, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x12, 0x53, + 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, + 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x0f, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, + 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x2c, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x0f, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x41, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, - 0x28, 0x01, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x4c, 0x6f, 0x67, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x14, 0x2e, 0x70, - 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x44, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, - 0x57, 0x61, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, - 0x57, 0x61, 0x69, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, - 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x28, 0x5a, 0x26, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x65, 0x72, 0x75, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, - 0x67, 0x65, 0x6e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1d, + 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1d, 0x2e, + 0x70, 0x62, 0x2e, 0x44, 0x69, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x4d, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x4e, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, + 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, + 0x43, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x44, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x12, + 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x6e, 0x64, 0x57, 0x61, 0x69, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x72, 0x75, + 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7175,7 +7376,7 @@ func file_rpc_gen_core_proto_rawDescGZIP() []byte { } var file_rpc_gen_core_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_rpc_gen_core_proto_msgTypes = make([]protoimpl.MessageInfo, 130) +var file_rpc_gen_core_proto_msgTypes = make([]protoimpl.MessageInfo, 133) var file_rpc_gen_core_proto_goTypes = []interface{}{ (TriOpt)(0), // 0: pb.TriOpt (StdStreamType)(0), // 1: pb.StdStreamType @@ -7236,262 +7437,268 @@ var file_rpc_gen_core_proto_goTypes = []interface{}{ (*ReplaceOptions)(nil), // 56: pb.ReplaceOptions (*CacheImageOptions)(nil), // 57: pb.CacheImageOptions (*RemoveImageOptions)(nil), // 58: pb.RemoveImageOptions - (*CopyPaths)(nil), // 59: pb.CopyPaths - (*CopyOptions)(nil), // 60: pb.CopyOptions - (*FileOwner)(nil), // 61: pb.FileOwner - (*FileMode)(nil), // 62: pb.FileMode - (*SendOptions)(nil), // 63: pb.SendOptions - (*ErrorDetail)(nil), // 64: pb.ErrorDetail - (*BuildImageMessage)(nil), // 65: pb.BuildImageMessage - (*CreateWorkloadMessage)(nil), // 66: pb.CreateWorkloadMessage - (*ReplaceWorkloadMessage)(nil), // 67: pb.ReplaceWorkloadMessage - (*CacheImageMessage)(nil), // 68: pb.CacheImageMessage - (*RemoveImageMessage)(nil), // 69: pb.RemoveImageMessage - (*RemoveWorkloadMessage)(nil), // 70: pb.RemoveWorkloadMessage - (*DissociateWorkloadMessage)(nil), // 71: pb.DissociateWorkloadMessage - (*ReallocResourceMessage)(nil), // 72: pb.ReallocResourceMessage - (*CopyMessage)(nil), // 73: pb.CopyMessage - (*SendMessage)(nil), // 74: pb.SendMessage - (*AttachWorkloadMessage)(nil), // 75: pb.AttachWorkloadMessage - (*RunAndWaitOptions)(nil), // 76: pb.RunAndWaitOptions - (*ControlWorkloadOptions)(nil), // 77: pb.ControlWorkloadOptions - (*ControlWorkloadMessage)(nil), // 78: pb.ControlWorkloadMessage - (*LogStreamOptions)(nil), // 79: pb.LogStreamOptions - (*LogStreamMessage)(nil), // 80: pb.LogStreamMessage - (*ExecuteWorkloadOptions)(nil), // 81: pb.ExecuteWorkloadOptions - (*CapacityMessage)(nil), // 82: pb.CapacityMessage - nil, // 83: pb.ListWorkloadsOptions.LabelsEntry - nil, // 84: pb.Node.CpuEntry - nil, // 85: pb.Node.LabelsEntry - nil, // 86: pb.Node.InitCpuEntry - nil, // 87: pb.Node.NumaEntry - nil, // 88: pb.Node.NumaMemoryEntry - nil, // 89: pb.Node.InitVolumeEntry - nil, // 90: pb.Node.VolumeEntry - nil, // 91: pb.Node.InitNumaMemoryEntry - nil, // 92: pb.SetNodeOptions.DeltaCpuEntry - nil, // 93: pb.SetNodeOptions.DeltaNumaMemoryEntry - nil, // 94: pb.SetNodeOptions.NumaEntry - nil, // 95: pb.SetNodeOptions.LabelsEntry - nil, // 96: pb.SetNodeOptions.DeltaVolumeEntry - nil, // 97: pb.NodeFilter.LabelsEntry - nil, // 98: pb.Workload.LabelsEntry - nil, // 99: pb.Workload.PublishEntry - nil, // 100: pb.WorkloadStatus.NetworksEntry - nil, // 101: pb.WorkloadStatusStreamOptions.LabelsEntry - nil, // 102: pb.AddNodeOptions.LabelsEntry - nil, // 103: pb.AddNodeOptions.NumaEntry - nil, // 104: pb.AddNodeOptions.NumaMemoryEntry - nil, // 105: pb.AddNodeOptions.VolumeMapEntry - nil, // 106: pb.GetNodeOptions.LabelsEntry - nil, // 107: pb.ListNodesOptions.LabelsEntry - nil, // 108: pb.Build.EnvsEntry - nil, // 109: pb.Build.ArgsEntry - nil, // 110: pb.Build.LabelsEntry - nil, // 111: pb.Build.ArtifactsEntry - nil, // 112: pb.Build.CacheEntry - nil, // 113: pb.Builds.BuildsEntry - nil, // 114: pb.LogOptions.ConfigEntry - nil, // 115: pb.EntrypointOptions.SysctlsEntry - nil, // 116: pb.Resource.CpuEntry - nil, // 117: pb.Resource.VolumePlanLimitEntry - nil, // 118: pb.Resource.VolumePlanRequestEntry - nil, // 119: pb.Volume.VolumeEntry - nil, // 120: pb.DeployOptions.NetworksEntry - nil, // 121: pb.DeployOptions.LabelsEntry - nil, // 122: pb.DeployOptions.NodelabelsEntry - nil, // 123: pb.DeployOptions.DataEntry - nil, // 124: pb.DeployOptions.ModesEntry - nil, // 125: pb.DeployOptions.OwnersEntry - nil, // 126: pb.ReplaceOptions.FilterLabelsEntry - nil, // 127: pb.ReplaceOptions.CopyEntry - nil, // 128: pb.CopyOptions.TargetsEntry - nil, // 129: pb.SendOptions.DataEntry - nil, // 130: pb.SendOptions.ModesEntry - nil, // 131: pb.SendOptions.OwnersEntry - nil, // 132: pb.CreateWorkloadMessage.PublishEntry - nil, // 133: pb.CapacityMessage.NodeCapacitiesEntry + (*ListImageOptions)(nil), // 59: pb.ListImageOptions + (*CopyPaths)(nil), // 60: pb.CopyPaths + (*CopyOptions)(nil), // 61: pb.CopyOptions + (*FileOwner)(nil), // 62: pb.FileOwner + (*FileMode)(nil), // 63: pb.FileMode + (*SendOptions)(nil), // 64: pb.SendOptions + (*ErrorDetail)(nil), // 65: pb.ErrorDetail + (*BuildImageMessage)(nil), // 66: pb.BuildImageMessage + (*CreateWorkloadMessage)(nil), // 67: pb.CreateWorkloadMessage + (*ReplaceWorkloadMessage)(nil), // 68: pb.ReplaceWorkloadMessage + (*CacheImageMessage)(nil), // 69: pb.CacheImageMessage + (*RemoveImageMessage)(nil), // 70: pb.RemoveImageMessage + (*ImageItem)(nil), // 71: pb.ImageItem + (*ListImageMessage)(nil), // 72: pb.ListImageMessage + (*RemoveWorkloadMessage)(nil), // 73: pb.RemoveWorkloadMessage + (*DissociateWorkloadMessage)(nil), // 74: pb.DissociateWorkloadMessage + (*ReallocResourceMessage)(nil), // 75: pb.ReallocResourceMessage + (*CopyMessage)(nil), // 76: pb.CopyMessage + (*SendMessage)(nil), // 77: pb.SendMessage + (*AttachWorkloadMessage)(nil), // 78: pb.AttachWorkloadMessage + (*RunAndWaitOptions)(nil), // 79: pb.RunAndWaitOptions + (*ControlWorkloadOptions)(nil), // 80: pb.ControlWorkloadOptions + (*ControlWorkloadMessage)(nil), // 81: pb.ControlWorkloadMessage + (*LogStreamOptions)(nil), // 82: pb.LogStreamOptions + (*LogStreamMessage)(nil), // 83: pb.LogStreamMessage + (*ExecuteWorkloadOptions)(nil), // 84: pb.ExecuteWorkloadOptions + (*CapacityMessage)(nil), // 85: pb.CapacityMessage + nil, // 86: pb.ListWorkloadsOptions.LabelsEntry + nil, // 87: pb.Node.CpuEntry + nil, // 88: pb.Node.LabelsEntry + nil, // 89: pb.Node.InitCpuEntry + nil, // 90: pb.Node.NumaEntry + nil, // 91: pb.Node.NumaMemoryEntry + nil, // 92: pb.Node.InitVolumeEntry + nil, // 93: pb.Node.VolumeEntry + nil, // 94: pb.Node.InitNumaMemoryEntry + nil, // 95: pb.SetNodeOptions.DeltaCpuEntry + nil, // 96: pb.SetNodeOptions.DeltaNumaMemoryEntry + nil, // 97: pb.SetNodeOptions.NumaEntry + nil, // 98: pb.SetNodeOptions.LabelsEntry + nil, // 99: pb.SetNodeOptions.DeltaVolumeEntry + nil, // 100: pb.NodeFilter.LabelsEntry + nil, // 101: pb.Workload.LabelsEntry + nil, // 102: pb.Workload.PublishEntry + nil, // 103: pb.WorkloadStatus.NetworksEntry + nil, // 104: pb.WorkloadStatusStreamOptions.LabelsEntry + nil, // 105: pb.AddNodeOptions.LabelsEntry + nil, // 106: pb.AddNodeOptions.NumaEntry + nil, // 107: pb.AddNodeOptions.NumaMemoryEntry + nil, // 108: pb.AddNodeOptions.VolumeMapEntry + nil, // 109: pb.GetNodeOptions.LabelsEntry + nil, // 110: pb.ListNodesOptions.LabelsEntry + nil, // 111: pb.Build.EnvsEntry + nil, // 112: pb.Build.ArgsEntry + nil, // 113: pb.Build.LabelsEntry + nil, // 114: pb.Build.ArtifactsEntry + nil, // 115: pb.Build.CacheEntry + nil, // 116: pb.Builds.BuildsEntry + nil, // 117: pb.LogOptions.ConfigEntry + nil, // 118: pb.EntrypointOptions.SysctlsEntry + nil, // 119: pb.Resource.CpuEntry + nil, // 120: pb.Resource.VolumePlanLimitEntry + nil, // 121: pb.Resource.VolumePlanRequestEntry + nil, // 122: pb.Volume.VolumeEntry + nil, // 123: pb.DeployOptions.NetworksEntry + nil, // 124: pb.DeployOptions.LabelsEntry + nil, // 125: pb.DeployOptions.NodelabelsEntry + nil, // 126: pb.DeployOptions.DataEntry + nil, // 127: pb.DeployOptions.ModesEntry + nil, // 128: pb.DeployOptions.OwnersEntry + nil, // 129: pb.ReplaceOptions.FilterLabelsEntry + nil, // 130: pb.ReplaceOptions.CopyEntry + nil, // 131: pb.CopyOptions.TargetsEntry + nil, // 132: pb.SendOptions.DataEntry + nil, // 133: pb.SendOptions.ModesEntry + nil, // 134: pb.SendOptions.OwnersEntry + nil, // 135: pb.CreateWorkloadMessage.PublishEntry + nil, // 136: pb.CapacityMessage.NodeCapacitiesEntry } var file_rpc_gen_core_proto_depIdxs = []int32{ - 83, // 0: pb.ListWorkloadsOptions.labels:type_name -> pb.ListWorkloadsOptions.LabelsEntry + 86, // 0: pb.ListWorkloadsOptions.labels:type_name -> pb.ListWorkloadsOptions.LabelsEntry 8, // 1: pb.Pods.pods:type_name -> pb.Pod 11, // 2: pb.PodResource.nodes_resource:type_name -> pb.NodeResource 15, // 3: pb.Networks.networks:type_name -> pb.Network - 84, // 4: pb.Node.cpu:type_name -> pb.Node.CpuEntry - 85, // 5: pb.Node.labels:type_name -> pb.Node.LabelsEntry - 86, // 6: pb.Node.init_cpu:type_name -> pb.Node.InitCpuEntry - 87, // 7: pb.Node.numa:type_name -> pb.Node.NumaEntry - 88, // 8: pb.Node.numa_memory:type_name -> pb.Node.NumaMemoryEntry - 89, // 9: pb.Node.init_volume:type_name -> pb.Node.InitVolumeEntry - 90, // 10: pb.Node.volume:type_name -> pb.Node.VolumeEntry - 91, // 11: pb.Node.init_numa_memory:type_name -> pb.Node.InitNumaMemoryEntry + 87, // 4: pb.Node.cpu:type_name -> pb.Node.CpuEntry + 88, // 5: pb.Node.labels:type_name -> pb.Node.LabelsEntry + 89, // 6: pb.Node.init_cpu:type_name -> pb.Node.InitCpuEntry + 90, // 7: pb.Node.numa:type_name -> pb.Node.NumaEntry + 91, // 8: pb.Node.numa_memory:type_name -> pb.Node.NumaMemoryEntry + 92, // 9: pb.Node.init_volume:type_name -> pb.Node.InitVolumeEntry + 93, // 10: pb.Node.volume:type_name -> pb.Node.VolumeEntry + 94, // 11: pb.Node.init_numa_memory:type_name -> pb.Node.InitNumaMemoryEntry 17, // 12: pb.Nodes.nodes:type_name -> pb.Node 0, // 13: pb.SetNodeOptions.status_opt:type_name -> pb.TriOpt - 92, // 14: pb.SetNodeOptions.delta_cpu:type_name -> pb.SetNodeOptions.DeltaCpuEntry - 93, // 15: pb.SetNodeOptions.delta_numa_memory:type_name -> pb.SetNodeOptions.DeltaNumaMemoryEntry - 94, // 16: pb.SetNodeOptions.numa:type_name -> pb.SetNodeOptions.NumaEntry - 95, // 17: pb.SetNodeOptions.labels:type_name -> pb.SetNodeOptions.LabelsEntry - 96, // 18: pb.SetNodeOptions.delta_volume:type_name -> pb.SetNodeOptions.DeltaVolumeEntry + 95, // 14: pb.SetNodeOptions.delta_cpu:type_name -> pb.SetNodeOptions.DeltaCpuEntry + 96, // 15: pb.SetNodeOptions.delta_numa_memory:type_name -> pb.SetNodeOptions.DeltaNumaMemoryEntry + 97, // 16: pb.SetNodeOptions.numa:type_name -> pb.SetNodeOptions.NumaEntry + 98, // 17: pb.SetNodeOptions.labels:type_name -> pb.SetNodeOptions.LabelsEntry + 99, // 18: pb.SetNodeOptions.delta_volume:type_name -> pb.SetNodeOptions.DeltaVolumeEntry 0, // 19: pb.SetNodeOptions.bypass_opt:type_name -> pb.TriOpt - 97, // 20: pb.NodeFilter.labels:type_name -> pb.NodeFilter.LabelsEntry - 98, // 21: pb.Workload.labels:type_name -> pb.Workload.LabelsEntry - 99, // 22: pb.Workload.publish:type_name -> pb.Workload.PublishEntry + 100, // 20: pb.NodeFilter.labels:type_name -> pb.NodeFilter.LabelsEntry + 101, // 21: pb.Workload.labels:type_name -> pb.Workload.LabelsEntry + 102, // 22: pb.Workload.publish:type_name -> pb.Workload.PublishEntry 26, // 23: pb.Workload.status:type_name -> pb.WorkloadStatus 53, // 24: pb.Workload.resource:type_name -> pb.Resource - 100, // 25: pb.WorkloadStatus.networks:type_name -> pb.WorkloadStatus.NetworksEntry + 103, // 25: pb.WorkloadStatus.networks:type_name -> pb.WorkloadStatus.NetworksEntry 26, // 26: pb.WorkloadsStatus.status:type_name -> pb.WorkloadStatus 26, // 27: pb.SetWorkloadsStatusOptions.status:type_name -> pb.WorkloadStatus - 101, // 28: pb.WorkloadStatusStreamOptions.labels:type_name -> pb.WorkloadStatusStreamOptions.LabelsEntry + 104, // 28: pb.WorkloadStatusStreamOptions.labels:type_name -> pb.WorkloadStatusStreamOptions.LabelsEntry 25, // 29: pb.WorkloadStatusStreamMessage.workload:type_name -> pb.Workload 26, // 30: pb.WorkloadStatusStreamMessage.status:type_name -> pb.WorkloadStatus 25, // 31: pb.Workloads.workloads:type_name -> pb.Workload 0, // 32: pb.ReallocOptions.bind_cpu_opt:type_name -> pb.TriOpt 52, // 33: pb.ReallocOptions.resource_opts:type_name -> pb.ResourceOptions - 102, // 34: pb.AddNodeOptions.labels:type_name -> pb.AddNodeOptions.LabelsEntry - 103, // 35: pb.AddNodeOptions.numa:type_name -> pb.AddNodeOptions.NumaEntry - 104, // 36: pb.AddNodeOptions.numa_memory:type_name -> pb.AddNodeOptions.NumaMemoryEntry - 105, // 37: pb.AddNodeOptions.volume_map:type_name -> pb.AddNodeOptions.VolumeMapEntry - 106, // 38: pb.GetNodeOptions.labels:type_name -> pb.GetNodeOptions.LabelsEntry + 105, // 34: pb.AddNodeOptions.labels:type_name -> pb.AddNodeOptions.LabelsEntry + 106, // 35: pb.AddNodeOptions.numa:type_name -> pb.AddNodeOptions.NumaEntry + 107, // 36: pb.AddNodeOptions.numa_memory:type_name -> pb.AddNodeOptions.NumaMemoryEntry + 108, // 37: pb.AddNodeOptions.volume_map:type_name -> pb.AddNodeOptions.VolumeMapEntry + 109, // 38: pb.GetNodeOptions.labels:type_name -> pb.GetNodeOptions.LabelsEntry 42, // 39: pb.GetNodeResourceOptions.opts:type_name -> pb.GetNodeOptions - 107, // 40: pb.ListNodesOptions.labels:type_name -> pb.ListNodesOptions.LabelsEntry - 108, // 41: pb.Build.envs:type_name -> pb.Build.EnvsEntry - 109, // 42: pb.Build.args:type_name -> pb.Build.ArgsEntry - 110, // 43: pb.Build.labels:type_name -> pb.Build.LabelsEntry - 111, // 44: pb.Build.artifacts:type_name -> pb.Build.ArtifactsEntry - 112, // 45: pb.Build.cache:type_name -> pb.Build.CacheEntry - 113, // 46: pb.Builds.builds:type_name -> pb.Builds.BuildsEntry + 110, // 40: pb.ListNodesOptions.labels:type_name -> pb.ListNodesOptions.LabelsEntry + 111, // 41: pb.Build.envs:type_name -> pb.Build.EnvsEntry + 112, // 42: pb.Build.args:type_name -> pb.Build.ArgsEntry + 113, // 43: pb.Build.labels:type_name -> pb.Build.LabelsEntry + 114, // 44: pb.Build.artifacts:type_name -> pb.Build.ArtifactsEntry + 115, // 45: pb.Build.cache:type_name -> pb.Build.CacheEntry + 116, // 46: pb.Builds.builds:type_name -> pb.Builds.BuildsEntry 46, // 47: pb.BuildImageOptions.builds:type_name -> pb.Builds 2, // 48: pb.BuildImageOptions.build_method:type_name -> pb.BuildImageOptions.BuildMethod - 114, // 49: pb.LogOptions.config:type_name -> pb.LogOptions.ConfigEntry + 117, // 49: pb.LogOptions.config:type_name -> pb.LogOptions.ConfigEntry 50, // 50: pb.EntrypointOptions.log:type_name -> pb.LogOptions 49, // 51: pb.EntrypointOptions.healthcheck:type_name -> pb.HealthCheckOptions 48, // 52: pb.EntrypointOptions.hook:type_name -> pb.HookOptions - 115, // 53: pb.EntrypointOptions.sysctls:type_name -> pb.EntrypointOptions.SysctlsEntry - 116, // 54: pb.Resource.cpu:type_name -> pb.Resource.CpuEntry - 117, // 55: pb.Resource.volume_plan_limit:type_name -> pb.Resource.VolumePlanLimitEntry - 118, // 56: pb.Resource.volume_plan_request:type_name -> pb.Resource.VolumePlanRequestEntry - 119, // 57: pb.Volume.volume:type_name -> pb.Volume.VolumeEntry + 118, // 53: pb.EntrypointOptions.sysctls:type_name -> pb.EntrypointOptions.SysctlsEntry + 119, // 54: pb.Resource.cpu:type_name -> pb.Resource.CpuEntry + 120, // 55: pb.Resource.volume_plan_limit:type_name -> pb.Resource.VolumePlanLimitEntry + 121, // 56: pb.Resource.volume_plan_request:type_name -> pb.Resource.VolumePlanRequestEntry + 122, // 57: pb.Volume.volume:type_name -> pb.Volume.VolumeEntry 51, // 58: pb.DeployOptions.entrypoint:type_name -> pb.EntrypointOptions - 120, // 59: pb.DeployOptions.networks:type_name -> pb.DeployOptions.NetworksEntry - 121, // 60: pb.DeployOptions.labels:type_name -> pb.DeployOptions.LabelsEntry - 122, // 61: pb.DeployOptions.nodelabels:type_name -> pb.DeployOptions.NodelabelsEntry + 123, // 59: pb.DeployOptions.networks:type_name -> pb.DeployOptions.NetworksEntry + 124, // 60: pb.DeployOptions.labels:type_name -> pb.DeployOptions.LabelsEntry + 125, // 61: pb.DeployOptions.nodelabels:type_name -> pb.DeployOptions.NodelabelsEntry 3, // 62: pb.DeployOptions.deploy_strategy:type_name -> pb.DeployOptions.Strategy - 123, // 63: pb.DeployOptions.data:type_name -> pb.DeployOptions.DataEntry + 126, // 63: pb.DeployOptions.data:type_name -> pb.DeployOptions.DataEntry 52, // 64: pb.DeployOptions.resource_opts:type_name -> pb.ResourceOptions 24, // 65: pb.DeployOptions.node_filter:type_name -> pb.NodeFilter - 124, // 66: pb.DeployOptions.modes:type_name -> pb.DeployOptions.ModesEntry - 125, // 67: pb.DeployOptions.owners:type_name -> pb.DeployOptions.OwnersEntry + 127, // 66: pb.DeployOptions.modes:type_name -> pb.DeployOptions.ModesEntry + 128, // 67: pb.DeployOptions.owners:type_name -> pb.DeployOptions.OwnersEntry 55, // 68: pb.ReplaceOptions.deployOpt:type_name -> pb.DeployOptions - 126, // 69: pb.ReplaceOptions.filter_labels:type_name -> pb.ReplaceOptions.FilterLabelsEntry - 127, // 70: pb.ReplaceOptions.copy:type_name -> pb.ReplaceOptions.CopyEntry - 128, // 71: pb.CopyOptions.targets:type_name -> pb.CopyOptions.TargetsEntry - 129, // 72: pb.SendOptions.data:type_name -> pb.SendOptions.DataEntry - 130, // 73: pb.SendOptions.modes:type_name -> pb.SendOptions.ModesEntry - 131, // 74: pb.SendOptions.owners:type_name -> pb.SendOptions.OwnersEntry - 64, // 75: pb.BuildImageMessage.error_detail:type_name -> pb.ErrorDetail - 132, // 76: pb.CreateWorkloadMessage.publish:type_name -> pb.CreateWorkloadMessage.PublishEntry + 129, // 69: pb.ReplaceOptions.filter_labels:type_name -> pb.ReplaceOptions.FilterLabelsEntry + 130, // 70: pb.ReplaceOptions.copy:type_name -> pb.ReplaceOptions.CopyEntry + 131, // 71: pb.CopyOptions.targets:type_name -> pb.CopyOptions.TargetsEntry + 132, // 72: pb.SendOptions.data:type_name -> pb.SendOptions.DataEntry + 133, // 73: pb.SendOptions.modes:type_name -> pb.SendOptions.ModesEntry + 134, // 74: pb.SendOptions.owners:type_name -> pb.SendOptions.OwnersEntry + 65, // 75: pb.BuildImageMessage.error_detail:type_name -> pb.ErrorDetail + 135, // 76: pb.CreateWorkloadMessage.publish:type_name -> pb.CreateWorkloadMessage.PublishEntry 53, // 77: pb.CreateWorkloadMessage.resource:type_name -> pb.Resource - 66, // 78: pb.ReplaceWorkloadMessage.create:type_name -> pb.CreateWorkloadMessage - 70, // 79: pb.ReplaceWorkloadMessage.remove:type_name -> pb.RemoveWorkloadMessage - 1, // 80: pb.AttachWorkloadMessage.std_stream_type:type_name -> pb.StdStreamType - 55, // 81: pb.RunAndWaitOptions.deploy_options:type_name -> pb.DeployOptions - 1, // 82: pb.LogStreamMessage.std_stream_type:type_name -> pb.StdStreamType - 133, // 83: pb.CapacityMessage.node_capacities:type_name -> pb.CapacityMessage.NodeCapacitiesEntry - 45, // 84: pb.Builds.BuildsEntry.value:type_name -> pb.Build - 54, // 85: pb.Resource.VolumePlanLimitEntry.value:type_name -> pb.Volume - 54, // 86: pb.Resource.VolumePlanRequestEntry.value:type_name -> pb.Volume - 62, // 87: pb.DeployOptions.ModesEntry.value:type_name -> pb.FileMode - 61, // 88: pb.DeployOptions.OwnersEntry.value:type_name -> pb.FileOwner - 59, // 89: pb.CopyOptions.TargetsEntry.value:type_name -> pb.CopyPaths - 62, // 90: pb.SendOptions.ModesEntry.value:type_name -> pb.FileMode - 61, // 91: pb.SendOptions.OwnersEntry.value:type_name -> pb.FileOwner - 4, // 92: pb.CoreRPC.Info:input_type -> pb.Empty - 4, // 93: pb.CoreRPC.WatchServiceStatus:input_type -> pb.Empty - 12, // 94: pb.CoreRPC.ListNetworks:input_type -> pb.ListNetworkOptions - 13, // 95: pb.CoreRPC.ConnectNetwork:input_type -> pb.ConnectNetworkOptions - 14, // 96: pb.CoreRPC.DisconnectNetwork:input_type -> pb.DisconnectNetworkOptions - 37, // 97: pb.CoreRPC.AddPod:input_type -> pb.AddPodOptions - 38, // 98: pb.CoreRPC.RemovePod:input_type -> pb.RemovePodOptions - 39, // 99: pb.CoreRPC.GetPod:input_type -> pb.GetPodOptions - 4, // 100: pb.CoreRPC.ListPods:input_type -> pb.Empty - 39, // 101: pb.CoreRPC.GetPodResource:input_type -> pb.GetPodOptions - 40, // 102: pb.CoreRPC.AddNode:input_type -> pb.AddNodeOptions - 41, // 103: pb.CoreRPC.RemoveNode:input_type -> pb.RemoveNodeOptions - 44, // 104: pb.CoreRPC.ListPodNodes:input_type -> pb.ListNodesOptions - 42, // 105: pb.CoreRPC.GetNode:input_type -> pb.GetNodeOptions - 20, // 106: pb.CoreRPC.SetNode:input_type -> pb.SetNodeOptions - 21, // 107: pb.CoreRPC.SetNodeStatus:input_type -> pb.SetNodeStatusOptions - 22, // 108: pb.CoreRPC.GetNodeStatus:input_type -> pb.GetNodeStatusOptions - 4, // 109: pb.CoreRPC.NodeStatusStream:input_type -> pb.Empty - 43, // 110: pb.CoreRPC.GetNodeResource:input_type -> pb.GetNodeResourceOptions - 55, // 111: pb.CoreRPC.CalculateCapacity:input_type -> pb.DeployOptions - 32, // 112: pb.CoreRPC.GetWorkload:input_type -> pb.WorkloadID - 33, // 113: pb.CoreRPC.GetWorkloads:input_type -> pb.WorkloadIDs - 7, // 114: pb.CoreRPC.ListWorkloads:input_type -> pb.ListWorkloadsOptions - 42, // 115: pb.CoreRPC.ListNodeWorkloads:input_type -> pb.GetNodeOptions - 33, // 116: pb.CoreRPC.GetWorkloadsStatus:input_type -> pb.WorkloadIDs - 28, // 117: pb.CoreRPC.SetWorkloadsStatus:input_type -> pb.SetWorkloadsStatusOptions - 29, // 118: pb.CoreRPC.WorkloadStatusStream:input_type -> pb.WorkloadStatusStreamOptions - 60, // 119: pb.CoreRPC.Copy:input_type -> pb.CopyOptions - 63, // 120: pb.CoreRPC.Send:input_type -> pb.SendOptions - 47, // 121: pb.CoreRPC.BuildImage:input_type -> pb.BuildImageOptions - 57, // 122: pb.CoreRPC.CacheImage:input_type -> pb.CacheImageOptions - 58, // 123: pb.CoreRPC.RemoveImage:input_type -> pb.RemoveImageOptions - 55, // 124: pb.CoreRPC.CreateWorkload:input_type -> pb.DeployOptions - 56, // 125: pb.CoreRPC.ReplaceWorkload:input_type -> pb.ReplaceOptions - 34, // 126: pb.CoreRPC.RemoveWorkload:input_type -> pb.RemoveWorkloadOptions - 35, // 127: pb.CoreRPC.DissociateWorkload:input_type -> pb.DissociateWorkloadOptions - 77, // 128: pb.CoreRPC.ControlWorkload:input_type -> pb.ControlWorkloadOptions - 81, // 129: pb.CoreRPC.ExecuteWorkload:input_type -> pb.ExecuteWorkloadOptions - 36, // 130: pb.CoreRPC.ReallocResource:input_type -> pb.ReallocOptions - 79, // 131: pb.CoreRPC.LogStream:input_type -> pb.LogStreamOptions - 76, // 132: pb.CoreRPC.RunAndWait:input_type -> pb.RunAndWaitOptions - 5, // 133: pb.CoreRPC.Info:output_type -> pb.CoreInfo - 6, // 134: pb.CoreRPC.WatchServiceStatus:output_type -> pb.ServiceStatus - 16, // 135: pb.CoreRPC.ListNetworks:output_type -> pb.Networks - 15, // 136: pb.CoreRPC.ConnectNetwork:output_type -> pb.Network - 4, // 137: pb.CoreRPC.DisconnectNetwork:output_type -> pb.Empty - 8, // 138: pb.CoreRPC.AddPod:output_type -> pb.Pod - 4, // 139: pb.CoreRPC.RemovePod:output_type -> pb.Empty - 8, // 140: pb.CoreRPC.GetPod:output_type -> pb.Pod - 9, // 141: pb.CoreRPC.ListPods:output_type -> pb.Pods - 10, // 142: pb.CoreRPC.GetPodResource:output_type -> pb.PodResource - 17, // 143: pb.CoreRPC.AddNode:output_type -> pb.Node - 4, // 144: pb.CoreRPC.RemoveNode:output_type -> pb.Empty - 18, // 145: pb.CoreRPC.ListPodNodes:output_type -> pb.Nodes - 17, // 146: pb.CoreRPC.GetNode:output_type -> pb.Node - 17, // 147: pb.CoreRPC.SetNode:output_type -> pb.Node - 4, // 148: pb.CoreRPC.SetNodeStatus:output_type -> pb.Empty - 23, // 149: pb.CoreRPC.GetNodeStatus:output_type -> pb.NodeStatusStreamMessage - 23, // 150: pb.CoreRPC.NodeStatusStream:output_type -> pb.NodeStatusStreamMessage - 11, // 151: pb.CoreRPC.GetNodeResource:output_type -> pb.NodeResource - 82, // 152: pb.CoreRPC.CalculateCapacity:output_type -> pb.CapacityMessage - 25, // 153: pb.CoreRPC.GetWorkload:output_type -> pb.Workload - 31, // 154: pb.CoreRPC.GetWorkloads:output_type -> pb.Workloads - 25, // 155: pb.CoreRPC.ListWorkloads:output_type -> pb.Workload - 31, // 156: pb.CoreRPC.ListNodeWorkloads:output_type -> pb.Workloads - 27, // 157: pb.CoreRPC.GetWorkloadsStatus:output_type -> pb.WorkloadsStatus - 27, // 158: pb.CoreRPC.SetWorkloadsStatus:output_type -> pb.WorkloadsStatus - 30, // 159: pb.CoreRPC.WorkloadStatusStream:output_type -> pb.WorkloadStatusStreamMessage - 73, // 160: pb.CoreRPC.Copy:output_type -> pb.CopyMessage - 74, // 161: pb.CoreRPC.Send:output_type -> pb.SendMessage - 65, // 162: pb.CoreRPC.BuildImage:output_type -> pb.BuildImageMessage - 68, // 163: pb.CoreRPC.CacheImage:output_type -> pb.CacheImageMessage - 69, // 164: pb.CoreRPC.RemoveImage:output_type -> pb.RemoveImageMessage - 66, // 165: pb.CoreRPC.CreateWorkload:output_type -> pb.CreateWorkloadMessage - 67, // 166: pb.CoreRPC.ReplaceWorkload:output_type -> pb.ReplaceWorkloadMessage - 70, // 167: pb.CoreRPC.RemoveWorkload:output_type -> pb.RemoveWorkloadMessage - 71, // 168: pb.CoreRPC.DissociateWorkload:output_type -> pb.DissociateWorkloadMessage - 78, // 169: pb.CoreRPC.ControlWorkload:output_type -> pb.ControlWorkloadMessage - 75, // 170: pb.CoreRPC.ExecuteWorkload:output_type -> pb.AttachWorkloadMessage - 72, // 171: pb.CoreRPC.ReallocResource:output_type -> pb.ReallocResourceMessage - 80, // 172: pb.CoreRPC.LogStream:output_type -> pb.LogStreamMessage - 75, // 173: pb.CoreRPC.RunAndWait:output_type -> pb.AttachWorkloadMessage - 133, // [133:174] is the sub-list for method output_type - 92, // [92:133] is the sub-list for method input_type - 92, // [92:92] is the sub-list for extension type_name - 92, // [92:92] is the sub-list for extension extendee - 0, // [0:92] is the sub-list for field type_name + 67, // 78: pb.ReplaceWorkloadMessage.create:type_name -> pb.CreateWorkloadMessage + 73, // 79: pb.ReplaceWorkloadMessage.remove:type_name -> pb.RemoveWorkloadMessage + 71, // 80: pb.ListImageMessage.images:type_name -> pb.ImageItem + 1, // 81: pb.AttachWorkloadMessage.std_stream_type:type_name -> pb.StdStreamType + 55, // 82: pb.RunAndWaitOptions.deploy_options:type_name -> pb.DeployOptions + 1, // 83: pb.LogStreamMessage.std_stream_type:type_name -> pb.StdStreamType + 136, // 84: pb.CapacityMessage.node_capacities:type_name -> pb.CapacityMessage.NodeCapacitiesEntry + 45, // 85: pb.Builds.BuildsEntry.value:type_name -> pb.Build + 54, // 86: pb.Resource.VolumePlanLimitEntry.value:type_name -> pb.Volume + 54, // 87: pb.Resource.VolumePlanRequestEntry.value:type_name -> pb.Volume + 63, // 88: pb.DeployOptions.ModesEntry.value:type_name -> pb.FileMode + 62, // 89: pb.DeployOptions.OwnersEntry.value:type_name -> pb.FileOwner + 60, // 90: pb.CopyOptions.TargetsEntry.value:type_name -> pb.CopyPaths + 63, // 91: pb.SendOptions.ModesEntry.value:type_name -> pb.FileMode + 62, // 92: pb.SendOptions.OwnersEntry.value:type_name -> pb.FileOwner + 4, // 93: pb.CoreRPC.Info:input_type -> pb.Empty + 4, // 94: pb.CoreRPC.WatchServiceStatus:input_type -> pb.Empty + 12, // 95: pb.CoreRPC.ListNetworks:input_type -> pb.ListNetworkOptions + 13, // 96: pb.CoreRPC.ConnectNetwork:input_type -> pb.ConnectNetworkOptions + 14, // 97: pb.CoreRPC.DisconnectNetwork:input_type -> pb.DisconnectNetworkOptions + 37, // 98: pb.CoreRPC.AddPod:input_type -> pb.AddPodOptions + 38, // 99: pb.CoreRPC.RemovePod:input_type -> pb.RemovePodOptions + 39, // 100: pb.CoreRPC.GetPod:input_type -> pb.GetPodOptions + 4, // 101: pb.CoreRPC.ListPods:input_type -> pb.Empty + 39, // 102: pb.CoreRPC.GetPodResource:input_type -> pb.GetPodOptions + 40, // 103: pb.CoreRPC.AddNode:input_type -> pb.AddNodeOptions + 41, // 104: pb.CoreRPC.RemoveNode:input_type -> pb.RemoveNodeOptions + 44, // 105: pb.CoreRPC.ListPodNodes:input_type -> pb.ListNodesOptions + 42, // 106: pb.CoreRPC.GetNode:input_type -> pb.GetNodeOptions + 20, // 107: pb.CoreRPC.SetNode:input_type -> pb.SetNodeOptions + 21, // 108: pb.CoreRPC.SetNodeStatus:input_type -> pb.SetNodeStatusOptions + 22, // 109: pb.CoreRPC.GetNodeStatus:input_type -> pb.GetNodeStatusOptions + 4, // 110: pb.CoreRPC.NodeStatusStream:input_type -> pb.Empty + 43, // 111: pb.CoreRPC.GetNodeResource:input_type -> pb.GetNodeResourceOptions + 55, // 112: pb.CoreRPC.CalculateCapacity:input_type -> pb.DeployOptions + 32, // 113: pb.CoreRPC.GetWorkload:input_type -> pb.WorkloadID + 33, // 114: pb.CoreRPC.GetWorkloads:input_type -> pb.WorkloadIDs + 7, // 115: pb.CoreRPC.ListWorkloads:input_type -> pb.ListWorkloadsOptions + 42, // 116: pb.CoreRPC.ListNodeWorkloads:input_type -> pb.GetNodeOptions + 33, // 117: pb.CoreRPC.GetWorkloadsStatus:input_type -> pb.WorkloadIDs + 28, // 118: pb.CoreRPC.SetWorkloadsStatus:input_type -> pb.SetWorkloadsStatusOptions + 29, // 119: pb.CoreRPC.WorkloadStatusStream:input_type -> pb.WorkloadStatusStreamOptions + 61, // 120: pb.CoreRPC.Copy:input_type -> pb.CopyOptions + 64, // 121: pb.CoreRPC.Send:input_type -> pb.SendOptions + 47, // 122: pb.CoreRPC.BuildImage:input_type -> pb.BuildImageOptions + 57, // 123: pb.CoreRPC.CacheImage:input_type -> pb.CacheImageOptions + 58, // 124: pb.CoreRPC.RemoveImage:input_type -> pb.RemoveImageOptions + 59, // 125: pb.CoreRPC.ListImage:input_type -> pb.ListImageOptions + 55, // 126: pb.CoreRPC.CreateWorkload:input_type -> pb.DeployOptions + 56, // 127: pb.CoreRPC.ReplaceWorkload:input_type -> pb.ReplaceOptions + 34, // 128: pb.CoreRPC.RemoveWorkload:input_type -> pb.RemoveWorkloadOptions + 35, // 129: pb.CoreRPC.DissociateWorkload:input_type -> pb.DissociateWorkloadOptions + 80, // 130: pb.CoreRPC.ControlWorkload:input_type -> pb.ControlWorkloadOptions + 84, // 131: pb.CoreRPC.ExecuteWorkload:input_type -> pb.ExecuteWorkloadOptions + 36, // 132: pb.CoreRPC.ReallocResource:input_type -> pb.ReallocOptions + 82, // 133: pb.CoreRPC.LogStream:input_type -> pb.LogStreamOptions + 79, // 134: pb.CoreRPC.RunAndWait:input_type -> pb.RunAndWaitOptions + 5, // 135: pb.CoreRPC.Info:output_type -> pb.CoreInfo + 6, // 136: pb.CoreRPC.WatchServiceStatus:output_type -> pb.ServiceStatus + 16, // 137: pb.CoreRPC.ListNetworks:output_type -> pb.Networks + 15, // 138: pb.CoreRPC.ConnectNetwork:output_type -> pb.Network + 4, // 139: pb.CoreRPC.DisconnectNetwork:output_type -> pb.Empty + 8, // 140: pb.CoreRPC.AddPod:output_type -> pb.Pod + 4, // 141: pb.CoreRPC.RemovePod:output_type -> pb.Empty + 8, // 142: pb.CoreRPC.GetPod:output_type -> pb.Pod + 9, // 143: pb.CoreRPC.ListPods:output_type -> pb.Pods + 10, // 144: pb.CoreRPC.GetPodResource:output_type -> pb.PodResource + 17, // 145: pb.CoreRPC.AddNode:output_type -> pb.Node + 4, // 146: pb.CoreRPC.RemoveNode:output_type -> pb.Empty + 18, // 147: pb.CoreRPC.ListPodNodes:output_type -> pb.Nodes + 17, // 148: pb.CoreRPC.GetNode:output_type -> pb.Node + 17, // 149: pb.CoreRPC.SetNode:output_type -> pb.Node + 4, // 150: pb.CoreRPC.SetNodeStatus:output_type -> pb.Empty + 23, // 151: pb.CoreRPC.GetNodeStatus:output_type -> pb.NodeStatusStreamMessage + 23, // 152: pb.CoreRPC.NodeStatusStream:output_type -> pb.NodeStatusStreamMessage + 11, // 153: pb.CoreRPC.GetNodeResource:output_type -> pb.NodeResource + 85, // 154: pb.CoreRPC.CalculateCapacity:output_type -> pb.CapacityMessage + 25, // 155: pb.CoreRPC.GetWorkload:output_type -> pb.Workload + 31, // 156: pb.CoreRPC.GetWorkloads:output_type -> pb.Workloads + 25, // 157: pb.CoreRPC.ListWorkloads:output_type -> pb.Workload + 31, // 158: pb.CoreRPC.ListNodeWorkloads:output_type -> pb.Workloads + 27, // 159: pb.CoreRPC.GetWorkloadsStatus:output_type -> pb.WorkloadsStatus + 27, // 160: pb.CoreRPC.SetWorkloadsStatus:output_type -> pb.WorkloadsStatus + 30, // 161: pb.CoreRPC.WorkloadStatusStream:output_type -> pb.WorkloadStatusStreamMessage + 76, // 162: pb.CoreRPC.Copy:output_type -> pb.CopyMessage + 77, // 163: pb.CoreRPC.Send:output_type -> pb.SendMessage + 66, // 164: pb.CoreRPC.BuildImage:output_type -> pb.BuildImageMessage + 69, // 165: pb.CoreRPC.CacheImage:output_type -> pb.CacheImageMessage + 70, // 166: pb.CoreRPC.RemoveImage:output_type -> pb.RemoveImageMessage + 72, // 167: pb.CoreRPC.ListImage:output_type -> pb.ListImageMessage + 67, // 168: pb.CoreRPC.CreateWorkload:output_type -> pb.CreateWorkloadMessage + 68, // 169: pb.CoreRPC.ReplaceWorkload:output_type -> pb.ReplaceWorkloadMessage + 73, // 170: pb.CoreRPC.RemoveWorkload:output_type -> pb.RemoveWorkloadMessage + 74, // 171: pb.CoreRPC.DissociateWorkload:output_type -> pb.DissociateWorkloadMessage + 81, // 172: pb.CoreRPC.ControlWorkload:output_type -> pb.ControlWorkloadMessage + 78, // 173: pb.CoreRPC.ExecuteWorkload:output_type -> pb.AttachWorkloadMessage + 75, // 174: pb.CoreRPC.ReallocResource:output_type -> pb.ReallocResourceMessage + 83, // 175: pb.CoreRPC.LogStream:output_type -> pb.LogStreamMessage + 78, // 176: pb.CoreRPC.RunAndWait:output_type -> pb.AttachWorkloadMessage + 135, // [135:177] is the sub-list for method output_type + 93, // [93:135] is the sub-list for method input_type + 93, // [93:93] is the sub-list for extension type_name + 93, // [93:93] is the sub-list for extension extendee + 0, // [0:93] is the sub-list for field type_name } func init() { file_rpc_gen_core_proto_init() } @@ -8161,7 +8368,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyPaths); i { + switch v := v.(*ListImageOptions); i { case 0: return &v.state case 1: @@ -8173,7 +8380,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyOptions); i { + switch v := v.(*CopyPaths); i { case 0: return &v.state case 1: @@ -8185,7 +8392,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileOwner); i { + switch v := v.(*CopyOptions); i { case 0: return &v.state case 1: @@ -8197,7 +8404,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileMode); i { + switch v := v.(*FileOwner); i { case 0: return &v.state case 1: @@ -8209,7 +8416,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendOptions); i { + switch v := v.(*FileMode); i { case 0: return &v.state case 1: @@ -8221,7 +8428,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ErrorDetail); i { + switch v := v.(*SendOptions); i { case 0: return &v.state case 1: @@ -8233,7 +8440,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildImageMessage); i { + switch v := v.(*ErrorDetail); i { case 0: return &v.state case 1: @@ -8245,7 +8452,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateWorkloadMessage); i { + switch v := v.(*BuildImageMessage); i { case 0: return &v.state case 1: @@ -8257,7 +8464,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaceWorkloadMessage); i { + switch v := v.(*CreateWorkloadMessage); i { case 0: return &v.state case 1: @@ -8269,7 +8476,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CacheImageMessage); i { + switch v := v.(*ReplaceWorkloadMessage); i { case 0: return &v.state case 1: @@ -8281,7 +8488,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveImageMessage); i { + switch v := v.(*CacheImageMessage); i { case 0: return &v.state case 1: @@ -8293,7 +8500,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveWorkloadMessage); i { + switch v := v.(*RemoveImageMessage); i { case 0: return &v.state case 1: @@ -8305,7 +8512,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DissociateWorkloadMessage); i { + switch v := v.(*ImageItem); i { case 0: return &v.state case 1: @@ -8317,7 +8524,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReallocResourceMessage); i { + switch v := v.(*ListImageMessage); i { case 0: return &v.state case 1: @@ -8329,7 +8536,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyMessage); i { + switch v := v.(*RemoveWorkloadMessage); i { case 0: return &v.state case 1: @@ -8341,7 +8548,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendMessage); i { + switch v := v.(*DissociateWorkloadMessage); i { case 0: return &v.state case 1: @@ -8353,7 +8560,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttachWorkloadMessage); i { + switch v := v.(*ReallocResourceMessage); i { case 0: return &v.state case 1: @@ -8365,7 +8572,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunAndWaitOptions); i { + switch v := v.(*CopyMessage); i { case 0: return &v.state case 1: @@ -8377,7 +8584,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlWorkloadOptions); i { + switch v := v.(*SendMessage); i { case 0: return &v.state case 1: @@ -8389,7 +8596,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlWorkloadMessage); i { + switch v := v.(*AttachWorkloadMessage); i { case 0: return &v.state case 1: @@ -8401,7 +8608,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogStreamOptions); i { + switch v := v.(*RunAndWaitOptions); i { case 0: return &v.state case 1: @@ -8413,7 +8620,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogStreamMessage); i { + switch v := v.(*ControlWorkloadOptions); i { case 0: return &v.state case 1: @@ -8425,7 +8632,7 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteWorkloadOptions); i { + switch v := v.(*ControlWorkloadMessage); i { case 0: return &v.state case 1: @@ -8437,6 +8644,42 @@ func file_rpc_gen_core_proto_init() { } } file_rpc_gen_core_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogStreamOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_gen_core_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogStreamMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_gen_core_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExecuteWorkloadOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_gen_core_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CapacityMessage); i { case 0: return &v.state @@ -8455,7 +8698,7 @@ func file_rpc_gen_core_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rpc_gen_core_proto_rawDesc, NumEnums: 4, - NumMessages: 130, + NumMessages: 133, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/gen/core.proto b/rpc/gen/core.proto index 0245b3a9d..b06ca704f 100644 --- a/rpc/gen/core.proto +++ b/rpc/gen/core.proto @@ -5,660 +5,678 @@ package pb; option go_package = "github.com/projecteru2/core/rpc/gen;pb"; service CoreRPC { - rpc Info(Empty) returns (CoreInfo) {}; - rpc WatchServiceStatus(Empty) returns (stream ServiceStatus) {}; - - rpc ListNetworks(ListNetworkOptions) returns (Networks) {}; - rpc ConnectNetwork(ConnectNetworkOptions) returns (Network) {}; - rpc DisconnectNetwork(DisconnectNetworkOptions) returns (Empty) {}; - - rpc AddPod(AddPodOptions) returns (Pod) {}; - rpc RemovePod(RemovePodOptions) returns (Empty) {}; - rpc GetPod(GetPodOptions) returns (Pod) {}; - rpc ListPods(Empty) returns (Pods) {}; - - rpc GetPodResource(GetPodOptions) returns (PodResource) {}; - - rpc AddNode(AddNodeOptions) returns (Node) {}; - rpc RemoveNode(RemoveNodeOptions) returns (Empty) {}; - rpc ListPodNodes(ListNodesOptions) returns (Nodes) {}; - rpc GetNode(GetNodeOptions) returns (Node) {}; - rpc SetNode(SetNodeOptions) returns (Node) {}; - rpc SetNodeStatus(SetNodeStatusOptions) returns (Empty) {}; - rpc GetNodeStatus(GetNodeStatusOptions) returns (NodeStatusStreamMessage) {}; - rpc NodeStatusStream(Empty) returns (stream NodeStatusStreamMessage) {}; - - rpc GetNodeResource(GetNodeResourceOptions) returns (NodeResource) {}; - - rpc CalculateCapacity(DeployOptions) returns (CapacityMessage); - - rpc GetWorkload(WorkloadID) returns (Workload) {}; - rpc GetWorkloads(WorkloadIDs) returns (Workloads) {}; - rpc ListWorkloads(ListWorkloadsOptions) returns (stream Workload) {}; - rpc ListNodeWorkloads(GetNodeOptions) returns (Workloads) {}; - rpc GetWorkloadsStatus(WorkloadIDs) returns (WorkloadsStatus) {}; - rpc SetWorkloadsStatus(SetWorkloadsStatusOptions) returns (WorkloadsStatus) {}; - rpc WorkloadStatusStream(WorkloadStatusStreamOptions) returns (stream WorkloadStatusStreamMessage) {}; - - rpc Copy(CopyOptions) returns (stream CopyMessage) {}; - rpc Send(SendOptions) returns (stream SendMessage) {}; - - rpc BuildImage(BuildImageOptions) returns (stream BuildImageMessage) {}; - rpc CacheImage(CacheImageOptions) returns (stream CacheImageMessage) {}; - rpc RemoveImage(RemoveImageOptions) returns (stream RemoveImageMessage) {}; - - rpc CreateWorkload(DeployOptions) returns (stream CreateWorkloadMessage) {}; - rpc ReplaceWorkload(ReplaceOptions) returns (stream ReplaceWorkloadMessage) {}; - rpc RemoveWorkload(RemoveWorkloadOptions) returns (stream RemoveWorkloadMessage) {}; - rpc DissociateWorkload(DissociateWorkloadOptions) returns (stream DissociateWorkloadMessage) {}; - rpc ControlWorkload(ControlWorkloadOptions) returns (stream ControlWorkloadMessage) {}; - rpc ExecuteWorkload(stream ExecuteWorkloadOptions) returns (stream AttachWorkloadMessage) {}; - rpc ReallocResource(ReallocOptions) returns (ReallocResourceMessage) {}; - rpc LogStream(LogStreamOptions) returns (stream LogStreamMessage) {}; - rpc RunAndWait(stream RunAndWaitOptions) returns (stream AttachWorkloadMessage) {}; + rpc Info(Empty) returns (CoreInfo) {}; + rpc WatchServiceStatus(Empty) returns (stream ServiceStatus) {}; + + rpc ListNetworks(ListNetworkOptions) returns (Networks) {}; + rpc ConnectNetwork(ConnectNetworkOptions) returns (Network) {}; + rpc DisconnectNetwork(DisconnectNetworkOptions) returns (Empty) {}; + + rpc AddPod(AddPodOptions) returns (Pod) {}; + rpc RemovePod(RemovePodOptions) returns (Empty) {}; + rpc GetPod(GetPodOptions) returns (Pod) {}; + rpc ListPods(Empty) returns (Pods) {}; + + rpc GetPodResource(GetPodOptions) returns (PodResource) {}; + + rpc AddNode(AddNodeOptions) returns (Node) {}; + rpc RemoveNode(RemoveNodeOptions) returns (Empty) {}; + rpc ListPodNodes(ListNodesOptions) returns (Nodes) {}; + rpc GetNode(GetNodeOptions) returns (Node) {}; + rpc SetNode(SetNodeOptions) returns (Node) {}; + rpc SetNodeStatus(SetNodeStatusOptions) returns (Empty) {}; + rpc GetNodeStatus(GetNodeStatusOptions) returns (NodeStatusStreamMessage) {}; + rpc NodeStatusStream(Empty) returns (stream NodeStatusStreamMessage) {}; + + rpc GetNodeResource(GetNodeResourceOptions) returns (NodeResource) {}; + + rpc CalculateCapacity(DeployOptions) returns (CapacityMessage); + + rpc GetWorkload(WorkloadID) returns (Workload) {}; + rpc GetWorkloads(WorkloadIDs) returns (Workloads) {}; + rpc ListWorkloads(ListWorkloadsOptions) returns (stream Workload) {}; + rpc ListNodeWorkloads(GetNodeOptions) returns (Workloads) {}; + rpc GetWorkloadsStatus(WorkloadIDs) returns (WorkloadsStatus) {}; + rpc SetWorkloadsStatus(SetWorkloadsStatusOptions) returns (WorkloadsStatus) {}; + rpc WorkloadStatusStream(WorkloadStatusStreamOptions) returns (stream WorkloadStatusStreamMessage) {}; + + rpc Copy(CopyOptions) returns (stream CopyMessage) {}; + rpc Send(SendOptions) returns (stream SendMessage) {}; + + rpc BuildImage(BuildImageOptions) returns (stream BuildImageMessage) {}; + rpc CacheImage(CacheImageOptions) returns (stream CacheImageMessage) {}; + rpc RemoveImage(RemoveImageOptions) returns (stream RemoveImageMessage) {}; + rpc ListImage(ListImageOptions) returns (stream ListImageMessage) {}; + + rpc CreateWorkload(DeployOptions) returns (stream CreateWorkloadMessage) {}; + rpc ReplaceWorkload(ReplaceOptions) returns (stream ReplaceWorkloadMessage) {}; + rpc RemoveWorkload(RemoveWorkloadOptions) returns (stream RemoveWorkloadMessage) {}; + rpc DissociateWorkload(DissociateWorkloadOptions) returns (stream DissociateWorkloadMessage) {}; + rpc ControlWorkload(ControlWorkloadOptions) returns (stream ControlWorkloadMessage) {}; + rpc ExecuteWorkload(stream ExecuteWorkloadOptions) returns (stream AttachWorkloadMessage) {}; + rpc ReallocResource(ReallocOptions) returns (ReallocResourceMessage) {}; + rpc LogStream(LogStreamOptions) returns (stream LogStreamMessage) {}; + rpc RunAndWait(stream RunAndWaitOptions) returns (stream AttachWorkloadMessage) {}; } message Empty {} message CoreInfo { - string version = 1; - string revison = 2; - string build_at = 3; - string golang_version = 4; - string os_arch = 5; - string identifier = 6; + string version = 1; + string revison = 2; + string build_at = 3; + string golang_version = 4; + string os_arch = 5; + string identifier = 6; } message ServiceStatus { - repeated string addresses = 1; - int64 interval_in_second = 2; + repeated string addresses = 1; + int64 interval_in_second = 2; } message ListWorkloadsOptions { - string appname = 1; - string entrypoint = 2; - string nodename = 3; - map labels = 4; - int64 limit = 5; + string appname = 1; + string entrypoint = 2; + string nodename = 3; + map labels = 4; + int64 limit = 5; } // 对的, protobuf 就是这样... message Pod { - string name = 1; - string desc = 2; + string name = 1; + string desc = 2; } message Pods { - repeated Pod pods = 1; + repeated Pod pods = 1; } message PodResource { - string name = 1; - repeated NodeResource nodes_resource = 2; + string name = 1; + repeated NodeResource nodes_resource = 2; } message NodeResource { - string name = 1; - double cpu_percent = 2; - double memory_percent = 3; - double storage_percent = 4; - double volume_percent = 5; - repeated string diffs = 6; + string name = 1; + double cpu_percent = 2; + double memory_percent = 3; + double storage_percent = 4; + double volume_percent = 5; + repeated string diffs = 6; } message ListNetworkOptions { - string podname = 1; - string driver = 2; + string podname = 1; + string driver = 2; } message ConnectNetworkOptions{ - string network = 1; - string target = 2; - string ipv4 = 3; - string ipv6 = 4; + string network = 1; + string target = 2; + string ipv4 = 3; + string ipv6 = 4; } message DisconnectNetworkOptions{ - string network = 1; - string target = 2; - bool force = 3; + string network = 1; + string target = 2; + bool force = 3; } message Network { - string name = 1; - repeated string subnets = 2; + string name = 1; + repeated string subnets = 2; } message Networks { - repeated Network networks = 1; + repeated Network networks = 1; } message Node { - string name = 1; - string endpoint = 2; - string podname = 3; - map cpu = 4; - double cpu_used= 5; - int64 memory = 6; - int64 memory_used = 7; - bool available = 8; - map labels = 9; - int64 init_memory = 10; - map init_cpu = 11; - string info = 12; - map numa = 13; - map numa_memory = 14; - int64 storage = 15; - int64 storage_used = 16; - int64 init_storage = 17; - map init_volume = 18; - map volume = 19; - int64 volume_used = 20; - map init_numa_memory = 21; - bool bypass = 22; + string name = 1; + string endpoint = 2; + string podname = 3; + map cpu = 4; + double cpu_used = 5; + int64 memory = 6; + int64 memory_used = 7; + bool available = 8; + map labels = 9; + int64 init_memory = 10; + map init_cpu = 11; + string info = 12; + map numa = 13; + map numa_memory = 14; + int64 storage = 15; + int64 storage_used = 16; + int64 init_storage = 17; + map init_volume = 18; + map volume = 19; + int64 volume_used = 20; + map init_numa_memory = 21; + bool bypass = 22; } message Nodes { - repeated Node nodes = 1; + repeated Node nodes = 1; } message NodeAvailable { - string nodename = 1; - string podname = 2; + string nodename = 1; + string podname = 2; } message SetNodeOptions { - string nodename = 1; - TriOpt status_opt = 2; - map delta_cpu = 3; - int64 delta_memory = 4; - int64 delta_storage = 5; - map delta_numa_memory = 6; - map numa = 7; - map labels = 8; - map delta_volume = 9; - bool workloads_down = 10; - string endpoint = 11; - TriOpt bypass_opt = 12; + string nodename = 1; + TriOpt status_opt = 2; + map delta_cpu = 3; + int64 delta_memory = 4; + int64 delta_storage = 5; + map delta_numa_memory = 6; + map numa = 7; + map labels = 8; + map delta_volume = 9; + bool workloads_down = 10; + string endpoint = 11; + TriOpt bypass_opt = 12; } message SetNodeStatusOptions { - string nodename = 1; - int64 ttl = 2; + string nodename = 1; + int64 ttl = 2; } message GetNodeStatusOptions { - string nodename = 1; + string nodename = 1; } message NodeStatusStreamMessage { - string nodename = 1; - string podname = 2; - bool alive = 3; - string error = 4; + string nodename = 1; + string podname = 2; + bool alive = 3; + string error = 4; } message NodeFilter { - repeated string includes = 1; - repeated string excludes = 2; - map labels = 3; - bool all = 4; + repeated string includes = 1; + repeated string excludes = 2; + map labels = 3; + bool all = 4; } message Workload { - string id = 1; - string podname = 2; - string nodename = 3; - string name = 4; - bool privileged = 5; - map labels = 6; - map publish = 7; - string image = 8; - WorkloadStatus status = 9; - Resource resource = 10; - int64 create_time = 11; - repeated string env = 12; + string id = 1; + string podname = 2; + string nodename = 3; + string name = 4; + bool privileged = 5; + map labels = 6; + map publish = 7; + string image = 8; + WorkloadStatus status = 9; + Resource resource = 10; + int64 create_time = 11; + repeated string env = 12; } message WorkloadStatus { - string id = 1; - bool running = 2; - bool healthy = 3; - map networks = 4; - bytes extension = 5; - int64 ttl = 6; - // extra fields used to set workload status - string appname = 7; - string nodename = 8; - string entrypoint = 9; + string id = 1; + bool running = 2; + bool healthy = 3; + map networks = 4; + bytes extension = 5; + int64 ttl = 6; + // extra fields used to set workload status + string appname = 7; + string nodename = 8; + string entrypoint = 9; } message WorkloadsStatus { - repeated WorkloadStatus status = 1; + repeated WorkloadStatus status = 1; } message SetWorkloadsStatusOptions { - repeated WorkloadStatus status = 1; + repeated WorkloadStatus status = 1; } message WorkloadStatusStreamOptions { - string appname = 1; - string entrypoint = 2; - string nodename = 3; - map labels = 4; + string appname = 1; + string entrypoint = 2; + string nodename = 3; + map labels = 4; } message WorkloadStatusStreamMessage { - string id = 1; - Workload workload = 2; - WorkloadStatus status = 3; - string error = 4; - bool delete = 5; + string id = 1; + Workload workload = 2; + WorkloadStatus status = 3; + string error = 4; + bool delete = 5; } message Workloads { - repeated Workload workloads = 1; + repeated Workload workloads = 1; } message WorkloadID { - string id = 1; + string id = 1; } message WorkloadIDs { - repeated string ids = 1; + repeated string ids = 1; } message RemoveWorkloadOptions { - repeated string ids = 1; - bool force = 2; - int32 step = 3; + repeated string ids = 1; + bool force = 2; + int32 step = 3; } message DissociateWorkloadOptions { - repeated string ids = 1; + repeated string ids = 1; } enum TriOpt { - KEEP = 0; - TRUE = 1; - FALSE = 2; + KEEP = 0; + TRUE = 1; + FALSE = 2; } message ReallocOptions { - string id = 1; - TriOpt bind_cpu_opt = 2; - ResourceOptions resource_opts = 3; + string id = 1; + TriOpt bind_cpu_opt = 2; + ResourceOptions resource_opts = 3; } message AddPodOptions { - string name = 1; - string desc = 2; + string name = 1; + string desc = 2; } message RemovePodOptions { - string name = 1; + string name = 1; } message GetPodOptions { - string name = 1; + string name = 1; } message AddNodeOptions { - string nodename = 1; - string endpoint = 2; - string podname = 3; - string ca = 4; - string cert = 5; - string key = 6; - int32 cpu = 7; - int32 share = 8; - int64 memory = 9; - map labels = 10; - map numa = 11; - map numa_memory = 12; - int64 storage = 13; - map volume_map = 14; + string nodename = 1; + string endpoint = 2; + string podname = 3; + string ca = 4; + string cert = 5; + string key = 6; + int32 cpu = 7; + int32 share = 8; + int64 memory = 9; + map labels = 10; + map numa = 11; + map numa_memory = 12; + int64 storage = 13; + map volume_map = 14; } message RemoveNodeOptions { - string nodename = 1; + string nodename = 1; } message GetNodeOptions { - string nodename = 1; - map labels = 2; + string nodename = 1; + map labels = 2; } message GetNodeResourceOptions { - GetNodeOptions opts = 1; - bool fix = 2; + GetNodeOptions opts = 1; + bool fix = 2; } message ListNodesOptions { - string podname = 1; - bool all = 2; - map labels = 3; - int32 timeout_in_second = 4; + string podname = 1; + bool all = 2; + map labels = 3; + int32 timeout_in_second = 4; } message Build { - string base = 1; - string repo = 2; - string version = 3; - string dir = 4; - bool submodule = 5; - repeated string commands = 6; - map envs = 7; - map args = 8; - map labels = 9; - map artifacts = 10; - map cache = 11; - string stop_signal = 12; - bool security = 13; + string base = 1; + string repo = 2; + string version = 3; + string dir = 4; + bool submodule = 5; + repeated string commands = 6; + map envs = 7; + map args = 8; + map labels = 9; + map artifacts = 10; + map cache = 11; + string stop_signal = 12; + bool security = 13; } message Builds { - repeated string stages = 1; - map builds = 2; + repeated string stages = 1; + map builds = 2; } message BuildImageOptions { - string name = 1; - string user = 2; - int32 uid = 3; - repeated string tags = 4; - Builds builds = 5; - bytes tar = 6; - enum BuildMethod { - SCM = 0; - RAW = 1; - EXIST = 2; - } - BuildMethod build_method = 7; - string exist_id = 8; + string name = 1; + string user = 2; + int32 uid = 3; + repeated string tags = 4; + Builds builds = 5; + bytes tar = 6; + enum BuildMethod { + SCM = 0; + RAW = 1; + EXIST = 2; + } + BuildMethod build_method = 7; + string exist_id = 8; } message HookOptions { - repeated string after_start = 1; - repeated string before_stop = 2; - bool force = 3; + repeated string after_start = 1; + repeated string before_stop = 2; + bool force = 3; } message HealthCheckOptions { - repeated string tcp_ports = 1; - string http_port = 2; - string url = 3; - int32 code = 4; + repeated string tcp_ports = 1; + string http_port = 2; + string url = 3; + int32 code = 4; } message LogOptions { - string type = 1; - map config = 2; + string type = 1; + map config = 2; } message EntrypointOptions { - string name = 1; - // `command` field is to be deprecated in favor of `commands` field - string command = 2; - bool privileged = 3; - string dir = 4; - LogOptions log = 5; - repeated string publish = 6; - HealthCheckOptions healthcheck = 7; - HookOptions hook = 8; - string restart = 9; - map sysctls = 10; - // `commands` is the new-style and preferable fields to specify process to run - // to specify shell-like command such as `true && echo a > /dev/null` - // please state the shell explicitly: ["sh", "-c", "true && echo a > /dev/null"] - repeated string commands = 11; + string name = 1; + // `command` field is to be deprecated in favor of `commands` field + string command = 2; + bool privileged = 3; + string dir = 4; + LogOptions log = 5; + repeated string publish = 6; + HealthCheckOptions healthcheck = 7; + HookOptions hook = 8; + string restart = 9; + map sysctls = 10; + // `commands` is the new-style and preferable fields to specify process to run + // to specify shell-like command such as `true && echo a > /dev/null` + // please state the shell explicitly: ["sh", "-c", "true && echo a > /dev/null"] + repeated string commands = 11; } message ResourceOptions { - double cpu_quota_limit = 1; - double cpu_quota_request = 2; - bool cpu_bind = 3; - int64 memory_limit = 4; - int64 memory_request = 5; - int64 storage_limit = 6; - int64 storage_request = 7; - repeated string volumes_limit = 8; - repeated string volumes_request = 9; + double cpu_quota_limit = 1; + double cpu_quota_request = 2; + bool cpu_bind = 3; + int64 memory_limit = 4; + int64 memory_request = 5; + int64 storage_limit = 6; + int64 storage_request = 7; + repeated string volumes_limit = 8; + repeated string volumes_request = 9; } message Resource { - double cpu_quota_limit = 1; - double cpu_quota_request = 2; - map cpu = 3; - int64 memory_limit = 4; - int64 memory_request = 5; - int64 storage_limit = 6; - int64 storage_request = 7; - repeated string volumes_limit = 8; - repeated string volumes_request = 9; - map volume_plan_limit = 10; - map volume_plan_request = 11; + double cpu_quota_limit = 1; + double cpu_quota_request = 2; + map cpu = 3; + int64 memory_limit = 4; + int64 memory_request = 5; + int64 storage_limit = 6; + int64 storage_request = 7; + repeated string volumes_limit = 8; + repeated string volumes_request = 9; + map volume_plan_limit = 10; + map volume_plan_request = 11; } message Volume { - map volume = 1; + map volume = 1; } message DeployOptions { - enum Strategy { - AUTO = 0; - FILL = 1; - EACH = 2; - GLOBAL = 3; - DUMMY = 99; - } - string name = 1; - EntrypointOptions entrypoint = 2; - string podname = 3; - repeated string nodenames = 4; - string image = 5; - string extra_args = 6; - int32 count = 7; - repeated string env = 8; - repeated string dns = 9; - repeated string extra_hosts = 10; - map networks = 11; - string user = 13; - bool debug = 14; - bool open_stdin = 15; - map labels = 16; - map nodelabels = 17; - Strategy deploy_strategy = 18; - map data = 19; - int32 nodes_limit = 20; - bool ignore_hook = 21; - repeated string after_create = 22; - bytes raw_args = 23; - ResourceOptions resource_opts = 24; - NodeFilter node_filter = 25; - // should be part of field no.19 - map modes = 26; - map owners = 27; + enum Strategy { + AUTO = 0; + FILL = 1; + EACH = 2; + GLOBAL = 3; + DUMMY = 99; + } + string name = 1; + EntrypointOptions entrypoint = 2; + string podname = 3; + repeated string nodenames = 4; + string image = 5; + string extra_args = 6; + int32 count = 7; + repeated string env = 8; + repeated string dns = 9; + repeated string extra_hosts = 10; + map networks = 11; + string user = 13; + bool debug = 14; + bool open_stdin = 15; + map labels = 16; + map nodelabels = 17; + Strategy deploy_strategy = 18; + map data = 19; + int32 nodes_limit = 20; + bool ignore_hook = 21; + repeated string after_create = 22; + bytes raw_args = 23; + ResourceOptions resource_opts = 24; + NodeFilter node_filter = 25; + // should be part of field no.19 + map modes = 26; + map owners = 27; } message ReplaceOptions { - DeployOptions deployOpt = 1; - bool networkinherit = 2; - map filter_labels = 3; - map copy = 4; - repeated string ids = 5; + DeployOptions deployOpt = 1; + bool networkinherit = 2; + map filter_labels = 3; + map copy = 4; + repeated string ids = 5; } message CacheImageOptions { - string podname = 1; - repeated string nodenames = 2; - repeated string images = 3; - int32 step = 4; + string podname = 1; + repeated string nodenames = 2; + repeated string images = 3; + int32 step = 4; } message RemoveImageOptions { - string podname = 1; - repeated string nodenames = 2; - repeated string images = 3; - int32 step = 4; - bool prune = 5; + string podname = 1; + repeated string nodenames = 2; + repeated string images = 3; + int32 step = 4; + bool prune = 5; +} + +message ListImageOptions { + string podname = 1; + repeated string nodenames = 2; + string filter = 3; } message CopyPaths { - repeated string paths = 1; + repeated string paths = 1; } message CopyOptions { - map targets = 1; + map targets = 1; } message FileOwner { - int32 uid = 1; - int32 gid = 2; + int32 uid = 1; + int32 gid = 2; } message FileMode { - int64 mode = 1; + int64 mode = 1; } message SendOptions { - repeated string ids = 1; - map data = 2; - map modes = 3; - map owners = 4; + repeated string ids = 1; + map data = 2; + map modes = 3; + map owners = 4; } message ErrorDetail { - int64 code = 1; - string message = 2; + int64 code = 1; + string message = 2; } message BuildImageMessage { - string id = 1; - string status = 2; - string progress = 3; - string error = 4; - string stream = 5; - ErrorDetail error_detail = 6; + string id = 1; + string status = 2; + string progress = 3; + string error = 4; + string stream = 5; + ErrorDetail error_detail = 6; } message CreateWorkloadMessage { - string podname = 1; - string nodename = 2; - string id = 3; - string name = 4; - string error = 5; - bool success = 6; - map publish = 7; - bytes hook = 8; - Resource resource = 9; + string podname = 1; + string nodename = 2; + string id = 3; + string name = 4; + string error = 5; + bool success = 6; + map publish = 7; + bytes hook = 8; + Resource resource = 9; } message ReplaceWorkloadMessage { - CreateWorkloadMessage create = 1; - RemoveWorkloadMessage remove = 2; - string error = 3; + CreateWorkloadMessage create = 1; + RemoveWorkloadMessage remove = 2; + string error = 3; } message CacheImageMessage { - string image = 1; - bool success = 2; - string nodename = 3; - string message = 4; + string image = 1; + bool success = 2; + string nodename = 3; + string message = 4; } message RemoveImageMessage { - string image = 1; - bool success = 2; - repeated string messages = 3; + string image = 1; + bool success = 2; + repeated string messages = 3; +} + +message ImageItem{ + string id = 1; + repeated string tags = 2; +} + +message ListImageMessage{ + repeated ImageItem images = 1; + string nodename = 2; + string err = 3; } message RemoveWorkloadMessage { - string id = 1; - bool success = 2; - string hook = 3; + string id = 1; + bool success = 2; + string hook = 3; } message DissociateWorkloadMessage { - string id = 1; - string error = 2; + string id = 1; + string error = 2; } message ReallocResourceMessage { - string error = 1; + string error = 1; } message CopyMessage { - string id = 1; - string name = 2; - string path = 3; - string error = 4; - bytes data = 5; + string id = 1; + string name = 2; + string path = 3; + string error = 4; + bytes data = 5; } message SendMessage { - string id = 1; - string path = 2; - string error = 3; + string id = 1; + string path = 2; + string error = 3; } enum StdStreamType { - STDOUT = 0; - STDERR = 1; - TYPEWORKLOADID = 6; - ERUERROR = -1; + STDOUT = 0; + STDERR = 1; + TYPEWORKLOADID = 6; + ERUERROR = -1; } message AttachWorkloadMessage { - string workload_id = 1; - bytes data = 2; - StdStreamType std_stream_type = 3; + string workload_id = 1; + bytes data = 2; + StdStreamType std_stream_type = 3; } message RunAndWaitOptions{ - DeployOptions deploy_options = 1; - bytes cmd = 2; - bool async = 3; - int32 async_timeout = 4; + DeployOptions deploy_options = 1; + bytes cmd = 2; + bool async = 3; + int32 async_timeout = 4; } message ControlWorkloadOptions { - repeated string ids = 1; - string type = 2; - bool force = 3; + repeated string ids = 1; + string type = 2; + bool force = 3; } message ControlWorkloadMessage { - string id = 1; - string error = 2; - bytes hook = 3; + string id = 1; + string error = 2; + bytes hook = 3; } message LogStreamOptions { - string id = 1; - string tail = 2; - string since = 3; - string until = 4; - bool follow = 5; + string id = 1; + string tail = 2; + string since = 3; + string until = 4; + bool follow = 5; } message LogStreamMessage { - string id = 1; - string error = 2; - bytes data = 3; - StdStreamType std_stream_type = 4; + string id = 1; + string error = 2; + bytes data = 3; + StdStreamType std_stream_type = 4; } message ExecuteWorkloadOptions { - string workload_id = 1; - repeated string commands = 2; - repeated string envs = 3; - string workdir = 4; - bool open_stdin = 5; - bytes repl_cmd = 6; + string workload_id = 1; + repeated string commands = 2; + repeated string envs = 3; + string workdir = 4; + bool open_stdin = 5; + bytes repl_cmd = 6; } message CapacityMessage { - int64 total = 1; - map node_capacities = 2; + int64 total = 1; + map node_capacities = 2; } diff --git a/rpc/gen/core_grpc.pb.go b/rpc/gen/core_grpc.pb.go index 54cfe2171..60a83314d 100644 --- a/rpc/gen/core_grpc.pb.go +++ b/rpc/gen/core_grpc.pb.go @@ -50,6 +50,7 @@ type CoreRPCClient interface { BuildImage(ctx context.Context, in *BuildImageOptions, opts ...grpc.CallOption) (CoreRPC_BuildImageClient, error) CacheImage(ctx context.Context, in *CacheImageOptions, opts ...grpc.CallOption) (CoreRPC_CacheImageClient, error) RemoveImage(ctx context.Context, in *RemoveImageOptions, opts ...grpc.CallOption) (CoreRPC_RemoveImageClient, error) + ListImage(ctx context.Context, in *ListImageOptions, opts ...grpc.CallOption) (CoreRPC_ListImageClient, error) CreateWorkload(ctx context.Context, in *DeployOptions, opts ...grpc.CallOption) (CoreRPC_CreateWorkloadClient, error) ReplaceWorkload(ctx context.Context, in *ReplaceOptions, opts ...grpc.CallOption) (CoreRPC_ReplaceWorkloadClient, error) RemoveWorkload(ctx context.Context, in *RemoveWorkloadOptions, opts ...grpc.CallOption) (CoreRPC_RemoveWorkloadClient, error) @@ -564,8 +565,40 @@ func (x *coreRPCRemoveImageClient) Recv() (*RemoveImageMessage, error) { return m, nil } +func (c *coreRPCClient) ListImage(ctx context.Context, in *ListImageOptions, opts ...grpc.CallOption) (CoreRPC_ListImageClient, error) { + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[9], "/pb.CoreRPC/ListImage", opts...) + if err != nil { + return nil, err + } + x := &coreRPCListImageClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type CoreRPC_ListImageClient interface { + Recv() (*ListImageMessage, error) + grpc.ClientStream +} + +type coreRPCListImageClient struct { + grpc.ClientStream +} + +func (x *coreRPCListImageClient) Recv() (*ListImageMessage, error) { + m := new(ListImageMessage) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *coreRPCClient) CreateWorkload(ctx context.Context, in *DeployOptions, opts ...grpc.CallOption) (CoreRPC_CreateWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[9], "/pb.CoreRPC/CreateWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[10], "/pb.CoreRPC/CreateWorkload", opts...) if err != nil { return nil, err } @@ -597,7 +630,7 @@ func (x *coreRPCCreateWorkloadClient) Recv() (*CreateWorkloadMessage, error) { } func (c *coreRPCClient) ReplaceWorkload(ctx context.Context, in *ReplaceOptions, opts ...grpc.CallOption) (CoreRPC_ReplaceWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[10], "/pb.CoreRPC/ReplaceWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[11], "/pb.CoreRPC/ReplaceWorkload", opts...) if err != nil { return nil, err } @@ -629,7 +662,7 @@ func (x *coreRPCReplaceWorkloadClient) Recv() (*ReplaceWorkloadMessage, error) { } func (c *coreRPCClient) RemoveWorkload(ctx context.Context, in *RemoveWorkloadOptions, opts ...grpc.CallOption) (CoreRPC_RemoveWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[11], "/pb.CoreRPC/RemoveWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[12], "/pb.CoreRPC/RemoveWorkload", opts...) if err != nil { return nil, err } @@ -661,7 +694,7 @@ func (x *coreRPCRemoveWorkloadClient) Recv() (*RemoveWorkloadMessage, error) { } func (c *coreRPCClient) DissociateWorkload(ctx context.Context, in *DissociateWorkloadOptions, opts ...grpc.CallOption) (CoreRPC_DissociateWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[12], "/pb.CoreRPC/DissociateWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[13], "/pb.CoreRPC/DissociateWorkload", opts...) if err != nil { return nil, err } @@ -693,7 +726,7 @@ func (x *coreRPCDissociateWorkloadClient) Recv() (*DissociateWorkloadMessage, er } func (c *coreRPCClient) ControlWorkload(ctx context.Context, in *ControlWorkloadOptions, opts ...grpc.CallOption) (CoreRPC_ControlWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[13], "/pb.CoreRPC/ControlWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[14], "/pb.CoreRPC/ControlWorkload", opts...) if err != nil { return nil, err } @@ -725,7 +758,7 @@ func (x *coreRPCControlWorkloadClient) Recv() (*ControlWorkloadMessage, error) { } func (c *coreRPCClient) ExecuteWorkload(ctx context.Context, opts ...grpc.CallOption) (CoreRPC_ExecuteWorkloadClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[14], "/pb.CoreRPC/ExecuteWorkload", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[15], "/pb.CoreRPC/ExecuteWorkload", opts...) if err != nil { return nil, err } @@ -765,7 +798,7 @@ func (c *coreRPCClient) ReallocResource(ctx context.Context, in *ReallocOptions, } func (c *coreRPCClient) LogStream(ctx context.Context, in *LogStreamOptions, opts ...grpc.CallOption) (CoreRPC_LogStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[15], "/pb.CoreRPC/LogStream", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[16], "/pb.CoreRPC/LogStream", opts...) if err != nil { return nil, err } @@ -797,7 +830,7 @@ func (x *coreRPCLogStreamClient) Recv() (*LogStreamMessage, error) { } func (c *coreRPCClient) RunAndWait(ctx context.Context, opts ...grpc.CallOption) (CoreRPC_RunAndWaitClient, error) { - stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[16], "/pb.CoreRPC/RunAndWait", opts...) + stream, err := c.cc.NewStream(ctx, &CoreRPC_ServiceDesc.Streams[17], "/pb.CoreRPC/RunAndWait", opts...) if err != nil { return nil, err } @@ -863,6 +896,7 @@ type CoreRPCServer interface { BuildImage(*BuildImageOptions, CoreRPC_BuildImageServer) error CacheImage(*CacheImageOptions, CoreRPC_CacheImageServer) error RemoveImage(*RemoveImageOptions, CoreRPC_RemoveImageServer) error + ListImage(*ListImageOptions, CoreRPC_ListImageServer) error CreateWorkload(*DeployOptions, CoreRPC_CreateWorkloadServer) error ReplaceWorkload(*ReplaceOptions, CoreRPC_ReplaceWorkloadServer) error RemoveWorkload(*RemoveWorkloadOptions, CoreRPC_RemoveWorkloadServer) error @@ -974,6 +1008,9 @@ func (UnimplementedCoreRPCServer) CacheImage(*CacheImageOptions, CoreRPC_CacheIm func (UnimplementedCoreRPCServer) RemoveImage(*RemoveImageOptions, CoreRPC_RemoveImageServer) error { return status.Errorf(codes.Unimplemented, "method RemoveImage not implemented") } +func (UnimplementedCoreRPCServer) ListImage(*ListImageOptions, CoreRPC_ListImageServer) error { + return status.Errorf(codes.Unimplemented, "method ListImage not implemented") +} func (UnimplementedCoreRPCServer) CreateWorkload(*DeployOptions, CoreRPC_CreateWorkloadServer) error { return status.Errorf(codes.Unimplemented, "method CreateWorkload not implemented") } @@ -1616,6 +1653,27 @@ func (x *coreRPCRemoveImageServer) Send(m *RemoveImageMessage) error { return x.ServerStream.SendMsg(m) } +func _CoreRPC_ListImage_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ListImageOptions) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(CoreRPCServer).ListImage(m, &coreRPCListImageServer{stream}) +} + +type CoreRPC_ListImageServer interface { + Send(*ListImageMessage) error + grpc.ServerStream +} + +type coreRPCListImageServer struct { + grpc.ServerStream +} + +func (x *coreRPCListImageServer) Send(m *ListImageMessage) error { + return x.ServerStream.SendMsg(m) +} + func _CoreRPC_CreateWorkload_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(DeployOptions) if err := stream.RecvMsg(m); err != nil { @@ -1962,6 +2020,11 @@ var CoreRPC_ServiceDesc = grpc.ServiceDesc{ Handler: _CoreRPC_RemoveImage_Handler, ServerStreams: true, }, + { + StreamName: "ListImage", + Handler: _CoreRPC_ListImage_Handler, + ServerStreams: true, + }, { StreamName: "CreateWorkload", Handler: _CoreRPC_CreateWorkload_Handler, diff --git a/rpc/rpc.go b/rpc/rpc.go index 16ed8a4b5..d481652cb 100644 --- a/rpc/rpc.go +++ b/rpc/rpc.go @@ -605,6 +605,25 @@ func (v *Vibranium) RemoveImage(opts *pb.RemoveImageOptions, stream pb.CoreRPC_R return nil } +// ListImage list image +func (v *Vibranium) ListImage(opts *pb.ListImageOptions, stream pb.CoreRPC_ListImageServer) error { + ctx := v.taskAdd(stream.Context(), "ListImage", true) + defer v.taskDone(ctx, "ListImage", true) + + ch, err := v.cluster.ListImage(ctx, toCoreListImageOptions(opts)) + if err != nil { + return grpcstatus.Error(ListImage, err.Error()) + } + + for msg := range ch { + if err = stream.Send(toRPCListImageMessage(msg)); err != nil { + v.logUnsentMessages(ctx, "ListImage", err, msg) + } + } + + return nil +} + // CreateWorkload create workloads func (v *Vibranium) CreateWorkload(opts *pb.DeployOptions, stream pb.CoreRPC_CreateWorkloadServer) error { ctx := v.taskAdd(stream.Context(), "CreateWorkload", true) diff --git a/rpc/transform.go b/rpc/transform.go index 765006b5c..d9bbdbb74 100644 --- a/rpc/transform.go +++ b/rpc/transform.go @@ -620,3 +620,36 @@ func toCoreRemoveImageOptions(opts *pb.RemoveImageOptions) *types.ImageOptions { Prune: opts.Prune, } } + +func toRPCListImageMessage(msg *types.ListImageMessage) *pb.ListImageMessage { + m := &pb.ListImageMessage{ + Images: []*pb.ImageItem{}, + Nodename: "", + Err: "", + } + if msg == nil { + return m + } + if msg.Error != nil { + m.Err = msg.Error.Error() + return m + } + + m.Nodename = msg.Nodename + for _, image := range msg.Images { + m.Images = append(m.Images, &pb.ImageItem{ + Id: image.ID, + Tags: image.Tags, + }) + } + + return m +} + +func toCoreListImageOptions(opts *pb.ListImageOptions) *types.ImageOptions { + return &types.ImageOptions{ + Podname: opts.Podname, + Nodenames: opts.Nodenames, + Filter: opts.Filter, + } +} diff --git a/types/message.go b/types/message.go index 04e9375d3..ffa4900e2 100644 --- a/types/message.go +++ b/types/message.go @@ -57,6 +57,19 @@ type RemoveImageMessage struct { Messages []string } +// Image . +type Image struct { + ID string + Tags []string +} + +// ListImageMessage for list image +type ListImageMessage struct { + Images []*Image + Nodename string + Error error +} + // ControlWorkloadMessage for workload control message type ControlWorkloadMessage struct { WorkloadID string diff --git a/types/options.go b/types/options.go index 97838ce82..83d772c04 100644 --- a/types/options.go +++ b/types/options.go @@ -254,6 +254,7 @@ type ImageOptions struct { Images []string Step int Prune bool + Filter string } // Validate checks the options