internal/gomote,cmd/gomote: implements GRPC add bootstrap
This change adds the implementation for GRPC putbootstrap command to the
gomote client. It also adds the gomote server implementation of the
AddBootstrap endpoint. This endpoint adds the bootstrap Go version to
an existing client.
Updates golang/go#48737
Updates golang/go#48742
For golang/go#47521
Change-Id: Ib0807a13e85a0e350485c8300ac2e180456bd0fc
Reviewed-on: https://go-review.googlesource.com/c/build/+/410818
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Auto-Submit: Carlos Amedee <carlos@golang.org>
Reviewed-by: Alex Rakoczy <alex@golang.org>
diff --git a/cmd/gomote/gomote.go b/cmd/gomote/gomote.go
index 684b635..1c8dcf6 100644
--- a/cmd/gomote/gomote.go
+++ b/cmd/gomote/gomote.go
@@ -216,17 +216,19 @@
// version2 manages how version 2 subcommands are called.
func version2(args []string) error {
cm := map[string]subCommand{
- "create": create,
- "destroy": destroy,
- "list": list,
- "ls": ls,
- "run": run,
- "ping": ping,
- "ssh": ssh,
- "rm": rm,
- "gettar": getTar,
- "put": put,
- "puttar": putTar,
+
+ "create": create,
+ "destroy": destroy,
+ "list": list,
+ "ls": ls,
+ "run": run,
+ "ping": ping,
+ "ssh": ssh,
+ "rm": rm,
+ "gettar": getTar,
+ "put": put,
+ "puttar": putTar,
+ "putbootstrap": putBootstrap,
}
if len(args) == 0 {
usage()
diff --git a/cmd/gomote/put.go b/cmd/gomote/put.go
index 039744c..dd27272 100644
--- a/cmd/gomote/put.go
+++ b/cmd/gomote/put.go
@@ -219,6 +219,33 @@
return bc.PutTarFromURL(ctx, u, "go1.4")
}
+// putBootstrap places the bootstrap version of go in the workdir
+func putBootstrap(args []string) error {
+ fs := flag.NewFlagSet("putbootstrap", flag.ContinueOnError)
+ fs.Usage = func() {
+ fmt.Fprintln(os.Stderr, "putbootstrap usage: gomote putbootstrap <buildlet-name>")
+ fs.PrintDefaults()
+ os.Exit(1)
+ }
+ fs.Parse(args)
+ if fs.NArg() != 1 {
+ fs.Usage()
+ }
+ name := fs.Arg(0)
+ ctx := context.Background()
+ client := gomoteServerClient(ctx)
+ resp, err := client.AddBootstrap(ctx, &protos.AddBootstrapRequest{
+ GomoteId: name,
+ })
+ if err != nil {
+ return fmt.Errorf("unable to add bootstrap version of Go to instance: %s", statusFromError(err))
+ }
+ if resp.GetBootstrapGoUrl() == "" {
+ fmt.Printf("No GoBootstrapURL defined for %q; ignoring. (may be baked into image)\n", name)
+ }
+ return nil
+}
+
// legacyPut single file
func legacyPut(args []string) error {
fs := flag.NewFlagSet("put", flag.ContinueOnError)
diff --git a/internal/gomote/gomote.go b/internal/gomote/gomote.go
index 3dc1500..199f3ef 100644
--- a/internal/gomote/gomote.go
+++ b/internal/gomote/gomote.go
@@ -21,6 +21,7 @@
"cloud.google.com/go/storage"
"github.com/google/uuid"
+ "golang.org/x/build/buildenv"
"golang.org/x/build/buildlet"
"golang.org/x/build/dashboard"
"golang.org/x/build/internal/access"
@@ -74,6 +75,33 @@
}
}
+// AddBootstrap adds the bootstrap version of Go to an instance and returns the URL for the bootstrap version. If no
+// bootstrap version is defined then the returned version URL will be empty.
+func (s *Server) AddBootstrap(ctx context.Context, req *protos.AddBootstrapRequest) (*protos.AddBootstrapResponse, error) {
+ creds, err := access.IAPFromContext(ctx)
+ if err != nil {
+ log.Printf("Authenticate access.IAPFromContext(ctx) = nil, %s", err)
+ return nil, status.Errorf(codes.Unauthenticated, "request does not contain the required authentication")
+ }
+ ses, bc, err := s.sessionAndClient(req.GetGomoteId(), creds.ID)
+ if err != nil {
+ // the helper function returns meaningful GRPC error.
+ return nil, err
+ }
+ bconf, ok := dashboard.Builders[ses.BuilderType]
+ if !ok {
+ return nil, status.Errorf(codes.Internal, "unknown builder type")
+ }
+ url := bconf.GoBootstrapURL(buildenv.Production)
+ if url == "" {
+ return &protos.AddBootstrapResponse{}, nil
+ }
+ if err = bc.PutTarFromURL(ctx, url, "go1.4"); err != nil {
+ return nil, status.Errorf(codes.Internal, "unable to download bootstrap Go")
+ }
+ return &protos.AddBootstrapResponse{BootstrapGoUrl: url}, nil
+}
+
// Authenticate will allow the caller to verify that they are properly authenticated and authorized to interact with the
// Service.
func (s *Server) Authenticate(ctx context.Context, req *protos.AuthenticateRequest) (*protos.AuthenticateResponse, error) {
diff --git a/internal/gomote/gomote_test.go b/internal/gomote/gomote_test.go
index 809f875..28c9423 100644
--- a/internal/gomote/gomote_test.go
+++ b/internal/gomote/gomote_test.go
@@ -95,6 +95,75 @@
}
}
+func TestAddBootstrapAlive(t *testing.T) {
+ client := setupGomoteTest(t, context.Background())
+ gomoteID := mustCreateInstance(t, client, fakeIAP())
+ req := &protos.AddBootstrapRequest{
+ GomoteId: gomoteID,
+ }
+ ctx := access.FakeContextWithOutgoingIAPAuth(context.Background(), fakeIAP())
+ got, err := client.AddBootstrap(ctx, req)
+ if err != nil {
+ t.Fatalf("client.AddBootstrap(ctx, %v) = %v, %s; want no error", req, got, err)
+ }
+}
+
+func TestAddBootstrapError(t *testing.T) {
+ // This test will create a gomote instance and attempt to call AddBootstrap.
+ // If overrideID is set to true, the test will use a different gomoteID than the
+ // the one created for the test.
+ testCases := []struct {
+ desc string
+ ctx context.Context
+ overrideID bool
+ gomoteID string // Used iff overrideID is true.
+ wantCode codes.Code
+ }{
+ {
+ desc: "unauthenticated request",
+ ctx: context.Background(),
+ wantCode: codes.Unauthenticated,
+ },
+ {
+ desc: "missing gomote id",
+ ctx: access.FakeContextWithOutgoingIAPAuth(context.Background(), fakeIAP()),
+ overrideID: true,
+ wantCode: codes.NotFound,
+ },
+ {
+ desc: "gomote does not exist",
+ ctx: access.FakeContextWithOutgoingIAPAuth(context.Background(), fakeIAP()),
+ overrideID: true,
+ gomoteID: "xyz",
+ wantCode: codes.NotFound,
+ },
+ {
+ desc: "gomote is not owned by caller",
+ ctx: access.FakeContextWithOutgoingIAPAuth(context.Background(), fakeIAPWithUser("user-x", "email-y")),
+ wantCode: codes.PermissionDenied,
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ client := setupGomoteTest(t, context.Background())
+ gomoteID := mustCreateInstance(t, client, fakeIAP())
+ if tc.overrideID {
+ gomoteID = tc.gomoteID
+ }
+ req := &protos.AddBootstrapRequest{
+ GomoteId: gomoteID,
+ }
+ got, err := client.AddBootstrap(tc.ctx, req)
+ if err != nil && status.Code(err) != tc.wantCode {
+ t.Fatalf("unexpected error: %s; want %s", err, tc.wantCode)
+ }
+ if err == nil {
+ t.Fatalf("client.AddBootstrap(ctx, %v) = %v, nil; want error", req, got)
+ }
+ })
+ }
+}
+
func TestCreateInstance(t *testing.T) {
ctx := access.FakeContextWithOutgoingIAPAuth(context.Background(), fakeIAP())
req := &protos.CreateInstanceRequest{BuilderType: "linux-amd64"}
diff --git a/internal/gomote/protos/gomote.pb.go b/internal/gomote/protos/gomote.pb.go
index 13c8425..176d0d6 100644
--- a/internal/gomote/protos/gomote.pb.go
+++ b/internal/gomote/protos/gomote.pb.go
@@ -70,7 +70,7 @@
// Deprecated: Use CreateInstanceResponse_Status.Descriptor instead.
func (CreateInstanceResponse_Status) EnumDescriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{3, 0}
+ return file_gomote_proto_rawDescGZIP(), []int{5, 0}
}
// AuthenticateRequest specifies the data needed for an authentication request.
@@ -199,6 +199,107 @@
return ""
}
+// AddBootstrapRequest specifies the data needed for a request to add the bootstrap version of Go
+// to the instance.
+type AddBootstrapRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The unique identifier for a gomote instance.
+ GomoteId string `protobuf:"bytes,1,opt,name=gomote_id,json=gomoteId,proto3" json:"gomote_id,omitempty"`
+}
+
+func (x *AddBootstrapRequest) Reset() {
+ *x = AddBootstrapRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gomote_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AddBootstrapRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddBootstrapRequest) ProtoMessage() {}
+
+func (x *AddBootstrapRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_gomote_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AddBootstrapRequest.ProtoReflect.Descriptor instead.
+func (*AddBootstrapRequest) Descriptor() ([]byte, []int) {
+ return file_gomote_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *AddBootstrapRequest) GetGomoteId() string {
+ if x != nil {
+ return x.GomoteId
+ }
+ return ""
+}
+
+// AddBootstrapResponse contains the information about the add bootstrap request.
+type AddBootstrapResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The URL for the Go version added to the work directory.
+ // If empty, the bootstrap version is undefined and has probably been included in
+ // the instance image.
+ BootstrapGoUrl string `protobuf:"bytes,1,opt,name=bootstrap_go_url,json=bootstrapGoUrl,proto3" json:"bootstrap_go_url,omitempty"`
+}
+
+func (x *AddBootstrapResponse) Reset() {
+ *x = AddBootstrapResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_gomote_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AddBootstrapResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddBootstrapResponse) ProtoMessage() {}
+
+func (x *AddBootstrapResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_gomote_proto_msgTypes[4]
+ 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 AddBootstrapResponse.ProtoReflect.Descriptor instead.
+func (*AddBootstrapResponse) Descriptor() ([]byte, []int) {
+ return file_gomote_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *AddBootstrapResponse) GetBootstrapGoUrl() string {
+ if x != nil {
+ return x.BootstrapGoUrl
+ }
+ return ""
+}
+
// CreateInstanceResponse contains data about a created gomote instance.
type CreateInstanceResponse struct {
state protoimpl.MessageState
@@ -217,7 +318,7 @@
func (x *CreateInstanceResponse) Reset() {
*x = CreateInstanceResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[3]
+ mi := &file_gomote_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -230,7 +331,7 @@
func (*CreateInstanceResponse) ProtoMessage() {}
func (x *CreateInstanceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[3]
+ mi := &file_gomote_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -243,7 +344,7 @@
// Deprecated: Use CreateInstanceResponse.ProtoReflect.Descriptor instead.
func (*CreateInstanceResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{3}
+ return file_gomote_proto_rawDescGZIP(), []int{5}
}
func (x *CreateInstanceResponse) GetInstance() *Instance {
@@ -280,7 +381,7 @@
func (x *DestroyInstanceRequest) Reset() {
*x = DestroyInstanceRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[4]
+ mi := &file_gomote_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -293,7 +394,7 @@
func (*DestroyInstanceRequest) ProtoMessage() {}
func (x *DestroyInstanceRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[4]
+ mi := &file_gomote_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -306,7 +407,7 @@
// Deprecated: Use DestroyInstanceRequest.ProtoReflect.Descriptor instead.
func (*DestroyInstanceRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{4}
+ return file_gomote_proto_rawDescGZIP(), []int{6}
}
func (x *DestroyInstanceRequest) GetGomoteId() string {
@@ -326,7 +427,7 @@
func (x *DestroyInstanceResponse) Reset() {
*x = DestroyInstanceResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[5]
+ mi := &file_gomote_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -339,7 +440,7 @@
func (*DestroyInstanceResponse) ProtoMessage() {}
func (x *DestroyInstanceResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[5]
+ mi := &file_gomote_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -352,7 +453,7 @@
// Deprecated: Use DestroyInstanceResponse.ProtoReflect.Descriptor instead.
func (*DestroyInstanceResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{5}
+ return file_gomote_proto_rawDescGZIP(), []int{7}
}
// ExecuteCommandRequest specifies the data needed to execute a command on a gomote instance.
@@ -390,7 +491,7 @@
func (x *ExecuteCommandRequest) Reset() {
*x = ExecuteCommandRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[6]
+ mi := &file_gomote_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -403,7 +504,7 @@
func (*ExecuteCommandRequest) ProtoMessage() {}
func (x *ExecuteCommandRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[6]
+ mi := &file_gomote_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -416,7 +517,7 @@
// Deprecated: Use ExecuteCommandRequest.ProtoReflect.Descriptor instead.
func (*ExecuteCommandRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{6}
+ return file_gomote_proto_rawDescGZIP(), []int{8}
}
func (x *ExecuteCommandRequest) GetGomoteId() string {
@@ -495,7 +596,7 @@
func (x *ExecuteCommandResponse) Reset() {
*x = ExecuteCommandResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[7]
+ mi := &file_gomote_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -508,7 +609,7 @@
func (*ExecuteCommandResponse) ProtoMessage() {}
func (x *ExecuteCommandResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[7]
+ mi := &file_gomote_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -521,7 +622,7 @@
// Deprecated: Use ExecuteCommandResponse.ProtoReflect.Descriptor instead.
func (*ExecuteCommandResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{7}
+ return file_gomote_proto_rawDescGZIP(), []int{9}
}
func (x *ExecuteCommandResponse) GetOutput() string {
@@ -551,7 +652,7 @@
func (x *Instance) Reset() {
*x = Instance{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[8]
+ mi := &file_gomote_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -564,7 +665,7 @@
func (*Instance) ProtoMessage() {}
func (x *Instance) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[8]
+ mi := &file_gomote_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -577,7 +678,7 @@
// Deprecated: Use Instance.ProtoReflect.Descriptor instead.
func (*Instance) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{8}
+ return file_gomote_proto_rawDescGZIP(), []int{10}
}
func (x *Instance) GetGomoteId() string {
@@ -621,7 +722,7 @@
func (x *InstanceAliveRequest) Reset() {
*x = InstanceAliveRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[9]
+ mi := &file_gomote_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -634,7 +735,7 @@
func (*InstanceAliveRequest) ProtoMessage() {}
func (x *InstanceAliveRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[9]
+ mi := &file_gomote_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -647,7 +748,7 @@
// Deprecated: Use InstanceAliveRequest.ProtoReflect.Descriptor instead.
func (*InstanceAliveRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{9}
+ return file_gomote_proto_rawDescGZIP(), []int{11}
}
func (x *InstanceAliveRequest) GetGomoteId() string {
@@ -667,7 +768,7 @@
func (x *InstanceAliveResponse) Reset() {
*x = InstanceAliveResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[10]
+ mi := &file_gomote_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -680,7 +781,7 @@
func (*InstanceAliveResponse) ProtoMessage() {}
func (x *InstanceAliveResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[10]
+ mi := &file_gomote_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -693,7 +794,7 @@
// Deprecated: Use InstanceAliveResponse.ProtoReflect.Descriptor instead.
func (*InstanceAliveResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{10}
+ return file_gomote_proto_rawDescGZIP(), []int{12}
}
// ListDirectoryRequest specifies the data needed to list contents of a directory from a gomote instance.
@@ -718,7 +819,7 @@
func (x *ListDirectoryRequest) Reset() {
*x = ListDirectoryRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[11]
+ mi := &file_gomote_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -731,7 +832,7 @@
func (*ListDirectoryRequest) ProtoMessage() {}
func (x *ListDirectoryRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[11]
+ mi := &file_gomote_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -744,7 +845,7 @@
// Deprecated: Use ListDirectoryRequest.ProtoReflect.Descriptor instead.
func (*ListDirectoryRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{11}
+ return file_gomote_proto_rawDescGZIP(), []int{13}
}
func (x *ListDirectoryRequest) GetGomoteId() string {
@@ -795,7 +896,7 @@
func (x *ListDirectoryResponse) Reset() {
*x = ListDirectoryResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[12]
+ mi := &file_gomote_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -808,7 +909,7 @@
func (*ListDirectoryResponse) ProtoMessage() {}
func (x *ListDirectoryResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[12]
+ mi := &file_gomote_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -821,7 +922,7 @@
// Deprecated: Use ListDirectoryResponse.ProtoReflect.Descriptor instead.
func (*ListDirectoryResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{12}
+ return file_gomote_proto_rawDescGZIP(), []int{14}
}
func (x *ListDirectoryResponse) GetEntries() []string {
@@ -841,7 +942,7 @@
func (x *ListInstancesRequest) Reset() {
*x = ListInstancesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[13]
+ mi := &file_gomote_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -854,7 +955,7 @@
func (*ListInstancesRequest) ProtoMessage() {}
func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[13]
+ mi := &file_gomote_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -867,7 +968,7 @@
// Deprecated: Use ListInstancesRequest.ProtoReflect.Descriptor instead.
func (*ListInstancesRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{13}
+ return file_gomote_proto_rawDescGZIP(), []int{15}
}
// ListInstancesResponse contains the list of live gomote instances owned by the caller.
@@ -882,7 +983,7 @@
func (x *ListInstancesResponse) Reset() {
*x = ListInstancesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[14]
+ mi := &file_gomote_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -895,7 +996,7 @@
func (*ListInstancesResponse) ProtoMessage() {}
func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[14]
+ mi := &file_gomote_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -908,7 +1009,7 @@
// Deprecated: Use ListInstancesResponse.ProtoReflect.Descriptor instead.
func (*ListInstancesResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{14}
+ return file_gomote_proto_rawDescGZIP(), []int{16}
}
func (x *ListInstancesResponse) GetInstances() []*Instance {
@@ -933,7 +1034,7 @@
func (x *ReadTGZToURLRequest) Reset() {
*x = ReadTGZToURLRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[15]
+ mi := &file_gomote_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -946,7 +1047,7 @@
func (*ReadTGZToURLRequest) ProtoMessage() {}
func (x *ReadTGZToURLRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[15]
+ mi := &file_gomote_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -959,7 +1060,7 @@
// Deprecated: Use ReadTGZToURLRequest.ProtoReflect.Descriptor instead.
func (*ReadTGZToURLRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{15}
+ return file_gomote_proto_rawDescGZIP(), []int{17}
}
func (x *ReadTGZToURLRequest) GetGomoteId() string {
@@ -989,7 +1090,7 @@
func (x *ReadTGZToURLResponse) Reset() {
*x = ReadTGZToURLResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[16]
+ mi := &file_gomote_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1002,7 +1103,7 @@
func (*ReadTGZToURLResponse) ProtoMessage() {}
func (x *ReadTGZToURLResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[16]
+ mi := &file_gomote_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1015,7 +1116,7 @@
// Deprecated: Use ReadTGZToURLResponse.ProtoReflect.Descriptor instead.
func (*ReadTGZToURLResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{16}
+ return file_gomote_proto_rawDescGZIP(), []int{18}
}
func (x *ReadTGZToURLResponse) GetUrl() string {
@@ -1042,7 +1143,7 @@
func (x *RemoveFilesRequest) Reset() {
*x = RemoveFilesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[17]
+ mi := &file_gomote_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1055,7 +1156,7 @@
func (*RemoveFilesRequest) ProtoMessage() {}
func (x *RemoveFilesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[17]
+ mi := &file_gomote_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1068,7 +1169,7 @@
// Deprecated: Use RemoveFilesRequest.ProtoReflect.Descriptor instead.
func (*RemoveFilesRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{17}
+ return file_gomote_proto_rawDescGZIP(), []int{19}
}
func (x *RemoveFilesRequest) GetGomoteId() string {
@@ -1095,7 +1196,7 @@
func (x *RemoveFilesResponse) Reset() {
*x = RemoveFilesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[18]
+ mi := &file_gomote_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1108,7 +1209,7 @@
func (*RemoveFilesResponse) ProtoMessage() {}
func (x *RemoveFilesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[18]
+ mi := &file_gomote_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1121,7 +1222,7 @@
// Deprecated: Use RemoveFilesResponse.ProtoReflect.Descriptor instead.
func (*RemoveFilesResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{18}
+ return file_gomote_proto_rawDescGZIP(), []int{20}
}
// SignSSHKeyRequest specifies the data needed to sign a public SSH key which attaches a certificate to the key.
@@ -1139,7 +1240,7 @@
func (x *SignSSHKeyRequest) Reset() {
*x = SignSSHKeyRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[19]
+ mi := &file_gomote_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1152,7 +1253,7 @@
func (*SignSSHKeyRequest) ProtoMessage() {}
func (x *SignSSHKeyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[19]
+ mi := &file_gomote_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1165,7 +1266,7 @@
// Deprecated: Use SignSSHKeyRequest.ProtoReflect.Descriptor instead.
func (*SignSSHKeyRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{19}
+ return file_gomote_proto_rawDescGZIP(), []int{21}
}
func (x *SignSSHKeyRequest) GetGomoteId() string {
@@ -1196,7 +1297,7 @@
func (x *SignSSHKeyResponse) Reset() {
*x = SignSSHKeyResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[20]
+ mi := &file_gomote_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1209,7 +1310,7 @@
func (*SignSSHKeyResponse) ProtoMessage() {}
func (x *SignSSHKeyResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[20]
+ mi := &file_gomote_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1222,7 +1323,7 @@
// Deprecated: Use SignSSHKeyResponse.ProtoReflect.Descriptor instead.
func (*SignSSHKeyResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{20}
+ return file_gomote_proto_rawDescGZIP(), []int{22}
}
func (x *SignSSHKeyResponse) GetSignedPublicSshKey() []byte {
@@ -1242,7 +1343,7 @@
func (x *UploadFileRequest) Reset() {
*x = UploadFileRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[21]
+ mi := &file_gomote_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1255,7 +1356,7 @@
func (*UploadFileRequest) ProtoMessage() {}
func (x *UploadFileRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[21]
+ mi := &file_gomote_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1268,7 +1369,7 @@
// Deprecated: Use UploadFileRequest.ProtoReflect.Descriptor instead.
func (*UploadFileRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{21}
+ return file_gomote_proto_rawDescGZIP(), []int{23}
}
// UploadFileResponse contains the results from a request to upload an object to GCS.
@@ -1288,7 +1389,7 @@
func (x *UploadFileResponse) Reset() {
*x = UploadFileResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[22]
+ mi := &file_gomote_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1301,7 +1402,7 @@
func (*UploadFileResponse) ProtoMessage() {}
func (x *UploadFileResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[22]
+ mi := &file_gomote_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1314,7 +1415,7 @@
// Deprecated: Use UploadFileResponse.ProtoReflect.Descriptor instead.
func (*UploadFileResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{22}
+ return file_gomote_proto_rawDescGZIP(), []int{24}
}
func (x *UploadFileResponse) GetUrl() string {
@@ -1358,7 +1459,7 @@
func (x *WriteFileFromURLRequest) Reset() {
*x = WriteFileFromURLRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[23]
+ mi := &file_gomote_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1371,7 +1472,7 @@
func (*WriteFileFromURLRequest) ProtoMessage() {}
func (x *WriteFileFromURLRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[23]
+ mi := &file_gomote_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1384,7 +1485,7 @@
// Deprecated: Use WriteFileFromURLRequest.ProtoReflect.Descriptor instead.
func (*WriteFileFromURLRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{23}
+ return file_gomote_proto_rawDescGZIP(), []int{25}
}
func (x *WriteFileFromURLRequest) GetGomoteId() string {
@@ -1425,7 +1526,7 @@
func (x *WriteFileFromURLResponse) Reset() {
*x = WriteFileFromURLResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[24]
+ mi := &file_gomote_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1438,7 +1539,7 @@
func (*WriteFileFromURLResponse) ProtoMessage() {}
func (x *WriteFileFromURLResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[24]
+ mi := &file_gomote_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1451,7 +1552,7 @@
// Deprecated: Use WriteFileFromURLResponse.ProtoReflect.Descriptor instead.
func (*WriteFileFromURLResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{24}
+ return file_gomote_proto_rawDescGZIP(), []int{26}
}
// WriteTGZFromURLRequest specifies the data needed to retrieve a file and expand it onto the file system of a gomote instance.
@@ -1472,7 +1573,7 @@
func (x *WriteTGZFromURLRequest) Reset() {
*x = WriteTGZFromURLRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[25]
+ mi := &file_gomote_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1485,7 +1586,7 @@
func (*WriteTGZFromURLRequest) ProtoMessage() {}
func (x *WriteTGZFromURLRequest) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[25]
+ mi := &file_gomote_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1498,7 +1599,7 @@
// Deprecated: Use WriteTGZFromURLRequest.ProtoReflect.Descriptor instead.
func (*WriteTGZFromURLRequest) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{25}
+ return file_gomote_proto_rawDescGZIP(), []int{27}
}
func (x *WriteTGZFromURLRequest) GetGomoteId() string {
@@ -1532,7 +1633,7 @@
func (x *WriteTGZFromURLResponse) Reset() {
*x = WriteTGZFromURLResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_gomote_proto_msgTypes[26]
+ mi := &file_gomote_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1545,7 +1646,7 @@
func (*WriteTGZFromURLResponse) ProtoMessage() {}
func (x *WriteTGZFromURLResponse) ProtoReflect() protoreflect.Message {
- mi := &file_gomote_proto_msgTypes[26]
+ mi := &file_gomote_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1558,7 +1659,7 @@
// Deprecated: Use WriteTGZFromURLResponse.ProtoReflect.Descriptor instead.
func (*WriteTGZFromURLResponse) Descriptor() ([]byte, []int) {
- return file_gomote_proto_rawDescGZIP(), []int{26}
+ return file_gomote_proto_rawDescGZIP(), []int{28}
}
var File_gomote_proto protoreflect.FileDescriptor
@@ -1572,205 +1673,217 @@
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21,
0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70,
- 0x65, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08,
- 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69,
- 0x74, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x65, 0x72, 0x73, 0x41, 0x68, 0x65, 0x61, 0x64, 0x22, 0x30,
- 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e,
- 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47,
- 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02,
- 0x22, 0x35, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f,
- 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67,
- 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x73, 0x74, 0x72,
- 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f,
- 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
- 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
- 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
- 0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65,
- 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65,
- 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x12, 0x2d, 0x0a, 0x12,
- 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
- 0x6e, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64,
- 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70,
- 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,
- 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a,
- 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67,
- 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x6f, 0x73,
- 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6d,
- 0x69, 0x74, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a,
- 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22,
- 0x81, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09,
- 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69,
- 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09,
- 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70,
- 0x69, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69,
- 0x72, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41,
- 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67,
+ 0x65, 0x22, 0x32, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
+ 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f,
+ 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d,
+ 0x6f, 0x74, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x6f, 0x74,
+ 0x73, 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a,
+ 0x10, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x6f, 0x5f, 0x75, 0x72,
+ 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
+ 0x61, 0x70, 0x47, 0x6f, 0x55, 0x72, 0x6c, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+ 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x69, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x68, 0x65, 0x61, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x65, 0x72, 0x73, 0x41,
+ 0x68, 0x65, 0x61, 0x64, 0x22, 0x30, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b,
+ 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57,
+ 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50,
+ 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f,
+ 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x22, 0x19, 0x0a,
+ 0x17, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x15, 0x45, 0x78, 0x65,
+ 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12,
+ 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05,
+ 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x65, 0x62,
+ 0x75, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x65, 0x6e, 0x76,
+ 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11,
+ 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6d, 0x69, 0x74, 0x61,
+ 0x74, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x54,
+ 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f,
+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12,
+ 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x79,
+ 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x14, 0x49, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x22, 0x17,
+ 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
+ 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a,
+ 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72,
+ 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
+ 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69,
+ 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73,
+ 0x6b, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65,
+ 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
+ 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72,
+ 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x74,
+ 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72,
+ 0x69, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x15, 0x4c,
+ 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54,
+ 0x6f, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67,
0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
- 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f,
- 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67,
- 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65,
- 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69,
- 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73,
- 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x69, 0x6c, 0x65,
- 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x69, 0x6c,
- 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69,
- 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x16, 0x0a,
- 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e,
- 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x50,
- 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x52, 0x65,
+ 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47,
+ 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10,
+ 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
+ 0x22, 0x47, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74,
+ 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x56, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
- 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79,
- 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x47, 0x0a, 0x12, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a,
- 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61,
- 0x74, 0x68, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x0a, 0x11, 0x53, 0x69,
- 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e,
- 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x73, 0x68, 0x4b,
- 0x65, 0x79, 0x22, 0x47, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x73, 0x69, 0x67, 0x6e,
- 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x22, 0x13, 0x0a, 0x11, 0x55,
- 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x22, 0xc2, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x06, 0x66, 0x69, 0x65,
- 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a,
- 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
- 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69,
- 0x65, 0x6c, 0x64, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69,
- 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a,
- 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
- 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d,
- 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22,
- 0x1a, 0x0a, 0x18, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d,
- 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x0a, 0x16, 0x57,
- 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
- 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72,
- 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa0, 0x08,
- 0x0a, 0x0d, 0x47, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
- 0x4b, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12,
- 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e,
- 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30,
- 0x01, 0x12, 0x54, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x65,
- 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x65,
- 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75,
- 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
- 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x0d,
- 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41,
- 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69,
- 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0d,
- 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63,
- 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
- 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0d,
- 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c,
- 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x1b, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55,
- 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, 0x52, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65,
- 0x79, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x53,
- 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x55, 0x70,
- 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x55, 0x70, 0x6c,
- 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x57, 0x0a, 0x10, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72,
- 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x57,
+ 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x73, 0x73, 0x68,
+ 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x75, 0x62, 0x6c,
+ 0x69, 0x63, 0x53, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x22, 0x47, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e,
+ 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31,
+ 0x0a, 0x15, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+ 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x73,
+ 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x73, 0x68, 0x4b, 0x65,
+ 0x79, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc2, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61,
+ 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a,
+ 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
+ 0x3e, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46,
+ 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c,
+ 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65,
+ 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, 0x17, 0x57,
0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
- 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0f, 0x57, 0x72,
- 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x12, 0x1e, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46,
- 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46,
- 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x78,
- 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
- 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x6f, 0x6d, 0x6f, 0x74,
+ 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x52,
+ 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69,
+ 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x65, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72, 0x6f,
+ 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67,
+ 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69,
+ 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74,
+ 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x32, 0xed, 0x08, 0x0a, 0x0d, 0x47, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x65,
+ 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74,
+ 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41,
+ 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68,
+ 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
+ 0x61, 0x70, 0x12, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x42,
+ 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x6f, 0x6f, 0x74,
+ 0x73, 0x74, 0x72, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x53, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x30, 0x01, 0x12, 0x54, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49,
+ 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2e, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1d, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d,
+ 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d,
+ 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12,
+ 0x4e, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65,
+ 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+ 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79,
+ 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69,
+ 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73,
+ 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x4b, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x12,
+ 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a,
+ 0x54, 0x6f, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x47, 0x5a, 0x54, 0x6f, 0x55,
+ 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b,
+ 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53,
+ 0x48, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69,
+ 0x67, 0x6e, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x53, 0x53, 0x48,
+ 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a,
+ 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
+ 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c,
+ 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x55,
+ 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x72, 0x6f, 0x6d,
+ 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a,
+ 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c,
+ 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54,
+ 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54,
+ 0x47, 0x5a, 0x46, 0x72, 0x6f, 0x6d, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+ 0x67, 0x2f, 0x78, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+ 0x61, 0x6c, 0x2f, 0x67, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1786,71 +1899,75 @@
}
var file_gomote_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_gomote_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_gomote_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_gomote_proto_goTypes = []interface{}{
(CreateInstanceResponse_Status)(0), // 0: protos.CreateInstanceResponse.Status
(*AuthenticateRequest)(nil), // 1: protos.AuthenticateRequest
(*AuthenticateResponse)(nil), // 2: protos.AuthenticateResponse
(*CreateInstanceRequest)(nil), // 3: protos.CreateInstanceRequest
- (*CreateInstanceResponse)(nil), // 4: protos.CreateInstanceResponse
- (*DestroyInstanceRequest)(nil), // 5: protos.DestroyInstanceRequest
- (*DestroyInstanceResponse)(nil), // 6: protos.DestroyInstanceResponse
- (*ExecuteCommandRequest)(nil), // 7: protos.ExecuteCommandRequest
- (*ExecuteCommandResponse)(nil), // 8: protos.ExecuteCommandResponse
- (*Instance)(nil), // 9: protos.Instance
- (*InstanceAliveRequest)(nil), // 10: protos.InstanceAliveRequest
- (*InstanceAliveResponse)(nil), // 11: protos.InstanceAliveResponse
- (*ListDirectoryRequest)(nil), // 12: protos.ListDirectoryRequest
- (*ListDirectoryResponse)(nil), // 13: protos.ListDirectoryResponse
- (*ListInstancesRequest)(nil), // 14: protos.ListInstancesRequest
- (*ListInstancesResponse)(nil), // 15: protos.ListInstancesResponse
- (*ReadTGZToURLRequest)(nil), // 16: protos.ReadTGZToURLRequest
- (*ReadTGZToURLResponse)(nil), // 17: protos.ReadTGZToURLResponse
- (*RemoveFilesRequest)(nil), // 18: protos.RemoveFilesRequest
- (*RemoveFilesResponse)(nil), // 19: protos.RemoveFilesResponse
- (*SignSSHKeyRequest)(nil), // 20: protos.SignSSHKeyRequest
- (*SignSSHKeyResponse)(nil), // 21: protos.SignSSHKeyResponse
- (*UploadFileRequest)(nil), // 22: protos.UploadFileRequest
- (*UploadFileResponse)(nil), // 23: protos.UploadFileResponse
- (*WriteFileFromURLRequest)(nil), // 24: protos.WriteFileFromURLRequest
- (*WriteFileFromURLResponse)(nil), // 25: protos.WriteFileFromURLResponse
- (*WriteTGZFromURLRequest)(nil), // 26: protos.WriteTGZFromURLRequest
- (*WriteTGZFromURLResponse)(nil), // 27: protos.WriteTGZFromURLResponse
- nil, // 28: protos.UploadFileResponse.FieldsEntry
+ (*AddBootstrapRequest)(nil), // 4: protos.AddBootstrapRequest
+ (*AddBootstrapResponse)(nil), // 5: protos.AddBootstrapResponse
+ (*CreateInstanceResponse)(nil), // 6: protos.CreateInstanceResponse
+ (*DestroyInstanceRequest)(nil), // 7: protos.DestroyInstanceRequest
+ (*DestroyInstanceResponse)(nil), // 8: protos.DestroyInstanceResponse
+ (*ExecuteCommandRequest)(nil), // 9: protos.ExecuteCommandRequest
+ (*ExecuteCommandResponse)(nil), // 10: protos.ExecuteCommandResponse
+ (*Instance)(nil), // 11: protos.Instance
+ (*InstanceAliveRequest)(nil), // 12: protos.InstanceAliveRequest
+ (*InstanceAliveResponse)(nil), // 13: protos.InstanceAliveResponse
+ (*ListDirectoryRequest)(nil), // 14: protos.ListDirectoryRequest
+ (*ListDirectoryResponse)(nil), // 15: protos.ListDirectoryResponse
+ (*ListInstancesRequest)(nil), // 16: protos.ListInstancesRequest
+ (*ListInstancesResponse)(nil), // 17: protos.ListInstancesResponse
+ (*ReadTGZToURLRequest)(nil), // 18: protos.ReadTGZToURLRequest
+ (*ReadTGZToURLResponse)(nil), // 19: protos.ReadTGZToURLResponse
+ (*RemoveFilesRequest)(nil), // 20: protos.RemoveFilesRequest
+ (*RemoveFilesResponse)(nil), // 21: protos.RemoveFilesResponse
+ (*SignSSHKeyRequest)(nil), // 22: protos.SignSSHKeyRequest
+ (*SignSSHKeyResponse)(nil), // 23: protos.SignSSHKeyResponse
+ (*UploadFileRequest)(nil), // 24: protos.UploadFileRequest
+ (*UploadFileResponse)(nil), // 25: protos.UploadFileResponse
+ (*WriteFileFromURLRequest)(nil), // 26: protos.WriteFileFromURLRequest
+ (*WriteFileFromURLResponse)(nil), // 27: protos.WriteFileFromURLResponse
+ (*WriteTGZFromURLRequest)(nil), // 28: protos.WriteTGZFromURLRequest
+ (*WriteTGZFromURLResponse)(nil), // 29: protos.WriteTGZFromURLResponse
+ nil, // 30: protos.UploadFileResponse.FieldsEntry
}
var file_gomote_proto_depIdxs = []int32{
- 9, // 0: protos.CreateInstanceResponse.instance:type_name -> protos.Instance
+ 11, // 0: protos.CreateInstanceResponse.instance:type_name -> protos.Instance
0, // 1: protos.CreateInstanceResponse.status:type_name -> protos.CreateInstanceResponse.Status
- 9, // 2: protos.ListInstancesResponse.instances:type_name -> protos.Instance
- 28, // 3: protos.UploadFileResponse.fields:type_name -> protos.UploadFileResponse.FieldsEntry
+ 11, // 2: protos.ListInstancesResponse.instances:type_name -> protos.Instance
+ 30, // 3: protos.UploadFileResponse.fields:type_name -> protos.UploadFileResponse.FieldsEntry
1, // 4: protos.GomoteService.Authenticate:input_type -> protos.AuthenticateRequest
- 3, // 5: protos.GomoteService.CreateInstance:input_type -> protos.CreateInstanceRequest
- 5, // 6: protos.GomoteService.DestroyInstance:input_type -> protos.DestroyInstanceRequest
- 7, // 7: protos.GomoteService.ExecuteCommand:input_type -> protos.ExecuteCommandRequest
- 10, // 8: protos.GomoteService.InstanceAlive:input_type -> protos.InstanceAliveRequest
- 12, // 9: protos.GomoteService.ListDirectory:input_type -> protos.ListDirectoryRequest
- 14, // 10: protos.GomoteService.ListInstances:input_type -> protos.ListInstancesRequest
- 16, // 11: protos.GomoteService.ReadTGZToURL:input_type -> protos.ReadTGZToURLRequest
- 18, // 12: protos.GomoteService.RemoveFiles:input_type -> protos.RemoveFilesRequest
- 20, // 13: protos.GomoteService.SignSSHKey:input_type -> protos.SignSSHKeyRequest
- 22, // 14: protos.GomoteService.UploadFile:input_type -> protos.UploadFileRequest
- 24, // 15: protos.GomoteService.WriteFileFromURL:input_type -> protos.WriteFileFromURLRequest
- 26, // 16: protos.GomoteService.WriteTGZFromURL:input_type -> protos.WriteTGZFromURLRequest
- 2, // 17: protos.GomoteService.Authenticate:output_type -> protos.AuthenticateResponse
- 4, // 18: protos.GomoteService.CreateInstance:output_type -> protos.CreateInstanceResponse
- 6, // 19: protos.GomoteService.DestroyInstance:output_type -> protos.DestroyInstanceResponse
- 8, // 20: protos.GomoteService.ExecuteCommand:output_type -> protos.ExecuteCommandResponse
- 11, // 21: protos.GomoteService.InstanceAlive:output_type -> protos.InstanceAliveResponse
- 13, // 22: protos.GomoteService.ListDirectory:output_type -> protos.ListDirectoryResponse
- 15, // 23: protos.GomoteService.ListInstances:output_type -> protos.ListInstancesResponse
- 17, // 24: protos.GomoteService.ReadTGZToURL:output_type -> protos.ReadTGZToURLResponse
- 19, // 25: protos.GomoteService.RemoveFiles:output_type -> protos.RemoveFilesResponse
- 21, // 26: protos.GomoteService.SignSSHKey:output_type -> protos.SignSSHKeyResponse
- 23, // 27: protos.GomoteService.UploadFile:output_type -> protos.UploadFileResponse
- 25, // 28: protos.GomoteService.WriteFileFromURL:output_type -> protos.WriteFileFromURLResponse
- 27, // 29: protos.GomoteService.WriteTGZFromURL:output_type -> protos.WriteTGZFromURLResponse
- 17, // [17:30] is the sub-list for method output_type
- 4, // [4:17] is the sub-list for method input_type
+ 4, // 5: protos.GomoteService.AddBootstrap:input_type -> protos.AddBootstrapRequest
+ 3, // 6: protos.GomoteService.CreateInstance:input_type -> protos.CreateInstanceRequest
+ 7, // 7: protos.GomoteService.DestroyInstance:input_type -> protos.DestroyInstanceRequest
+ 9, // 8: protos.GomoteService.ExecuteCommand:input_type -> protos.ExecuteCommandRequest
+ 12, // 9: protos.GomoteService.InstanceAlive:input_type -> protos.InstanceAliveRequest
+ 14, // 10: protos.GomoteService.ListDirectory:input_type -> protos.ListDirectoryRequest
+ 16, // 11: protos.GomoteService.ListInstances:input_type -> protos.ListInstancesRequest
+ 18, // 12: protos.GomoteService.ReadTGZToURL:input_type -> protos.ReadTGZToURLRequest
+ 20, // 13: protos.GomoteService.RemoveFiles:input_type -> protos.RemoveFilesRequest
+ 22, // 14: protos.GomoteService.SignSSHKey:input_type -> protos.SignSSHKeyRequest
+ 24, // 15: protos.GomoteService.UploadFile:input_type -> protos.UploadFileRequest
+ 26, // 16: protos.GomoteService.WriteFileFromURL:input_type -> protos.WriteFileFromURLRequest
+ 28, // 17: protos.GomoteService.WriteTGZFromURL:input_type -> protos.WriteTGZFromURLRequest
+ 2, // 18: protos.GomoteService.Authenticate:output_type -> protos.AuthenticateResponse
+ 5, // 19: protos.GomoteService.AddBootstrap:output_type -> protos.AddBootstrapResponse
+ 6, // 20: protos.GomoteService.CreateInstance:output_type -> protos.CreateInstanceResponse
+ 8, // 21: protos.GomoteService.DestroyInstance:output_type -> protos.DestroyInstanceResponse
+ 10, // 22: protos.GomoteService.ExecuteCommand:output_type -> protos.ExecuteCommandResponse
+ 13, // 23: protos.GomoteService.InstanceAlive:output_type -> protos.InstanceAliveResponse
+ 15, // 24: protos.GomoteService.ListDirectory:output_type -> protos.ListDirectoryResponse
+ 17, // 25: protos.GomoteService.ListInstances:output_type -> protos.ListInstancesResponse
+ 19, // 26: protos.GomoteService.ReadTGZToURL:output_type -> protos.ReadTGZToURLResponse
+ 21, // 27: protos.GomoteService.RemoveFiles:output_type -> protos.RemoveFilesResponse
+ 23, // 28: protos.GomoteService.SignSSHKey:output_type -> protos.SignSSHKeyResponse
+ 25, // 29: protos.GomoteService.UploadFile:output_type -> protos.UploadFileResponse
+ 27, // 30: protos.GomoteService.WriteFileFromURL:output_type -> protos.WriteFileFromURLResponse
+ 29, // 31: protos.GomoteService.WriteTGZFromURL:output_type -> protos.WriteTGZFromURLResponse
+ 18, // [18:32] is the sub-list for method output_type
+ 4, // [4:18] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
@@ -1899,7 +2016,7 @@
}
}
file_gomote_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateInstanceResponse); i {
+ switch v := v.(*AddBootstrapRequest); i {
case 0:
return &v.state
case 1:
@@ -1911,7 +2028,7 @@
}
}
file_gomote_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DestroyInstanceRequest); i {
+ switch v := v.(*AddBootstrapResponse); i {
case 0:
return &v.state
case 1:
@@ -1923,7 +2040,7 @@
}
}
file_gomote_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DestroyInstanceResponse); i {
+ switch v := v.(*CreateInstanceResponse); i {
case 0:
return &v.state
case 1:
@@ -1935,7 +2052,7 @@
}
}
file_gomote_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExecuteCommandRequest); i {
+ switch v := v.(*DestroyInstanceRequest); i {
case 0:
return &v.state
case 1:
@@ -1947,7 +2064,7 @@
}
}
file_gomote_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExecuteCommandResponse); i {
+ switch v := v.(*DestroyInstanceResponse); i {
case 0:
return &v.state
case 1:
@@ -1959,7 +2076,7 @@
}
}
file_gomote_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Instance); i {
+ switch v := v.(*ExecuteCommandRequest); i {
case 0:
return &v.state
case 1:
@@ -1971,7 +2088,7 @@
}
}
file_gomote_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceAliveRequest); i {
+ switch v := v.(*ExecuteCommandResponse); i {
case 0:
return &v.state
case 1:
@@ -1983,7 +2100,7 @@
}
}
file_gomote_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InstanceAliveResponse); i {
+ switch v := v.(*Instance); i {
case 0:
return &v.state
case 1:
@@ -1995,7 +2112,7 @@
}
}
file_gomote_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListDirectoryRequest); i {
+ switch v := v.(*InstanceAliveRequest); i {
case 0:
return &v.state
case 1:
@@ -2007,7 +2124,7 @@
}
}
file_gomote_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListDirectoryResponse); i {
+ switch v := v.(*InstanceAliveResponse); i {
case 0:
return &v.state
case 1:
@@ -2019,7 +2136,7 @@
}
}
file_gomote_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListInstancesRequest); i {
+ switch v := v.(*ListDirectoryRequest); i {
case 0:
return &v.state
case 1:
@@ -2031,7 +2148,7 @@
}
}
file_gomote_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListInstancesResponse); i {
+ switch v := v.(*ListDirectoryResponse); i {
case 0:
return &v.state
case 1:
@@ -2043,7 +2160,7 @@
}
}
file_gomote_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReadTGZToURLRequest); i {
+ switch v := v.(*ListInstancesRequest); i {
case 0:
return &v.state
case 1:
@@ -2055,7 +2172,7 @@
}
}
file_gomote_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReadTGZToURLResponse); i {
+ switch v := v.(*ListInstancesResponse); i {
case 0:
return &v.state
case 1:
@@ -2067,7 +2184,7 @@
}
}
file_gomote_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveFilesRequest); i {
+ switch v := v.(*ReadTGZToURLRequest); i {
case 0:
return &v.state
case 1:
@@ -2079,7 +2196,7 @@
}
}
file_gomote_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveFilesResponse); i {
+ switch v := v.(*ReadTGZToURLResponse); i {
case 0:
return &v.state
case 1:
@@ -2091,7 +2208,7 @@
}
}
file_gomote_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SignSSHKeyRequest); i {
+ switch v := v.(*RemoveFilesRequest); i {
case 0:
return &v.state
case 1:
@@ -2103,7 +2220,7 @@
}
}
file_gomote_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SignSSHKeyResponse); i {
+ switch v := v.(*RemoveFilesResponse); i {
case 0:
return &v.state
case 1:
@@ -2115,7 +2232,7 @@
}
}
file_gomote_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UploadFileRequest); i {
+ switch v := v.(*SignSSHKeyRequest); i {
case 0:
return &v.state
case 1:
@@ -2127,7 +2244,7 @@
}
}
file_gomote_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UploadFileResponse); i {
+ switch v := v.(*SignSSHKeyResponse); i {
case 0:
return &v.state
case 1:
@@ -2139,7 +2256,7 @@
}
}
file_gomote_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WriteFileFromURLRequest); i {
+ switch v := v.(*UploadFileRequest); i {
case 0:
return &v.state
case 1:
@@ -2151,7 +2268,7 @@
}
}
file_gomote_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WriteFileFromURLResponse); i {
+ switch v := v.(*UploadFileResponse); i {
case 0:
return &v.state
case 1:
@@ -2163,7 +2280,7 @@
}
}
file_gomote_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*WriteTGZFromURLRequest); i {
+ switch v := v.(*WriteFileFromURLRequest); i {
case 0:
return &v.state
case 1:
@@ -2175,6 +2292,30 @@
}
}
file_gomote_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WriteFileFromURLResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gomote_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*WriteTGZFromURLRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_gomote_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WriteTGZFromURLResponse); i {
case 0:
return &v.state
@@ -2193,7 +2334,7 @@
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_gomote_proto_rawDesc,
NumEnums: 1,
- NumMessages: 28,
+ NumMessages: 30,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/internal/gomote/protos/gomote.proto b/internal/gomote/protos/gomote.proto
index b370378..f93531e 100644
--- a/internal/gomote/protos/gomote.proto
+++ b/internal/gomote/protos/gomote.proto
@@ -12,6 +12,8 @@
service GomoteService {
// Authenticate provides authentication information without any additional action.
rpc Authenticate (AuthenticateRequest) returns (AuthenticateResponse) {}
+ // AddBootstrap adds the bootstrap version of Go to the work directory.
+ rpc AddBootstrap (AddBootstrapRequest) returns (AddBootstrapResponse) {}
// CreateInstance creates a gomote instance.
rpc CreateInstance (CreateInstanceRequest) returns (stream CreateInstanceResponse) {}
// DestroyInstance destroys a gomote instance.
@@ -51,6 +53,21 @@
string builder_type = 1;
}
+// AddBootstrapRequest specifies the data needed for a request to add the bootstrap version of Go
+// to the instance.
+message AddBootstrapRequest {
+ // The unique identifier for a gomote instance.
+ string gomote_id = 1;
+}
+
+// AddBootstrapResponse contains the information about the add bootstrap request.
+message AddBootstrapResponse {
+ // The URL for the Go version added to the work directory.
+ // If empty, the bootstrap version is undefined and has probably been included in
+ // the instance image.
+ string bootstrap_go_url = 1;
+}
+
// CreateInstanceResponse contains data about a created gomote instance.
message CreateInstanceResponse {
// Instance information for the requested instance.
diff --git a/internal/gomote/protos/gomote_grpc.pb.go b/internal/gomote/protos/gomote_grpc.pb.go
index 9f14aa5..423e43f 100644
--- a/internal/gomote/protos/gomote_grpc.pb.go
+++ b/internal/gomote/protos/gomote_grpc.pb.go
@@ -20,6 +20,8 @@
type GomoteServiceClient interface {
// Authenticate provides authentication information without any additional action.
Authenticate(ctx context.Context, in *AuthenticateRequest, opts ...grpc.CallOption) (*AuthenticateResponse, error)
+ // AddBootstrap adds the bootstrap version of Go to the work directory.
+ AddBootstrap(ctx context.Context, in *AddBootstrapRequest, opts ...grpc.CallOption) (*AddBootstrapResponse, error)
// CreateInstance creates a gomote instance.
CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (GomoteService_CreateInstanceClient, error)
// DestroyInstance destroys a gomote instance.
@@ -65,6 +67,15 @@
return out, nil
}
+func (c *gomoteServiceClient) AddBootstrap(ctx context.Context, in *AddBootstrapRequest, opts ...grpc.CallOption) (*AddBootstrapResponse, error) {
+ out := new(AddBootstrapResponse)
+ err := c.cc.Invoke(ctx, "/protos.GomoteService/AddBootstrap", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *gomoteServiceClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (GomoteService_CreateInstanceClient, error) {
stream, err := c.cc.NewStream(ctx, &GomoteService_ServiceDesc.Streams[0], "/protos.GomoteService/CreateInstance", opts...)
if err != nil {
@@ -225,6 +236,8 @@
type GomoteServiceServer interface {
// Authenticate provides authentication information without any additional action.
Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error)
+ // AddBootstrap adds the bootstrap version of Go to the work directory.
+ AddBootstrap(context.Context, *AddBootstrapRequest) (*AddBootstrapResponse, error)
// CreateInstance creates a gomote instance.
CreateInstance(*CreateInstanceRequest, GomoteService_CreateInstanceServer) error
// DestroyInstance destroys a gomote instance.
@@ -261,6 +274,9 @@
func (UnimplementedGomoteServiceServer) Authenticate(context.Context, *AuthenticateRequest) (*AuthenticateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented")
}
+func (UnimplementedGomoteServiceServer) AddBootstrap(context.Context, *AddBootstrapRequest) (*AddBootstrapResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method AddBootstrap not implemented")
+}
func (UnimplementedGomoteServiceServer) CreateInstance(*CreateInstanceRequest, GomoteService_CreateInstanceServer) error {
return status.Errorf(codes.Unimplemented, "method CreateInstance not implemented")
}
@@ -328,6 +344,24 @@
return interceptor(ctx, in, info, handler)
}
+func _GomoteService_AddBootstrap_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddBootstrapRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GomoteServiceServer).AddBootstrap(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/protos.GomoteService/AddBootstrap",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GomoteServiceServer).AddBootstrap(ctx, req.(*AddBootstrapRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _GomoteService_CreateInstance_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(CreateInstanceRequest)
if err := stream.RecvMsg(m); err != nil {
@@ -562,6 +596,10 @@
Handler: _GomoteService_Authenticate_Handler,
},
{
+ MethodName: "AddBootstrap",
+ Handler: _GomoteService_AddBootstrap_Handler,
+ },
+ {
MethodName: "DestroyInstance",
Handler: _GomoteService_DestroyInstance_Handler,
},