diff --git a/api/client/admin.go b/api/client/admin.go index 7339d8f15..f92c240ab 100644 --- a/api/client/admin.go +++ b/api/client/admin.go @@ -11,14 +11,14 @@ type Admin struct { client proto.PowergateAdminServiceClient } -// CreateInstance creates a new FFS instance, returning the instance ID and auth token. -func (a *Admin) CreateInstance(ctx context.Context) (*proto.CreateInstanceResponse, error) { - return a.client.CreateInstance(ctx, &proto.CreateInstanceRequest{}) +// CreateStorageProfile creates a new Powergate storage profile, returning the instance ID and auth token. +func (a *Admin) CreateStorageProfile(ctx context.Context) (*proto.CreateStorageProfileResponse, error) { + return a.client.CreateStorageProfile(ctx, &proto.CreateStorageProfileRequest{}) } -// ListInstances returns a list of existing API instances. -func (a *Admin) ListInstances(ctx context.Context) (*proto.ListInstancesResponse, error) { - return a.client.ListInstances(ctx, &proto.ListInstancesRequest{}) +// ListStorageProfiles returns a list of existing API instances. +func (a *Admin) ListStorageProfiles(ctx context.Context) (*proto.ListStorageProfilesResponse, error) { + return a.client.ListStorageProfiles(ctx, &proto.ListStorageProfilesRequest{}) } // QueuedStorageJobs returns a list of queued storage jobs. diff --git a/api/client/admin_test.go b/api/client/admin_test.go index 7556787ad..326d2584d 100644 --- a/api/client/admin_test.go +++ b/api/client/admin_test.go @@ -16,10 +16,10 @@ func TestCreate(t *testing.T) { a, done := setupAdmin(t, "") defer done() - resp, err := a.CreateInstance(ctx) + resp, err := a.CreateStorageProfile(ctx) require.NoError(t, err) - require.NotEmpty(t, resp.Id) - require.NotEmpty(t, resp.Token) + require.NotEmpty(t, resp.AuthEntry.Id) + require.NotEmpty(t, resp.AuthEntry.Token) }) t.Run("WithAdminToken", func(t *testing.T) { @@ -28,7 +28,7 @@ func TestCreate(t *testing.T) { defer done() t.Run("UnauthorizedEmpty", func(t *testing.T) { - resp, err := a.CreateInstance(ctx) + resp, err := a.CreateStorageProfile(ctx) require.Error(t, err) require.Nil(t, resp) }) @@ -40,7 +40,7 @@ func TestCreate(t *testing.T) { } for _, auth := range wrongAuths { ctx := context.WithValue(ctx, AdminKey, auth) - resp, err := a.CreateInstance(ctx) + resp, err := a.CreateStorageProfile(ctx) st, ok := status.FromError(err) require.True(t, ok) require.Equal(t, codes.PermissionDenied, st.Code()) @@ -49,10 +49,10 @@ func TestCreate(t *testing.T) { }) t.Run("Authorized", func(t *testing.T) { ctx := context.WithValue(ctx, AdminKey, authToken) - resp, err := a.CreateInstance(ctx) + resp, err := a.CreateStorageProfile(ctx) require.NoError(t, err) - require.NotEmpty(t, resp.Id) - require.NotEmpty(t, resp.Token) + require.NotEmpty(t, resp.AuthEntry.Id) + require.NotEmpty(t, resp.AuthEntry.Token) }) }) } diff --git a/api/server/admin/instances.go b/api/server/admin/instances.go deleted file mode 100644 index 7a976fb27..000000000 --- a/api/server/admin/instances.go +++ /dev/null @@ -1,36 +0,0 @@ -package admin - -import ( - "context" - - proto "github.com/textileio/powergate/proto/admin/v1" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -// CreateInstance creates a new managed instance. -func (a *Service) CreateInstance(ctx context.Context, req *proto.CreateInstanceRequest) (*proto.CreateInstanceResponse, error) { - id, token, err := a.m.Create(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating instance: %v", err) - } - return &proto.CreateInstanceResponse{ - Id: id.String(), - Token: token, - }, nil -} - -// ListInstances lists all managed instances. -func (a *Service) ListInstances(ctx context.Context, req *proto.ListInstancesRequest) (*proto.ListInstancesResponse, error) { - lst, err := a.m.List() - if err != nil { - return nil, status.Errorf(codes.Internal, "listing instances: %v", err) - } - ins := make([]string, len(lst)) - for i, v := range lst { - ins[i] = v.String() - } - return &proto.ListInstancesResponse{ - Instances: ins, - }, nil -} diff --git a/api/server/admin/storageprofiles.go b/api/server/admin/storageprofiles.go new file mode 100644 index 000000000..3daa3709a --- /dev/null +++ b/api/server/admin/storageprofiles.go @@ -0,0 +1,41 @@ +package admin + +import ( + "context" + + proto "github.com/textileio/powergate/proto/admin/v1" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// CreateStorageProfile creates a new managed instance. +func (a *Service) CreateStorageProfile(ctx context.Context, req *proto.CreateStorageProfileRequest) (*proto.CreateStorageProfileResponse, error) { + id, token, err := a.m.Create(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating instance: %v", err) + } + return &proto.CreateStorageProfileResponse{ + AuthEntry: &proto.AuthEntry{ + Id: id.String(), + Token: token, + }, + }, nil +} + +// ListStorageProfiles lists all managed instances. +func (a *Service) ListStorageProfiles(ctx context.Context, req *proto.ListStorageProfilesRequest) (*proto.ListStorageProfilesResponse, error) { + lst, err := a.m.List() + if err != nil { + return nil, status.Errorf(codes.Internal, "listing storage profiles: %v", err) + } + ins := make([]*proto.AuthEntry, len(lst)) + for i, v := range lst { + ins[i] = &proto.AuthEntry{ + Id: v.APIID.String(), + Token: v.Token, + } + } + return &proto.ListStorageProfilesResponse{ + AuthEntries: ins, + }, nil +} diff --git a/cli-docs/pow/pow_admin.md b/cli-docs/pow/pow_admin.md index c494cfe95..a24982821 100644 --- a/cli-docs/pow/pow_admin.md +++ b/cli-docs/pow/pow_admin.md @@ -22,11 +22,11 @@ Provides admin commands ### SEE ALSO * [pow](pow.md) - A client for storage and retreival of powergate data -* [pow admin create-instance](pow_admin_create-instance.md) - Create a powergate FFS instance. +* [pow admin create-profile](pow_admin_create-profile.md) - Create a Powergate storage profile. * [pow admin executing](pow_admin_executing.md) - List executing storage jobs -* [pow admin instances](pow_admin_instances.md) - List all powergate FFS instances. * [pow admin latest-final](pow_admin_latest-final.md) - List the latest final storage jobs * [pow admin latest-successful](pow_admin_latest-successful.md) - List the latest successful storage jobs +* [pow admin profiles](pow_admin_profiles.md) - List all Powergate storage profiles. * [pow admin queued](pow_admin_queued.md) - List queued storage jobs * [pow admin summary](pow_admin_summary.md) - Give a summary of storage jobs in all states diff --git a/cli-docs/pow/pow_admin_create-instance.md b/cli-docs/pow/pow_admin_create-profile.md similarity index 64% rename from cli-docs/pow/pow_admin_create-instance.md rename to cli-docs/pow/pow_admin_create-profile.md index b01c0cbba..acd937a59 100644 --- a/cli-docs/pow/pow_admin_create-instance.md +++ b/cli-docs/pow/pow_admin_create-profile.md @@ -1,19 +1,19 @@ -## pow admin create-instance +## pow admin create-profile -Create a powergate FFS instance. +Create a Powergate storage profile. ### Synopsis -Create a powergate FFS instance. +Create a Powergate storage profile. ``` -pow admin create-instance [flags] +pow admin create-profile [flags] ``` ### Options ``` - -h, --help help for create-instance + -h, --help help for create-profile ``` ### Options inherited from parent commands diff --git a/cli-docs/pow/pow_admin_instances.md b/cli-docs/pow/pow_admin_profiles.md similarity index 66% rename from cli-docs/pow/pow_admin_instances.md rename to cli-docs/pow/pow_admin_profiles.md index 6ba6931e3..c400982d5 100644 --- a/cli-docs/pow/pow_admin_instances.md +++ b/cli-docs/pow/pow_admin_profiles.md @@ -1,19 +1,19 @@ -## pow admin instances +## pow admin profiles -List all powergate FFS instances. +List all Powergate storage profiles. ### Synopsis -List all powergate FFS instances. +List all Powergate storage profiles. ``` -pow admin instances [flags] +pow admin profiles [flags] ``` ### Options ``` - -h, --help help for instances + -h, --help help for profiles ``` ### Options inherited from parent commands diff --git a/cmd/pow/cmd/admin.go b/cmd/pow/cmd/admin.go index 37e0e9c3d..f4b79d09b 100644 --- a/cmd/pow/cmd/admin.go +++ b/cmd/pow/cmd/admin.go @@ -46,9 +46,9 @@ var adminCmd = &cobra.Command{ } var adminCreateInstanceCmd = &cobra.Command{ - Use: "create-instance", - Short: "Create a powergate FFS instance.", - Long: `Create a powergate FFS instance.`, + Use: "create-profile", + Short: "Create a Powergate storage profile.", + Long: `Create a Powergate storage profile.`, Args: cobra.NoArgs, PreRun: func(cmd *cobra.Command, args []string) { err := viper.BindPFlags(cmd.Flags()) @@ -58,7 +58,7 @@ var adminCreateInstanceCmd = &cobra.Command{ ctx, cancel := context.WithTimeout(context.Background(), cmdTimeout) defer cancel() - res, err := fcClient.Admin.CreateInstance(adminAuthCtx(ctx)) + res, err := fcClient.Admin.CreateStorageProfile(adminAuthCtx(ctx)) checkErr(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) @@ -69,9 +69,9 @@ var adminCreateInstanceCmd = &cobra.Command{ } var adminInstancesCmd = &cobra.Command{ - Use: "instances", - Short: "List all powergate FFS instances.", - Long: `List all powergate FFS instances.`, + Use: "profiles", + Short: "List all Powergate storage profiles.", + Long: `List all Powergate storage profiles.`, Args: cobra.NoArgs, PreRun: func(cmd *cobra.Command, args []string) { err := viper.BindPFlags(cmd.Flags()) @@ -81,7 +81,7 @@ var adminInstancesCmd = &cobra.Command{ ctx, cancel := context.WithTimeout(context.Background(), cmdTimeout) defer cancel() - res, err := fcClient.Admin.ListInstances(adminAuthCtx(ctx)) + res, err := fcClient.Admin.ListStorageProfiles(adminAuthCtx(ctx)) checkErr(err) json, err := protojson.MarshalOptions{Multiline: true, Indent: " ", EmitUnpopulated: true}.Marshal(res) diff --git a/cmd/powbench/runner/runner.go b/cmd/powbench/runner/runner.go index 000b8d6b4..5a896b987 100644 --- a/cmd/powbench/runner/runner.go +++ b/cmd/powbench/runner/runner.go @@ -63,11 +63,11 @@ func sanityCheck(ctx context.Context, c *client.Client) error { } func runSetup(ctx context.Context, c *client.Client, ts TestSetup) error { - res, err := c.Admin.CreateInstance(ctx) + res, err := c.Admin.CreateStorageProfile(ctx) if err != nil { return fmt.Errorf("creating ffs instance: %s", err) } - ctx = context.WithValue(ctx, client.AuthKey, res.Token) + ctx = context.WithValue(ctx, client.AuthKey, res.AuthEntry.Token) res2, err := c.FFS.Addrs(ctx) if err != nil { return fmt.Errorf("getting instance info: %s", err) diff --git a/ffs/auth/auth.go b/ffs/auth/auth.go index 1a35dcd7d..dfd74f1f3 100644 --- a/ffs/auth/auth.go +++ b/ffs/auth/auth.go @@ -26,12 +26,6 @@ type Auth struct { ds ds.Datastore } -type entry struct { - Token string - APIID ffs.APIID - // This can be extended to have permissions -} - // New returns a new Auth. func New(store ds.Datastore) *Auth { return &Auth{ @@ -44,7 +38,7 @@ func (r *Auth) Generate(iid ffs.APIID) (string, error) { log.Infof("generating auth-token for instance %s", iid) r.lock.Lock() defer r.lock.Unlock() - e := entry{ + e := ffs.AuthEntry{ Token: uuid.New().String(), APIID: iid, } @@ -71,7 +65,7 @@ func (r *Auth) Get(token string) (ffs.APIID, error) { if err != nil { return ffs.EmptyInstanceID, fmt.Errorf("getting token %s from datastore: %s", token, err) } - var e entry + var e ffs.AuthEntry if err := json.Unmarshal(buf, &e); err != nil { return ffs.EmptyInstanceID, fmt.Errorf("unmarshaling %s information from datastore: %s", token, err) } @@ -79,7 +73,7 @@ func (r *Auth) Get(token string) (ffs.APIID, error) { } // List returns a list of all API instances. -func (r *Auth) List() ([]ffs.APIID, error) { +func (r *Auth) List() ([]ffs.AuthEntry, error) { r.lock.Lock() defer r.lock.Unlock() q := query.Query{Prefix: ""} @@ -93,16 +87,16 @@ func (r *Auth) List() ([]ffs.APIID, error) { } }() - var ret []ffs.APIID + var ret []ffs.AuthEntry for r := range res.Next() { if r.Error != nil { return nil, fmt.Errorf("iter next: %s", r.Error) } - var e entry + var e ffs.AuthEntry if err := json.Unmarshal(r.Entry.Value, &e); err != nil { return nil, fmt.Errorf("unmarshaling query result: %s", err) } - ret = append(ret, e.APIID) + ret = append(ret, e) } return ret, nil } diff --git a/ffs/manager/manager.go b/ffs/manager/manager.go index b9a38bfb6..2d198c42f 100644 --- a/ffs/manager/manager.go +++ b/ffs/manager/manager.go @@ -169,7 +169,7 @@ func (m *Manager) SetDefaultStorageConfig(dc ffs.StorageConfig) error { } // List returns a list of all existing API instances. -func (m *Manager) List() ([]ffs.APIID, error) { +func (m *Manager) List() ([]ffs.AuthEntry, error) { m.lock.Lock() defer m.lock.Unlock() diff --git a/ffs/types.go b/ffs/types.go index f5ff7f355..ef9a4aba1 100644 --- a/ffs/types.go +++ b/ffs/types.go @@ -72,6 +72,12 @@ func (i APIID) String() string { return string(i) } +// AuthEntry encapsulates auth info for a FFS instance. +type AuthEntry struct { + Token string + APIID APIID +} + // JobStatus is a type for Job statuses. type JobStatus int diff --git a/proto/admin/v1/powergate_admin.pb.go b/proto/admin/v1/powergate_admin.pb.go index 23a6c734a..0b2c7aa09 100644 --- a/proto/admin/v1/powergate_admin.pb.go +++ b/proto/admin/v1/powergate_admin.pb.go @@ -30,14 +30,17 @@ const ( // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 -type CreateInstanceRequest struct { +type AuthEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` } -func (x *CreateInstanceRequest) Reset() { - *x = CreateInstanceRequest{} +func (x *AuthEntry) Reset() { + *x = AuthEntry{} if protoimpl.UnsafeEnabled { mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -45,13 +48,13 @@ func (x *CreateInstanceRequest) Reset() { } } -func (x *CreateInstanceRequest) String() string { +func (x *AuthEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateInstanceRequest) ProtoMessage() {} +func (*AuthEntry) ProtoMessage() {} -func (x *CreateInstanceRequest) ProtoReflect() protoreflect.Message { +func (x *AuthEntry) ProtoReflect() protoreflect.Message { mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -63,22 +66,33 @@ func (x *CreateInstanceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateInstanceRequest.ProtoReflect.Descriptor instead. -func (*CreateInstanceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AuthEntry.ProtoReflect.Descriptor instead. +func (*AuthEntry) Descriptor() ([]byte, []int) { return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{0} } -type CreateInstanceResponse struct { +func (x *AuthEntry) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AuthEntry) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type CreateStorageProfileRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` } -func (x *CreateInstanceResponse) Reset() { - *x = CreateInstanceResponse{} +func (x *CreateStorageProfileRequest) Reset() { + *x = CreateStorageProfileRequest{} if protoimpl.UnsafeEnabled { mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -86,13 +100,13 @@ func (x *CreateInstanceResponse) Reset() { } } -func (x *CreateInstanceResponse) String() string { +func (x *CreateStorageProfileRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateInstanceResponse) ProtoMessage() {} +func (*CreateStorageProfileRequest) ProtoMessage() {} -func (x *CreateInstanceResponse) ProtoReflect() protoreflect.Message { +func (x *CreateStorageProfileRequest) ProtoReflect() protoreflect.Message { mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -104,48 +118,81 @@ func (x *CreateInstanceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateInstanceResponse.ProtoReflect.Descriptor instead. -func (*CreateInstanceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateStorageProfileRequest.ProtoReflect.Descriptor instead. +func (*CreateStorageProfileRequest) Descriptor() ([]byte, []int) { return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{1} } -func (x *CreateInstanceResponse) GetId() string { - if x != nil { - return x.Id +type CreateStorageProfileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AuthEntry *AuthEntry `protobuf:"bytes,1,opt,name=auth_entry,json=authEntry,proto3" json:"auth_entry,omitempty"` +} + +func (x *CreateStorageProfileResponse) Reset() { + *x = CreateStorageProfileResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *CreateInstanceResponse) GetToken() string { +func (x *CreateStorageProfileResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateStorageProfileResponse) ProtoMessage() {} + +func (x *CreateStorageProfileResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[2] + 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 CreateStorageProfileResponse.ProtoReflect.Descriptor instead. +func (*CreateStorageProfileResponse) Descriptor() ([]byte, []int) { + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{2} +} + +func (x *CreateStorageProfileResponse) GetAuthEntry() *AuthEntry { if x != nil { - return x.Token + return x.AuthEntry } - return "" + return nil } -type ListInstancesRequest struct { +type ListStorageProfilesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *ListInstancesRequest) Reset() { - *x = ListInstancesRequest{} +func (x *ListStorageProfilesRequest) Reset() { + *x = ListStorageProfilesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[2] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListInstancesRequest) String() string { +func (x *ListStorageProfilesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListInstancesRequest) ProtoMessage() {} +func (*ListStorageProfilesRequest) ProtoMessage() {} -func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[2] +func (x *ListStorageProfilesRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -156,36 +203,36 @@ func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListInstancesRequest.ProtoReflect.Descriptor instead. -func (*ListInstancesRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{2} +// Deprecated: Use ListStorageProfilesRequest.ProtoReflect.Descriptor instead. +func (*ListStorageProfilesRequest) Descriptor() ([]byte, []int) { + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{3} } -type ListInstancesResponse struct { +type ListStorageProfilesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Instances []string `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"` + AuthEntries []*AuthEntry `protobuf:"bytes,1,rep,name=auth_entries,json=authEntries,proto3" json:"auth_entries,omitempty"` } -func (x *ListInstancesResponse) Reset() { - *x = ListInstancesResponse{} +func (x *ListStorageProfilesResponse) Reset() { + *x = ListStorageProfilesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[3] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListInstancesResponse) String() string { +func (x *ListStorageProfilesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListInstancesResponse) ProtoMessage() {} +func (*ListStorageProfilesResponse) ProtoMessage() {} -func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[3] +func (x *ListStorageProfilesResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,14 +243,14 @@ func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListInstancesResponse.ProtoReflect.Descriptor instead. -func (*ListInstancesResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{3} +// Deprecated: Use ListStorageProfilesResponse.ProtoReflect.Descriptor instead. +func (*ListStorageProfilesResponse) Descriptor() ([]byte, []int) { + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{4} } -func (x *ListInstancesResponse) GetInstances() []string { +func (x *ListStorageProfilesResponse) GetAuthEntries() []*AuthEntry { if x != nil { - return x.Instances + return x.AuthEntries } return nil } @@ -220,7 +267,7 @@ type QueuedStorageJobsRequest struct { func (x *QueuedStorageJobsRequest) Reset() { *x = QueuedStorageJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[4] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -233,7 +280,7 @@ func (x *QueuedStorageJobsRequest) String() string { func (*QueuedStorageJobsRequest) ProtoMessage() {} func (x *QueuedStorageJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[4] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -246,7 +293,7 @@ func (x *QueuedStorageJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueuedStorageJobsRequest.ProtoReflect.Descriptor instead. func (*QueuedStorageJobsRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{4} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{5} } func (x *QueuedStorageJobsRequest) GetInstanceId() string { @@ -274,7 +321,7 @@ type QueuedStorageJobsResponse struct { func (x *QueuedStorageJobsResponse) Reset() { *x = QueuedStorageJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[5] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -287,7 +334,7 @@ func (x *QueuedStorageJobsResponse) String() string { func (*QueuedStorageJobsResponse) ProtoMessage() {} func (x *QueuedStorageJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[5] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -300,7 +347,7 @@ func (x *QueuedStorageJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueuedStorageJobsResponse.ProtoReflect.Descriptor instead. func (*QueuedStorageJobsResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{5} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{6} } func (x *QueuedStorageJobsResponse) GetStorageJobs() []*rpc.Job { @@ -322,7 +369,7 @@ type ExecutingStorageJobsRequest struct { func (x *ExecutingStorageJobsRequest) Reset() { *x = ExecutingStorageJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[6] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -335,7 +382,7 @@ func (x *ExecutingStorageJobsRequest) String() string { func (*ExecutingStorageJobsRequest) ProtoMessage() {} func (x *ExecutingStorageJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[6] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -348,7 +395,7 @@ func (x *ExecutingStorageJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutingStorageJobsRequest.ProtoReflect.Descriptor instead. func (*ExecutingStorageJobsRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{6} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{7} } func (x *ExecutingStorageJobsRequest) GetInstanceId() string { @@ -376,7 +423,7 @@ type ExecutingStorageJobsResponse struct { func (x *ExecutingStorageJobsResponse) Reset() { *x = ExecutingStorageJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[7] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -389,7 +436,7 @@ func (x *ExecutingStorageJobsResponse) String() string { func (*ExecutingStorageJobsResponse) ProtoMessage() {} func (x *ExecutingStorageJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[7] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -402,7 +449,7 @@ func (x *ExecutingStorageJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutingStorageJobsResponse.ProtoReflect.Descriptor instead. func (*ExecutingStorageJobsResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{7} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{8} } func (x *ExecutingStorageJobsResponse) GetStorageJobs() []*rpc.Job { @@ -424,7 +471,7 @@ type LatestFinalStorageJobsRequest struct { func (x *LatestFinalStorageJobsRequest) Reset() { *x = LatestFinalStorageJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[8] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -437,7 +484,7 @@ func (x *LatestFinalStorageJobsRequest) String() string { func (*LatestFinalStorageJobsRequest) ProtoMessage() {} func (x *LatestFinalStorageJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[8] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -450,7 +497,7 @@ func (x *LatestFinalStorageJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LatestFinalStorageJobsRequest.ProtoReflect.Descriptor instead. func (*LatestFinalStorageJobsRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{8} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{9} } func (x *LatestFinalStorageJobsRequest) GetInstanceId() string { @@ -478,7 +525,7 @@ type LatestFinalStorageJobsResponse struct { func (x *LatestFinalStorageJobsResponse) Reset() { *x = LatestFinalStorageJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[9] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +538,7 @@ func (x *LatestFinalStorageJobsResponse) String() string { func (*LatestFinalStorageJobsResponse) ProtoMessage() {} func (x *LatestFinalStorageJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[9] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +551,7 @@ func (x *LatestFinalStorageJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LatestFinalStorageJobsResponse.ProtoReflect.Descriptor instead. func (*LatestFinalStorageJobsResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{9} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{10} } func (x *LatestFinalStorageJobsResponse) GetStorageJobs() []*rpc.Job { @@ -526,7 +573,7 @@ type LatestSuccessfulStorageJobsRequest struct { func (x *LatestSuccessfulStorageJobsRequest) Reset() { *x = LatestSuccessfulStorageJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[10] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -539,7 +586,7 @@ func (x *LatestSuccessfulStorageJobsRequest) String() string { func (*LatestSuccessfulStorageJobsRequest) ProtoMessage() {} func (x *LatestSuccessfulStorageJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[10] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -552,7 +599,7 @@ func (x *LatestSuccessfulStorageJobsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use LatestSuccessfulStorageJobsRequest.ProtoReflect.Descriptor instead. func (*LatestSuccessfulStorageJobsRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{10} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{11} } func (x *LatestSuccessfulStorageJobsRequest) GetInstanceId() string { @@ -580,7 +627,7 @@ type LatestSuccessfulStorageJobsResponse struct { func (x *LatestSuccessfulStorageJobsResponse) Reset() { *x = LatestSuccessfulStorageJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[11] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -593,7 +640,7 @@ func (x *LatestSuccessfulStorageJobsResponse) String() string { func (*LatestSuccessfulStorageJobsResponse) ProtoMessage() {} func (x *LatestSuccessfulStorageJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[11] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -606,7 +653,7 @@ func (x *LatestSuccessfulStorageJobsResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use LatestSuccessfulStorageJobsResponse.ProtoReflect.Descriptor instead. func (*LatestSuccessfulStorageJobsResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{11} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{12} } func (x *LatestSuccessfulStorageJobsResponse) GetStorageJobs() []*rpc.Job { @@ -628,7 +675,7 @@ type StorageJobsSummaryRequest struct { func (x *StorageJobsSummaryRequest) Reset() { *x = StorageJobsSummaryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[12] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +688,7 @@ func (x *StorageJobsSummaryRequest) String() string { func (*StorageJobsSummaryRequest) ProtoMessage() {} func (x *StorageJobsSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[12] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +701,7 @@ func (x *StorageJobsSummaryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageJobsSummaryRequest.ProtoReflect.Descriptor instead. func (*StorageJobsSummaryRequest) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{12} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{13} } func (x *StorageJobsSummaryRequest) GetInstanceId() string { @@ -686,7 +733,7 @@ type StorageJobsSummaryResponse struct { func (x *StorageJobsSummaryResponse) Reset() { *x = StorageJobsSummaryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[13] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -699,7 +746,7 @@ func (x *StorageJobsSummaryResponse) String() string { func (*StorageJobsSummaryResponse) ProtoMessage() {} func (x *StorageJobsSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[13] + mi := &file_proto_admin_v1_powergate_admin_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -712,7 +759,7 @@ func (x *StorageJobsSummaryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageJobsSummaryResponse.ProtoReflect.Descriptor instead. func (*StorageJobsSummaryResponse) Descriptor() ([]byte, []int) { - return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{13} + return file_proto_admin_v1_powergate_admin_proto_rawDescGZIP(), []int{14} } func (x *StorageJobsSummaryResponse) GetJobCounts() *rpc.JobCounts { @@ -757,142 +804,153 @@ var file_proto_admin_v1_powergate_admin_proto_rawDesc = []byte{ 0x2f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x66, 0x66, 0x73, 0x2f, 0x72, 0x70, 0x63, 0x2f, - 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x17, 0x0a, 0x15, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x3e, 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, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 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, 0x35, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0x4f, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, - 0x64, 0x73, 0x22, 0x4c, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, + 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31, 0x0a, 0x09, 0x41, 0x75, 0x74, + 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x1c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x22, 0x4f, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, + 0x73, 0x22, 0x4c, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, + 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, + 0x6f, 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x22, + 0x52, 0x0a, 0x1b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, + 0x69, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, + 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x54, 0x0a, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, + 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x73, 0x22, 0x51, 0x0a, 0x1e, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0c, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x59, 0x0a, + 0x22, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, + 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x73, 0x22, 0x56, 0x0a, 0x23, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, - 0x22, 0x52, 0x0a, 0x1b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x63, 0x69, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, - 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x54, 0x0a, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, - 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x73, 0x22, 0x51, 0x0a, 0x1e, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, - 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, - 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x59, - 0x0a, 0x22, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, - 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x64, 0x73, 0x22, 0x56, 0x0a, 0x23, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, - 0x73, 0x22, 0x50, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x69, 0x64, 0x73, 0x22, 0xed, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, - 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, - 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x13, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x22, 0x50, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, + 0x64, 0x73, 0x22, 0xed, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, + 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x13, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x11, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, + 0x62, 0x73, 0x12, 0x42, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, - 0x52, 0x11, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, - 0x6f, 0x62, 0x73, 0x12, 0x42, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, - 0x62, 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x47, 0x0a, 0x19, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, - 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, - 0x12, 0x51, 0x0a, 0x1e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, - 0x62, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, - 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x1b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, - 0x6f, 0x62, 0x73, 0x32, 0xb0, 0x06, 0x0a, 0x15, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x67, 0x61, 0x74, - 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 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, - 0x12, 0x5e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 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, 0x6a, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, - 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x14, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x47, 0x0a, 0x19, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, + 0x6f, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, + 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, + 0x51, 0x0a, 0x1e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x62, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x66, 0x73, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x1b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, + 0x62, 0x73, 0x32, 0xd4, 0x06, 0x0a, 0x15, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x67, 0x61, 0x74, 0x65, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x14, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x79, 0x0a, 0x16, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, - 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, - 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, - 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x32, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, - 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, 0x6f, 0x2f, 0x70, - 0x6f, 0x77, 0x65, 0x72, 0x67, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x70, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x73, 0x0a, 0x14, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x16, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, + 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x2d, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x88, 0x01, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, + 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, + 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x66, 0x75, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x12, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6c, 0x65, 0x69, + 0x6f, 0x2f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x67, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -907,54 +965,57 @@ func file_proto_admin_v1_powergate_admin_proto_rawDescGZIP() []byte { return file_proto_admin_v1_powergate_admin_proto_rawDescData } -var file_proto_admin_v1_powergate_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_proto_admin_v1_powergate_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_proto_admin_v1_powergate_admin_proto_goTypes = []interface{}{ - (*CreateInstanceRequest)(nil), // 0: proto.admin.v1.CreateInstanceRequest - (*CreateInstanceResponse)(nil), // 1: proto.admin.v1.CreateInstanceResponse - (*ListInstancesRequest)(nil), // 2: proto.admin.v1.ListInstancesRequest - (*ListInstancesResponse)(nil), // 3: proto.admin.v1.ListInstancesResponse - (*QueuedStorageJobsRequest)(nil), // 4: proto.admin.v1.QueuedStorageJobsRequest - (*QueuedStorageJobsResponse)(nil), // 5: proto.admin.v1.QueuedStorageJobsResponse - (*ExecutingStorageJobsRequest)(nil), // 6: proto.admin.v1.ExecutingStorageJobsRequest - (*ExecutingStorageJobsResponse)(nil), // 7: proto.admin.v1.ExecutingStorageJobsResponse - (*LatestFinalStorageJobsRequest)(nil), // 8: proto.admin.v1.LatestFinalStorageJobsRequest - (*LatestFinalStorageJobsResponse)(nil), // 9: proto.admin.v1.LatestFinalStorageJobsResponse - (*LatestSuccessfulStorageJobsRequest)(nil), // 10: proto.admin.v1.LatestSuccessfulStorageJobsRequest - (*LatestSuccessfulStorageJobsResponse)(nil), // 11: proto.admin.v1.LatestSuccessfulStorageJobsResponse - (*StorageJobsSummaryRequest)(nil), // 12: proto.admin.v1.StorageJobsSummaryRequest - (*StorageJobsSummaryResponse)(nil), // 13: proto.admin.v1.StorageJobsSummaryResponse - (*rpc.Job)(nil), // 14: ffs.rpc.Job - (*rpc.JobCounts)(nil), // 15: ffs.rpc.JobCounts + (*AuthEntry)(nil), // 0: proto.admin.v1.AuthEntry + (*CreateStorageProfileRequest)(nil), // 1: proto.admin.v1.CreateStorageProfileRequest + (*CreateStorageProfileResponse)(nil), // 2: proto.admin.v1.CreateStorageProfileResponse + (*ListStorageProfilesRequest)(nil), // 3: proto.admin.v1.ListStorageProfilesRequest + (*ListStorageProfilesResponse)(nil), // 4: proto.admin.v1.ListStorageProfilesResponse + (*QueuedStorageJobsRequest)(nil), // 5: proto.admin.v1.QueuedStorageJobsRequest + (*QueuedStorageJobsResponse)(nil), // 6: proto.admin.v1.QueuedStorageJobsResponse + (*ExecutingStorageJobsRequest)(nil), // 7: proto.admin.v1.ExecutingStorageJobsRequest + (*ExecutingStorageJobsResponse)(nil), // 8: proto.admin.v1.ExecutingStorageJobsResponse + (*LatestFinalStorageJobsRequest)(nil), // 9: proto.admin.v1.LatestFinalStorageJobsRequest + (*LatestFinalStorageJobsResponse)(nil), // 10: proto.admin.v1.LatestFinalStorageJobsResponse + (*LatestSuccessfulStorageJobsRequest)(nil), // 11: proto.admin.v1.LatestSuccessfulStorageJobsRequest + (*LatestSuccessfulStorageJobsResponse)(nil), // 12: proto.admin.v1.LatestSuccessfulStorageJobsResponse + (*StorageJobsSummaryRequest)(nil), // 13: proto.admin.v1.StorageJobsSummaryRequest + (*StorageJobsSummaryResponse)(nil), // 14: proto.admin.v1.StorageJobsSummaryResponse + (*rpc.Job)(nil), // 15: ffs.rpc.Job + (*rpc.JobCounts)(nil), // 16: ffs.rpc.JobCounts } var file_proto_admin_v1_powergate_admin_proto_depIdxs = []int32{ - 14, // 0: proto.admin.v1.QueuedStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job - 14, // 1: proto.admin.v1.ExecutingStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job - 14, // 2: proto.admin.v1.LatestFinalStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job - 14, // 3: proto.admin.v1.LatestSuccessfulStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job - 15, // 4: proto.admin.v1.StorageJobsSummaryResponse.job_counts:type_name -> ffs.rpc.JobCounts - 14, // 5: proto.admin.v1.StorageJobsSummaryResponse.queued_storage_jobs:type_name -> ffs.rpc.Job - 14, // 6: proto.admin.v1.StorageJobsSummaryResponse.executing_storage_jobs:type_name -> ffs.rpc.Job - 14, // 7: proto.admin.v1.StorageJobsSummaryResponse.latest_final_storage_jobs:type_name -> ffs.rpc.Job - 14, // 8: proto.admin.v1.StorageJobsSummaryResponse.latest_successful_storage_jobs:type_name -> ffs.rpc.Job - 0, // 9: proto.admin.v1.PowergateAdminService.CreateInstance:input_type -> proto.admin.v1.CreateInstanceRequest - 2, // 10: proto.admin.v1.PowergateAdminService.ListInstances:input_type -> proto.admin.v1.ListInstancesRequest - 4, // 11: proto.admin.v1.PowergateAdminService.QueuedStorageJobs:input_type -> proto.admin.v1.QueuedStorageJobsRequest - 6, // 12: proto.admin.v1.PowergateAdminService.ExecutingStorageJobs:input_type -> proto.admin.v1.ExecutingStorageJobsRequest - 8, // 13: proto.admin.v1.PowergateAdminService.LatestFinalStorageJobs:input_type -> proto.admin.v1.LatestFinalStorageJobsRequest - 10, // 14: proto.admin.v1.PowergateAdminService.LatestSuccessfulStorageJobs:input_type -> proto.admin.v1.LatestSuccessfulStorageJobsRequest - 12, // 15: proto.admin.v1.PowergateAdminService.StorageJobsSummary:input_type -> proto.admin.v1.StorageJobsSummaryRequest - 1, // 16: proto.admin.v1.PowergateAdminService.CreateInstance:output_type -> proto.admin.v1.CreateInstanceResponse - 3, // 17: proto.admin.v1.PowergateAdminService.ListInstances:output_type -> proto.admin.v1.ListInstancesResponse - 5, // 18: proto.admin.v1.PowergateAdminService.QueuedStorageJobs:output_type -> proto.admin.v1.QueuedStorageJobsResponse - 7, // 19: proto.admin.v1.PowergateAdminService.ExecutingStorageJobs:output_type -> proto.admin.v1.ExecutingStorageJobsResponse - 9, // 20: proto.admin.v1.PowergateAdminService.LatestFinalStorageJobs:output_type -> proto.admin.v1.LatestFinalStorageJobsResponse - 11, // 21: proto.admin.v1.PowergateAdminService.LatestSuccessfulStorageJobs:output_type -> proto.admin.v1.LatestSuccessfulStorageJobsResponse - 13, // 22: proto.admin.v1.PowergateAdminService.StorageJobsSummary:output_type -> proto.admin.v1.StorageJobsSummaryResponse - 16, // [16:23] is the sub-list for method output_type - 9, // [9:16] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 0, // 0: proto.admin.v1.CreateStorageProfileResponse.auth_entry:type_name -> proto.admin.v1.AuthEntry + 0, // 1: proto.admin.v1.ListStorageProfilesResponse.auth_entries:type_name -> proto.admin.v1.AuthEntry + 15, // 2: proto.admin.v1.QueuedStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job + 15, // 3: proto.admin.v1.ExecutingStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job + 15, // 4: proto.admin.v1.LatestFinalStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job + 15, // 5: proto.admin.v1.LatestSuccessfulStorageJobsResponse.storage_jobs:type_name -> ffs.rpc.Job + 16, // 6: proto.admin.v1.StorageJobsSummaryResponse.job_counts:type_name -> ffs.rpc.JobCounts + 15, // 7: proto.admin.v1.StorageJobsSummaryResponse.queued_storage_jobs:type_name -> ffs.rpc.Job + 15, // 8: proto.admin.v1.StorageJobsSummaryResponse.executing_storage_jobs:type_name -> ffs.rpc.Job + 15, // 9: proto.admin.v1.StorageJobsSummaryResponse.latest_final_storage_jobs:type_name -> ffs.rpc.Job + 15, // 10: proto.admin.v1.StorageJobsSummaryResponse.latest_successful_storage_jobs:type_name -> ffs.rpc.Job + 1, // 11: proto.admin.v1.PowergateAdminService.CreateStorageProfile:input_type -> proto.admin.v1.CreateStorageProfileRequest + 3, // 12: proto.admin.v1.PowergateAdminService.ListStorageProfiles:input_type -> proto.admin.v1.ListStorageProfilesRequest + 5, // 13: proto.admin.v1.PowergateAdminService.QueuedStorageJobs:input_type -> proto.admin.v1.QueuedStorageJobsRequest + 7, // 14: proto.admin.v1.PowergateAdminService.ExecutingStorageJobs:input_type -> proto.admin.v1.ExecutingStorageJobsRequest + 9, // 15: proto.admin.v1.PowergateAdminService.LatestFinalStorageJobs:input_type -> proto.admin.v1.LatestFinalStorageJobsRequest + 11, // 16: proto.admin.v1.PowergateAdminService.LatestSuccessfulStorageJobs:input_type -> proto.admin.v1.LatestSuccessfulStorageJobsRequest + 13, // 17: proto.admin.v1.PowergateAdminService.StorageJobsSummary:input_type -> proto.admin.v1.StorageJobsSummaryRequest + 2, // 18: proto.admin.v1.PowergateAdminService.CreateStorageProfile:output_type -> proto.admin.v1.CreateStorageProfileResponse + 4, // 19: proto.admin.v1.PowergateAdminService.ListStorageProfiles:output_type -> proto.admin.v1.ListStorageProfilesResponse + 6, // 20: proto.admin.v1.PowergateAdminService.QueuedStorageJobs:output_type -> proto.admin.v1.QueuedStorageJobsResponse + 8, // 21: proto.admin.v1.PowergateAdminService.ExecutingStorageJobs:output_type -> proto.admin.v1.ExecutingStorageJobsResponse + 10, // 22: proto.admin.v1.PowergateAdminService.LatestFinalStorageJobs:output_type -> proto.admin.v1.LatestFinalStorageJobsResponse + 12, // 23: proto.admin.v1.PowergateAdminService.LatestSuccessfulStorageJobs:output_type -> proto.admin.v1.LatestSuccessfulStorageJobsResponse + 14, // 24: proto.admin.v1.PowergateAdminService.StorageJobsSummary:output_type -> proto.admin.v1.StorageJobsSummaryResponse + 18, // [18:25] is the sub-list for method output_type + 11, // [11:18] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_proto_admin_v1_powergate_admin_proto_init() } @@ -964,7 +1025,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } if !protoimpl.UnsafeEnabled { file_proto_admin_v1_powergate_admin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateInstanceRequest); i { + switch v := v.(*AuthEntry); i { case 0: return &v.state case 1: @@ -976,7 +1037,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateInstanceResponse); i { + switch v := v.(*CreateStorageProfileRequest); i { case 0: return &v.state case 1: @@ -988,7 +1049,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInstancesRequest); i { + switch v := v.(*CreateStorageProfileResponse); i { case 0: return &v.state case 1: @@ -1000,7 +1061,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListInstancesResponse); i { + switch v := v.(*ListStorageProfilesRequest); i { case 0: return &v.state case 1: @@ -1012,7 +1073,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueuedStorageJobsRequest); i { + switch v := v.(*ListStorageProfilesResponse); i { case 0: return &v.state case 1: @@ -1024,7 +1085,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueuedStorageJobsResponse); i { + switch v := v.(*QueuedStorageJobsRequest); i { case 0: return &v.state case 1: @@ -1036,7 +1097,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutingStorageJobsRequest); i { + switch v := v.(*QueuedStorageJobsResponse); i { case 0: return &v.state case 1: @@ -1048,7 +1109,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutingStorageJobsResponse); i { + switch v := v.(*ExecutingStorageJobsRequest); i { case 0: return &v.state case 1: @@ -1060,7 +1121,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestFinalStorageJobsRequest); i { + switch v := v.(*ExecutingStorageJobsResponse); i { case 0: return &v.state case 1: @@ -1072,7 +1133,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestFinalStorageJobsResponse); i { + switch v := v.(*LatestFinalStorageJobsRequest); i { case 0: return &v.state case 1: @@ -1084,7 +1145,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestSuccessfulStorageJobsRequest); i { + switch v := v.(*LatestFinalStorageJobsResponse); i { case 0: return &v.state case 1: @@ -1096,7 +1157,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestSuccessfulStorageJobsResponse); i { + switch v := v.(*LatestSuccessfulStorageJobsRequest); i { case 0: return &v.state case 1: @@ -1108,7 +1169,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageJobsSummaryRequest); i { + switch v := v.(*LatestSuccessfulStorageJobsResponse); i { case 0: return &v.state case 1: @@ -1120,6 +1181,18 @@ func file_proto_admin_v1_powergate_admin_proto_init() { } } file_proto_admin_v1_powergate_admin_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StorageJobsSummaryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_admin_v1_powergate_admin_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StorageJobsSummaryResponse); i { case 0: return &v.state @@ -1138,7 +1211,7 @@ func file_proto_admin_v1_powergate_admin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_admin_v1_powergate_admin_proto_rawDesc, NumEnums: 0, - NumMessages: 14, + NumMessages: 15, NumExtensions: 0, NumServices: 1, }, @@ -1165,8 +1238,8 @@ const _ = grpc.SupportPackageIsVersion6 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type PowergateAdminServiceClient interface { // Instances - CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*CreateInstanceResponse, error) - ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) + CreateStorageProfile(ctx context.Context, in *CreateStorageProfileRequest, opts ...grpc.CallOption) (*CreateStorageProfileResponse, error) + ListStorageProfiles(ctx context.Context, in *ListStorageProfilesRequest, opts ...grpc.CallOption) (*ListStorageProfilesResponse, error) // Jobs QueuedStorageJobs(ctx context.Context, in *QueuedStorageJobsRequest, opts ...grpc.CallOption) (*QueuedStorageJobsResponse, error) ExecutingStorageJobs(ctx context.Context, in *ExecutingStorageJobsRequest, opts ...grpc.CallOption) (*ExecutingStorageJobsResponse, error) @@ -1183,18 +1256,18 @@ func NewPowergateAdminServiceClient(cc grpc.ClientConnInterface) PowergateAdminS return &powergateAdminServiceClient{cc} } -func (c *powergateAdminServiceClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*CreateInstanceResponse, error) { - out := new(CreateInstanceResponse) - err := c.cc.Invoke(ctx, "/proto.admin.v1.PowergateAdminService/CreateInstance", in, out, opts...) +func (c *powergateAdminServiceClient) CreateStorageProfile(ctx context.Context, in *CreateStorageProfileRequest, opts ...grpc.CallOption) (*CreateStorageProfileResponse, error) { + out := new(CreateStorageProfileResponse) + err := c.cc.Invoke(ctx, "/proto.admin.v1.PowergateAdminService/CreateStorageProfile", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *powergateAdminServiceClient) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) { - out := new(ListInstancesResponse) - err := c.cc.Invoke(ctx, "/proto.admin.v1.PowergateAdminService/ListInstances", in, out, opts...) +func (c *powergateAdminServiceClient) ListStorageProfiles(ctx context.Context, in *ListStorageProfilesRequest, opts ...grpc.CallOption) (*ListStorageProfilesResponse, error) { + out := new(ListStorageProfilesResponse) + err := c.cc.Invoke(ctx, "/proto.admin.v1.PowergateAdminService/ListStorageProfiles", in, out, opts...) if err != nil { return nil, err } @@ -1249,8 +1322,8 @@ func (c *powergateAdminServiceClient) StorageJobsSummary(ctx context.Context, in // PowergateAdminServiceServer is the server API for PowergateAdminService service. type PowergateAdminServiceServer interface { // Instances - CreateInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) - ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) + CreateStorageProfile(context.Context, *CreateStorageProfileRequest) (*CreateStorageProfileResponse, error) + ListStorageProfiles(context.Context, *ListStorageProfilesRequest) (*ListStorageProfilesResponse, error) // Jobs QueuedStorageJobs(context.Context, *QueuedStorageJobsRequest) (*QueuedStorageJobsResponse, error) ExecutingStorageJobs(context.Context, *ExecutingStorageJobsRequest) (*ExecutingStorageJobsResponse, error) @@ -1263,11 +1336,11 @@ type PowergateAdminServiceServer interface { type UnimplementedPowergateAdminServiceServer struct { } -func (*UnimplementedPowergateAdminServiceServer) CreateInstance(context.Context, *CreateInstanceRequest) (*CreateInstanceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateInstance not implemented") +func (*UnimplementedPowergateAdminServiceServer) CreateStorageProfile(context.Context, *CreateStorageProfileRequest) (*CreateStorageProfileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateStorageProfile not implemented") } -func (*UnimplementedPowergateAdminServiceServer) ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListInstances not implemented") +func (*UnimplementedPowergateAdminServiceServer) ListStorageProfiles(context.Context, *ListStorageProfilesRequest) (*ListStorageProfilesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListStorageProfiles not implemented") } func (*UnimplementedPowergateAdminServiceServer) QueuedStorageJobs(context.Context, *QueuedStorageJobsRequest) (*QueuedStorageJobsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueuedStorageJobs not implemented") @@ -1289,38 +1362,38 @@ func RegisterPowergateAdminServiceServer(s *grpc.Server, srv PowergateAdminServi s.RegisterService(&_PowergateAdminService_serviceDesc, srv) } -func _PowergateAdminService_CreateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateInstanceRequest) +func _PowergateAdminService_CreateStorageProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateStorageProfileRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(PowergateAdminServiceServer).CreateInstance(ctx, in) + return srv.(PowergateAdminServiceServer).CreateStorageProfile(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/proto.admin.v1.PowergateAdminService/CreateInstance", + FullMethod: "/proto.admin.v1.PowergateAdminService/CreateStorageProfile", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PowergateAdminServiceServer).CreateInstance(ctx, req.(*CreateInstanceRequest)) + return srv.(PowergateAdminServiceServer).CreateStorageProfile(ctx, req.(*CreateStorageProfileRequest)) } return interceptor(ctx, in, info, handler) } -func _PowergateAdminService_ListInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInstancesRequest) +func _PowergateAdminService_ListStorageProfiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListStorageProfilesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(PowergateAdminServiceServer).ListInstances(ctx, in) + return srv.(PowergateAdminServiceServer).ListStorageProfiles(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/proto.admin.v1.PowergateAdminService/ListInstances", + FullMethod: "/proto.admin.v1.PowergateAdminService/ListStorageProfiles", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PowergateAdminServiceServer).ListInstances(ctx, req.(*ListInstancesRequest)) + return srv.(PowergateAdminServiceServer).ListStorageProfiles(ctx, req.(*ListStorageProfilesRequest)) } return interceptor(ctx, in, info, handler) } @@ -1420,12 +1493,12 @@ var _PowergateAdminService_serviceDesc = grpc.ServiceDesc{ HandlerType: (*PowergateAdminServiceServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "CreateInstance", - Handler: _PowergateAdminService_CreateInstance_Handler, + MethodName: "CreateStorageProfile", + Handler: _PowergateAdminService_CreateStorageProfile_Handler, }, { - MethodName: "ListInstances", - Handler: _PowergateAdminService_ListInstances_Handler, + MethodName: "ListStorageProfiles", + Handler: _PowergateAdminService_ListStorageProfiles_Handler, }, { MethodName: "QueuedStorageJobs", diff --git a/proto/admin/v1/powergate_admin.proto b/proto/admin/v1/powergate_admin.proto index e428169fd..1e371bfbd 100644 --- a/proto/admin/v1/powergate_admin.proto +++ b/proto/admin/v1/powergate_admin.proto @@ -7,19 +7,23 @@ option go_package = "github.com/textileio/powergate/proto/admin/v1"; // Instances -message CreateInstanceRequest { +message AuthEntry { + string id = 1; + string token = 2; } -message CreateInstanceResponse { - string id = 1; - string token = 2; +message CreateStorageProfileRequest { } -message ListInstancesRequest { +message CreateStorageProfileResponse { + AuthEntry auth_entry = 1; } -message ListInstancesResponse { - repeated string instances = 1; +message ListStorageProfilesRequest { +} + +message ListStorageProfilesResponse { + repeated AuthEntry auth_entries = 1; } // Jobs @@ -75,8 +79,8 @@ message StorageJobsSummaryResponse { service PowergateAdminService { // Instances - rpc CreateInstance(CreateInstanceRequest) returns (CreateInstanceResponse) {} - rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) {} + rpc CreateStorageProfile(CreateStorageProfileRequest) returns (CreateStorageProfileResponse) {} + rpc ListStorageProfiles(ListStorageProfilesRequest) returns (ListStorageProfilesResponse) {} // Jobs rpc QueuedStorageJobs(QueuedStorageJobsRequest) returns (QueuedStorageJobsResponse) {}