From 33b70d24c6186d9ea50e3824dbd773e1971170ee Mon Sep 17 00:00:00 2001 From: Venkatreddy KP Date: Sat, 19 Aug 2023 22:41:43 +0530 Subject: [PATCH] refactor store app implementation and iam client --- .../{agent_climon.go => agent_app_deploy.go} | 18 +- capten/agent/pkg/agent/agent_cluster_apps.go | 2 +- capten/agent/pkg/agentpb/agent.pb.go | 749 ++++++++++-------- capten/agent/pkg/agentpb/agent_grpc.pb.go | 12 +- .../pkg/capten-store/app_config_store.go | 13 +- capten/agent/pkg/model/payload.go | 3 +- capten/capten-sdk/agentpb/agent.pb.go | 664 ++++++++++------ capten/capten-sdk/agentpb/agent_grpc.pb.go | 37 + dockerfiles/server/Dockerfile | 2 +- proto/agent.proto | 19 +- proto/server.proto | 6 +- server/.DS_Store | Bin 6148 -> 0 bytes server/cmd/server/main.go | 14 +- server/pkg/api/store_apps.go | 6 + server/pkg/config/config.go | 13 +- server/pkg/iam-client/client.go | 56 +- server/pkg/iam-client/register_service.go | 19 +- server/pkg/ory-client/client.go | 26 +- server/pkg/pb/agentpb/agent.pb.go | 749 ++++++++++-------- server/pkg/pb/agentpb/agent_grpc.pb.go | 12 +- server/pkg/pb/serverpb/server.pb.go | 18 +- server/pkg/pb/serverpb/server_grpc.pb.go | 2 +- server/pkg/store-apps/sync_store_apps.go | 97 +++ server/pkg/store/astra/app_store.go | 11 +- server/pkg/store/astra/store.go | 82 -- server/pkg/store/astra/type.go | 9 +- server/pkg/types/type.go | 6 +- server/store-apps/app_list.yaml | 6 + .../conf}/falco.yaml | 0 .../conf}/loki.yaml | 0 .../conf}/signoz.yaml | 0 server/storeconfig/storeconfig.yaml | 11 - 32 files changed, 1526 insertions(+), 1136 deletions(-) rename capten/agent/pkg/agent/{agent_climon.go => agent_app_deploy.go} (78%) delete mode 100644 server/.DS_Store create mode 100644 server/pkg/store-apps/sync_store_apps.go create mode 100644 server/store-apps/app_list.yaml rename server/{storeconfig => store-apps/conf}/falco.yaml (100%) rename server/{storeconfig => store-apps/conf}/loki.yaml (100%) rename server/{storeconfig => store-apps/conf}/signoz.yaml (100%) delete mode 100644 server/storeconfig/storeconfig.yaml diff --git a/capten/agent/pkg/agent/agent_climon.go b/capten/agent/pkg/agent/agent_app_deploy.go similarity index 78% rename from capten/agent/pkg/agent/agent_climon.go rename to capten/agent/pkg/agent/agent_app_deploy.go index 2fd1c42e..d9a49da2 100644 --- a/capten/agent/pkg/agent/agent_climon.go +++ b/capten/agent/pkg/agent/agent_app_deploy.go @@ -38,8 +38,8 @@ func (a *Agent) ClimonAppDelete(ctx context.Context, request *agentpb.ClimonDele return prepareJobResponse(run, worker.GetWorkflowName()), err } -func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppRequest) (*agentpb.JobResponse, error) { - a.log.Infof("Recieved App Install event %+v", request) +func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppRequest) (*agentpb.InstallAppResponse, error) { + a.log.Infof("Recieved App Install request %+v", request) worker := workers.NewClimon(a.tc, a.log) config := &model.AppConfig{ @@ -56,13 +56,19 @@ func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppReque PrivilegedNamespace: request.AppConfig.PrivilegedNamespace, Icon: string(request.AppConfig.Icon), LaunchURL: request.AppConfig.LaunchURL, - // LaunchRedirectURL: request.AppConfig.LaunchRedirectURL, - ClusterName: "inbuilt", + LaunchUIDescription: request.AppConfig.LaunchUIDescription, } run, err := worker.SendInstallAppEvent(ctx, "install", config) if err != nil { - return &agentpb.JobResponse{}, err + return &agentpb.InstallAppResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "Internall error in create install app job", + }, err } - return prepareJobResponse(run, worker.GetWorkflowName()), err + return &agentpb.InstallAppResponse{ + Status: agentpb.StatusCode_OK, + StatusMessage: "success", + JobResponse: &agentpb.JobResponse{Id: run.GetID(), RunID: run.GetRunID(), WorkflowName: worker.GetWorkflowName()}, + }, nil } diff --git a/capten/agent/pkg/agent/agent_cluster_apps.go b/capten/agent/pkg/agent/agent_cluster_apps.go index 27c051a3..d27ae952 100644 --- a/capten/agent/pkg/agent/agent_cluster_apps.go +++ b/capten/agent/pkg/agent/agent_cluster_apps.go @@ -76,7 +76,7 @@ func (a *Agent) GetClusterAppLaunches(ctx context.Context, request *agentpb.GetC cfgs = append(cfgs, &agentpb.AppLaunchConfig{ ReleaseName: r.GetConfig().GetReleaseName(), Category: r.GetConfig().GetCategory(), - Description: r.GetConfig().GetDescription(), + Description: r.GetConfig().GetLaunchUIDescription(), Icon: r.GetConfig().GetIcon(), LaunchURL: r.GetConfig().GetLaunchURL(), }) diff --git a/capten/agent/pkg/agentpb/agent.pb.go b/capten/agent/pkg/agentpb/agent.pb.go index 21da42b3..12981eec 100644 --- a/capten/agent/pkg/agentpb/agent.pb.go +++ b/capten/agent/pkg/agentpb/agent.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.23.4 +// protoc-gen-go v1.30.0 +// protoc v3.12.4 // source: agent.proto package agentpb import ( + any1 "github.com/golang/protobuf/ptypes/any" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" ) @@ -960,8 +960,8 @@ type JobRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - Payload *anypb.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + Payload *any1.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *JobRequest) Reset() { @@ -1003,7 +1003,7 @@ func (x *JobRequest) GetOperation() string { return "" } -func (x *JobRequest) GetPayload() *anypb.Any { +func (x *JobRequest) GetPayload() *any1.Any { if x != nil { return x.Payload } @@ -1723,6 +1723,116 @@ func (x *GetClusterAppValuesResponse) GetValues() *AppValues { return nil } +type InstallAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *InstallAppRequest) Reset() { + *x = InstallAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppRequest) ProtoMessage() {} + +func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[27] + 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 InstallAppRequest.ProtoReflect.Descriptor instead. +func (*InstallAppRequest) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{27} +} + +func (x *InstallAppRequest) GetAppConfig() *AppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + +type InstallAppResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=agentpb.StatusCode" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` + JobResponse *JobResponse `protobuf:"bytes,3,opt,name=jobResponse,proto3" json:"jobResponse,omitempty"` +} + +func (x *InstallAppResponse) Reset() { + *x = InstallAppResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppResponse) ProtoMessage() {} + +func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[28] + 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 InstallAppResponse.ProtoReflect.Descriptor instead. +func (*InstallAppResponse) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{28} +} + +func (x *InstallAppResponse) GetStatus() StatusCode { + if x != nil { + return x.Status + } + return StatusCode_OK +} + +func (x *InstallAppResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + +func (x *InstallAppResponse) GetJobResponse() *JobResponse { + if x != nil { + return x.JobResponse + } + return nil +} + type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1735,7 +1845,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1858,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1871,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1790,7 +1900,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1913,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +1926,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppData) GetConfig() *AppConfig { @@ -1844,7 +1954,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1857,7 +1967,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1870,7 +1980,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{31} } func (x *AppStatus) GetRuntimeStatus() string { @@ -1907,7 +2017,7 @@ type AppConfig struct { func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1920,7 +2030,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1933,7 +2043,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{32} } func (x *AppConfig) GetReleaseName() string { @@ -2067,7 +2177,7 @@ type AppValues struct { func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2080,7 +2190,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2093,7 +2203,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{33} } func (x *AppValues) GetOverrideValues() []byte { @@ -2115,18 +2225,18 @@ type AppLaunchConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` - LaunchRedirectURL string `protobuf:"bytes,6,opt,name=launchRedirectURL,proto3" json:"launchRedirectURL,omitempty"` + ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` + Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` + LaunchUIDescription string `protobuf:"bytes,6,opt,name=launchUIDescription,proto3" json:"launchUIDescription,omitempty"` } func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2139,7 +2249,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2152,7 +2262,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{34} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2190,60 +2300,13 @@ func (x *AppLaunchConfig) GetLaunchURL() string { return "" } -func (x *AppLaunchConfig) GetLaunchRedirectURL() string { +func (x *AppLaunchConfig) GetLaunchUIDescription() string { if x != nil { - return x.LaunchRedirectURL + return x.LaunchUIDescription } return "" } -type InstallAppRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` -} - -func (x *InstallAppRequest) Reset() { - *x = InstallAppRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InstallAppRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InstallAppRequest) ProtoMessage() {} - -func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[33] - 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 InstallAppRequest.ProtoReflect.Descriptor instead. -func (*InstallAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{33} -} - -func (x *InstallAppRequest) GetAppConfig() *AppConfig { - if x != nil { - return x.AppConfig - } - return nil -} - var File_agent_proto protoreflect.FileDescriptor var file_agent_proto_rawDesc = []byte{ @@ -2463,185 +2526,196 @@ var file_agent_proto_rawDesc = []byte{ 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, - 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, - 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, - 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, - 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, - 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x55, 0x52, 0x4c, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0x88, 0x0c, 0x0a, 0x05, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, - 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, - 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, + 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9f, 0x01, + 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x73, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, + 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, + 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, + 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, + 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, + 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x03, 0x32, 0x8f, 0x0c, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, + 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, + 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, + 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, + 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, + 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, - 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, - 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, - 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, - 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, - 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, - 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, + 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0a, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2657,7 +2731,7 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest @@ -2687,82 +2761,85 @@ var file_agent_proto_goTypes = []interface{}{ (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*SyncAppData)(nil), // 28: agentpb.SyncAppData - (*AppData)(nil), // 29: agentpb.AppData - (*AppStatus)(nil), // 30: agentpb.AppStatus - (*AppConfig)(nil), // 31: agentpb.AppConfig - (*AppValues)(nil), // 32: agentpb.AppValues - (*AppLaunchConfig)(nil), // 33: agentpb.AppLaunchConfig - (*InstallAppRequest)(nil), // 34: agentpb.InstallAppRequest - nil, // 35: agentpb.StoreCredentialRequest.CredentialEntry - (*anypb.Any)(nil), // 36: google.protobuf.Any + (*InstallAppRequest)(nil), // 28: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 29: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 30: agentpb.SyncAppData + (*AppData)(nil), // 31: agentpb.AppData + (*AppStatus)(nil), // 32: agentpb.AppStatus + (*AppConfig)(nil), // 33: agentpb.AppConfig + (*AppValues)(nil), // 34: agentpb.AppValues + (*AppLaunchConfig)(nil), // 35: agentpb.AppLaunchConfig + nil, // 36: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 37: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 35, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 36, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 28, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData 0, // 5: agentpb.SyncAppResponse.status:type_name -> agentpb.StatusCode 0, // 6: agentpb.GetClusterAppsResponse.status:type_name -> agentpb.StatusCode - 29, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 33, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig 0, // 10: agentpb.ConfigureAppSSOResponse.status:type_name -> agentpb.StatusCode 0, // 11: agentpb.GetClusterAppConfigResponse.status:type_name -> agentpb.StatusCode - 31, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 32, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues - 31, // 15: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig - 32, // 16: agentpb.SyncAppData.values:type_name -> agentpb.AppValues - 31, // 17: agentpb.AppData.config:type_name -> agentpb.AppConfig - 30, // 18: agentpb.AppData.status:type_name -> agentpb.AppStatus - 31, // 19: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig - 1, // 20: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 21: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 22: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 23: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 24: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 25: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 26: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 27: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 28: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 29: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 30: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 31: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 32: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 33: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 34: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 35: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 36: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 37: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 38: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 34, // 39: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest - 2, // 40: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 41: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 42: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 43: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 44: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 45: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 46: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 51: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 52: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 53: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 54: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 55: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 56: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 57: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 58: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 15, // 59: agentpb.Agent.InstallApp:output_type -> agentpb.JobResponse - 40, // [40:60] is the sub-list for method output_type - 20, // [20:40] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 34, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 33, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 0, // 16: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode + 15, // 17: agentpb.InstallAppResponse.jobResponse:type_name -> agentpb.JobResponse + 33, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 34, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 33, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 32, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 1, // 22: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 14, // 23: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 3, // 24: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 5, // 25: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest + 6, // 26: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest + 7, // 27: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest + 8, // 28: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest + 9, // 29: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 9, // 30: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 10, // 31: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 11, // 32: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 12, // 33: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 13, // 34: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 16, // 35: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 18, // 36: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 20, // 37: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 22, // 38: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 24, // 39: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 26, // 40: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 28, // 41: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 2, // 42: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 15, // 43: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 4, // 44: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 15, // 45: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse + 15, // 46: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse + 15, // 47: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse + 15, // 48: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse + 15, // 49: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 15, // 50: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 15, // 51: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 15, // 52: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 15, // 53: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 15, // 54: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 17, // 55: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 19, // 56: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 21, // 57: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 23, // 58: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 25, // 59: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 27, // 60: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 29, // 61: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 42, // [42:62] is the sub-list for method output_type + 22, // [22:42] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_agent_proto_init() } @@ -3096,7 +3173,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncAppData); i { + switch v := v.(*InstallAppRequest); i { case 0: return &v.state case 1: @@ -3108,7 +3185,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppData); i { + switch v := v.(*InstallAppResponse); i { case 0: return &v.state case 1: @@ -3120,7 +3197,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStatus); i { + switch v := v.(*SyncAppData); i { case 0: return &v.state case 1: @@ -3132,7 +3209,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppConfig); i { + switch v := v.(*AppData); i { case 0: return &v.state case 1: @@ -3144,7 +3221,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppValues); i { + switch v := v.(*AppStatus); i { case 0: return &v.state case 1: @@ -3156,7 +3233,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppLaunchConfig); i { + switch v := v.(*AppConfig); i { case 0: return &v.state case 1: @@ -3168,7 +3245,19 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InstallAppRequest); i { + switch v := v.(*AppValues); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppLaunchConfig); i { case 0: return &v.state case 1: @@ -3186,7 +3275,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 35, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/capten/agent/pkg/agentpb/agent_grpc.pb.go b/capten/agent/pkg/agentpb/agent_grpc.pb.go index ecc3b8f4..21881709 100644 --- a/capten/agent/pkg/agentpb/agent_grpc.pb.go +++ b/capten/agent/pkg/agentpb/agent_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.4 +// - protoc v3.12.4 // source: agent.proto package agentpb @@ -64,7 +64,7 @@ type AgentClient interface { ConfigureAppSSO(ctx context.Context, in *ConfigureAppSSORequest, opts ...grpc.CallOption) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(ctx context.Context, in *GetClusterAppConfigRequest, opts ...grpc.CallOption) (*GetClusterAppConfigResponse, error) GetClusterAppValues(ctx context.Context, in *GetClusterAppValuesRequest, opts ...grpc.CallOption) (*GetClusterAppValuesResponse, error) - InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) + InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) } type agentClient struct { @@ -246,8 +246,8 @@ func (c *agentClient) GetClusterAppValues(ctx context.Context, in *GetClusterApp return out, nil } -func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) +func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) { + out := new(InstallAppResponse) err := c.cc.Invoke(ctx, Agent_InstallApp_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -278,7 +278,7 @@ type AgentServer interface { ConfigureAppSSO(context.Context, *ConfigureAppSSORequest) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(context.Context, *GetClusterAppConfigRequest) (*GetClusterAppConfigResponse, error) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) - InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) + InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) mustEmbedUnimplementedAgentServer() } @@ -343,7 +343,7 @@ func (UnimplementedAgentServer) GetClusterAppConfig(context.Context, *GetCluster func (UnimplementedAgentServer) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterAppValues not implemented") } -func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) { +func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method InstallApp not implemented") } func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} diff --git a/capten/agent/pkg/capten-store/app_config_store.go b/capten/agent/pkg/capten-store/app_config_store.go index 5cfe0121..558451a1 100644 --- a/capten/agent/pkg/capten-store/app_config_store.go +++ b/capten/agent/pkg/capten-store/app_config_store.go @@ -27,7 +27,7 @@ const ( appName, description, category = "app_name", "description", "category" chartName, repoName, repoUrl = "chart_name", "repo_name", "repo_url" namespace, releaseName, version = "namespace", "release_name", "version" - launchUrl = "launch_url" + launchUrl, launchUIDesc = "launch_url", "launch_redirect_url" createNamespace, privilegedNamespace = "create_namespace", "privileged_namespace" overrideValues, launchUiValues = "override_values", "launch_ui_values" icon, installStatus = "icon", "install_status" @@ -38,7 +38,7 @@ var ( appName, description, category, chartName, repoName, repoUrl, namespace, releaseName, version, - launchUrl, + launchUrl, launchUIDesc, createNamespace, privilegedNamespace, overrideValues, launchUiValues, icon, installStatus, @@ -69,7 +69,7 @@ func (a *Store) GetAppConfig(appReleaseName string) (*agentpb.SyncAppData, error &config.AppName, &config.Description, &config.Category, &config.ChartName, &config.RepoName, &config.RepoURL, &config.Namespace, &config.ReleaseName, &config.Version, - &config.LaunchURL, + &config.LaunchURL, &config.LaunchUIDescription, &config.CreateNamespace, &config.PrivilegedNamespace, &overrideValues, &launchUiValues, &config.Icon, &config.InstallStatus, @@ -97,7 +97,7 @@ func (a *Store) GetAllApps() ([]*agentpb.SyncAppData, error) { &config.AppName, &config.Description, &config.Category, &config.ChartName, &config.RepoName, &config.RepoURL, &config.Namespace, &config.ReleaseName, &config.Version, - &config.LaunchURL, + &config.LaunchURL, &config.LaunchUIDescription, &config.CreateNamespace, &config.PrivilegedNamespace, &overrideValues, &launchUiValues, &config.Icon, &config.InstallStatus, @@ -151,6 +151,11 @@ func formUpdateKvPairs(config *agentpb.SyncAppData) (string, bool) { fmt.Sprintf("%s = '%s'", launchUrl, config.Config.LaunchURL)) } + if config.Config.LaunchUIDescription != "" { + params = append(params, + fmt.Sprintf("%s = '%s'", launchUIDesc, config.Config.LaunchUIDescription)) + } + if config.Config.AppName != "" { params = append(params, fmt.Sprintf("%s = '%s'", appName, config.Config.AppName)) diff --git a/capten/agent/pkg/model/payload.go b/capten/agent/pkg/model/payload.go index eddaf637..7f016521 100644 --- a/capten/agent/pkg/model/payload.go +++ b/capten/agent/pkg/model/payload.go @@ -32,7 +32,6 @@ type Request struct { } type AppConfig struct { - ClusterName string `json:"ClusterName,omitempty"` AppName string `json:"AppName,omitempty"` Version string `json:"Version,omitempty"` Category string `json:"Category,omitempty"` @@ -46,5 +45,5 @@ type AppConfig struct { PrivilegedNamespace bool `json:"PrivilegedNamespace"` Icon string `json:"Icon,omitempty"` LaunchURL string `json:"LaunchURL,omitempty"` - LaunchRedirectURL string `json:"LaunchRedirectURL,omitempty"` + LaunchUIDescription string `json:"LaunchUIDescription,omitempty"` } diff --git a/capten/capten-sdk/agentpb/agent.pb.go b/capten/capten-sdk/agentpb/agent.pb.go index 9be18cf0..12981eec 100644 --- a/capten/capten-sdk/agentpb/agent.pb.go +++ b/capten/capten-sdk/agentpb/agent.pb.go @@ -1723,6 +1723,116 @@ func (x *GetClusterAppValuesResponse) GetValues() *AppValues { return nil } +type InstallAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *InstallAppRequest) Reset() { + *x = InstallAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppRequest) ProtoMessage() {} + +func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[27] + 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 InstallAppRequest.ProtoReflect.Descriptor instead. +func (*InstallAppRequest) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{27} +} + +func (x *InstallAppRequest) GetAppConfig() *AppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + +type InstallAppResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=agentpb.StatusCode" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` + JobResponse *JobResponse `protobuf:"bytes,3,opt,name=jobResponse,proto3" json:"jobResponse,omitempty"` +} + +func (x *InstallAppResponse) Reset() { + *x = InstallAppResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppResponse) ProtoMessage() {} + +func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[28] + 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 InstallAppResponse.ProtoReflect.Descriptor instead. +func (*InstallAppResponse) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{28} +} + +func (x *InstallAppResponse) GetStatus() StatusCode { + if x != nil { + return x.Status + } + return StatusCode_OK +} + +func (x *InstallAppResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + +func (x *InstallAppResponse) GetJobResponse() *JobResponse { + if x != nil { + return x.JobResponse + } + return nil +} + type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1735,7 +1845,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1858,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1871,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1790,7 +1900,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1913,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +1926,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppData) GetConfig() *AppConfig { @@ -1844,7 +1954,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1857,7 +1967,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1870,7 +1980,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{31} } func (x *AppStatus) GetRuntimeStatus() string { @@ -1907,7 +2017,7 @@ type AppConfig struct { func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1920,7 +2030,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1933,7 +2043,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{32} } func (x *AppConfig) GetReleaseName() string { @@ -2067,7 +2177,7 @@ type AppValues struct { func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2080,7 +2190,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2093,7 +2203,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{33} } func (x *AppValues) GetOverrideValues() []byte { @@ -2126,7 +2236,7 @@ type AppLaunchConfig struct { func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2139,7 +2249,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2152,7 +2262,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{34} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2416,177 +2526,196 @@ var file_agent_proto_rawDesc = []byte{ 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, - 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, - 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, - 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, - 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, - 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, - 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, - 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0xc6, 0x0b, 0x0a, 0x05, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, - 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, - 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, + 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9f, 0x01, + 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, + 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, + 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, + 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, + 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, + 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x03, 0x32, 0x8f, 0x0c, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, + 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, + 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, + 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, + 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x12, - 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x10, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, + 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, + 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, - 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0a, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2602,7 +2731,7 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest @@ -2632,78 +2761,85 @@ var file_agent_proto_goTypes = []interface{}{ (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*SyncAppData)(nil), // 28: agentpb.SyncAppData - (*AppData)(nil), // 29: agentpb.AppData - (*AppStatus)(nil), // 30: agentpb.AppStatus - (*AppConfig)(nil), // 31: agentpb.AppConfig - (*AppValues)(nil), // 32: agentpb.AppValues - (*AppLaunchConfig)(nil), // 33: agentpb.AppLaunchConfig - nil, // 34: agentpb.StoreCredentialRequest.CredentialEntry - (*any1.Any)(nil), // 35: google.protobuf.Any + (*InstallAppRequest)(nil), // 28: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 29: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 30: agentpb.SyncAppData + (*AppData)(nil), // 31: agentpb.AppData + (*AppStatus)(nil), // 32: agentpb.AppStatus + (*AppConfig)(nil), // 33: agentpb.AppConfig + (*AppValues)(nil), // 34: agentpb.AppValues + (*AppLaunchConfig)(nil), // 35: agentpb.AppLaunchConfig + nil, // 36: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 37: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 34, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 35, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 28, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData 0, // 5: agentpb.SyncAppResponse.status:type_name -> agentpb.StatusCode 0, // 6: agentpb.GetClusterAppsResponse.status:type_name -> agentpb.StatusCode - 29, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 33, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig 0, // 10: agentpb.ConfigureAppSSOResponse.status:type_name -> agentpb.StatusCode 0, // 11: agentpb.GetClusterAppConfigResponse.status:type_name -> agentpb.StatusCode - 31, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 32, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues - 31, // 15: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig - 32, // 16: agentpb.SyncAppData.values:type_name -> agentpb.AppValues - 31, // 17: agentpb.AppData.config:type_name -> agentpb.AppConfig - 30, // 18: agentpb.AppData.status:type_name -> agentpb.AppStatus - 1, // 19: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 20: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 21: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 22: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 23: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 24: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 25: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 26: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 27: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 28: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 29: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 30: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 31: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 32: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 33: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 34: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 35: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 36: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 37: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 2, // 38: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 39: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 40: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 41: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 42: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 43: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 44: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 45: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 46: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 51: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 52: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 53: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 54: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 55: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 56: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 38, // [38:57] is the sub-list for method output_type - 19, // [19:38] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 34, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 33, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 0, // 16: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode + 15, // 17: agentpb.InstallAppResponse.jobResponse:type_name -> agentpb.JobResponse + 33, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 34, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 33, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 32, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 1, // 22: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 14, // 23: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 3, // 24: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 5, // 25: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest + 6, // 26: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest + 7, // 27: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest + 8, // 28: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest + 9, // 29: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 9, // 30: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 10, // 31: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 11, // 32: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 12, // 33: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 13, // 34: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 16, // 35: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 18, // 36: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 20, // 37: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 22, // 38: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 24, // 39: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 26, // 40: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 28, // 41: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 2, // 42: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 15, // 43: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 4, // 44: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 15, // 45: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse + 15, // 46: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse + 15, // 47: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse + 15, // 48: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse + 15, // 49: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 15, // 50: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 15, // 51: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 15, // 52: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 15, // 53: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 15, // 54: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 17, // 55: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 19, // 56: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 21, // 57: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 23, // 58: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 25, // 59: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 27, // 60: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 29, // 61: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 42, // [42:62] is the sub-list for method output_type + 22, // [22:42] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_agent_proto_init() } @@ -3037,7 +3173,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncAppData); i { + switch v := v.(*InstallAppRequest); i { case 0: return &v.state case 1: @@ -3049,7 +3185,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppData); i { + switch v := v.(*InstallAppResponse); i { case 0: return &v.state case 1: @@ -3061,7 +3197,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStatus); i { + switch v := v.(*SyncAppData); i { case 0: return &v.state case 1: @@ -3073,7 +3209,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppConfig); i { + switch v := v.(*AppData); i { case 0: return &v.state case 1: @@ -3085,7 +3221,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppValues); i { + switch v := v.(*AppStatus); i { case 0: return &v.state case 1: @@ -3097,6 +3233,30 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppValues); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppLaunchConfig); i { case 0: return &v.state @@ -3115,7 +3275,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 34, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/capten/capten-sdk/agentpb/agent_grpc.pb.go b/capten/capten-sdk/agentpb/agent_grpc.pb.go index e1a50d99..21881709 100644 --- a/capten/capten-sdk/agentpb/agent_grpc.pb.go +++ b/capten/capten-sdk/agentpb/agent_grpc.pb.go @@ -38,6 +38,7 @@ const ( Agent_ConfigureAppSSO_FullMethodName = "/agentpb.Agent/ConfigureAppSSO" Agent_GetClusterAppConfig_FullMethodName = "/agentpb.Agent/GetClusterAppConfig" Agent_GetClusterAppValues_FullMethodName = "/agentpb.Agent/GetClusterAppValues" + Agent_InstallApp_FullMethodName = "/agentpb.Agent/InstallApp" ) // AgentClient is the client API for Agent service. @@ -63,6 +64,7 @@ type AgentClient interface { ConfigureAppSSO(ctx context.Context, in *ConfigureAppSSORequest, opts ...grpc.CallOption) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(ctx context.Context, in *GetClusterAppConfigRequest, opts ...grpc.CallOption) (*GetClusterAppConfigResponse, error) GetClusterAppValues(ctx context.Context, in *GetClusterAppValuesRequest, opts ...grpc.CallOption) (*GetClusterAppValuesResponse, error) + InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) } type agentClient struct { @@ -244,6 +246,15 @@ func (c *agentClient) GetClusterAppValues(ctx context.Context, in *GetClusterApp return out, nil } +func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) { + out := new(InstallAppResponse) + err := c.cc.Invoke(ctx, Agent_InstallApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer // for forward compatibility @@ -267,6 +278,7 @@ type AgentServer interface { ConfigureAppSSO(context.Context, *ConfigureAppSSORequest) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(context.Context, *GetClusterAppConfigRequest) (*GetClusterAppConfigResponse, error) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) + InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) mustEmbedUnimplementedAgentServer() } @@ -331,6 +343,9 @@ func (UnimplementedAgentServer) GetClusterAppConfig(context.Context, *GetCluster func (UnimplementedAgentServer) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterAppValues not implemented") } +func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InstallApp not implemented") +} func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} // UnsafeAgentServer may be embedded to opt out of forward compatibility for this service. @@ -686,6 +701,24 @@ func _Agent_GetClusterAppValues_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Agent_InstallApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InstallAppRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).InstallApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_InstallApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).InstallApp(ctx, req.(*InstallAppRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Agent_ServiceDesc is the grpc.ServiceDesc for Agent service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -769,6 +802,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetClusterAppValues", Handler: _Agent_GetClusterAppValues_Handler, }, + { + MethodName: "InstallApp", + Handler: _Agent_InstallApp_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "agent.proto", diff --git a/dockerfiles/server/Dockerfile b/dockerfiles/server/Dockerfile index 724995d5..c4534fde 100644 --- a/dockerfiles/server/Dockerfile +++ b/dockerfiles/server/Dockerfile @@ -8,7 +8,7 @@ RUN CGO_ENABLED=0 go build -o ./build/server cmd/server/main.go FROM alpine:3.16 RUN apk add --no-cache libc6-compat -COPY --from=builder ./storeconfig storeconfig +COPY --from=builder ./store-apps /store-apps COPY --from=builder ./build/server server USER 65532:65532 diff --git a/proto/agent.proto b/proto/agent.proto index 94c0b0fe..c53e6fea 100644 --- a/proto/agent.proto +++ b/proto/agent.proto @@ -38,8 +38,7 @@ service Agent { rpc GetClusterAppConfig (GetClusterAppConfigRequest) returns (GetClusterAppConfigResponse) {} rpc GetClusterAppValues (GetClusterAppValuesRequest) returns (GetClusterAppValuesResponse) {} - rpc InstallApp (InstallAppRequest) returns (JobResponse) {} - + rpc InstallApp (InstallAppRequest) returns (InstallAppResponse) {} } enum StatusCode { @@ -203,6 +202,16 @@ message GetClusterAppValuesResponse { AppValues values = 3; } +message InstallAppRequest { + AppConfig appConfig =1; +} + +message InstallAppResponse { + StatusCode status = 1; + string statusMessage = 2; + JobResponse jobResponse = 3; +} + message SyncAppData { AppConfig config = 1; AppValues values = 2; @@ -248,9 +257,7 @@ message AppLaunchConfig { string description = 3; bytes icon = 4; string launchURL = 5; - string launchRedirectURL = 6; + string launchUIDescription = 6; } -message InstallAppRequest{ - AppConfig appConfig =1; -} + diff --git a/proto/server.proto b/proto/server.proto index edd02a57..bda65d28 100644 --- a/proto/server.proto +++ b/proto/server.proto @@ -23,7 +23,6 @@ service Server { rpc GetStoreApps (GetStoreAppsRequest) returns (GetStoreAppsResponse) {} rpc GetStoreAppValues(GetStoreAppValuesRequest) returns (GetStoreAppValuesResponse) {} rpc DeployStoreApp(DeployStoreAppRequest) returns (DeployStoreAppResponse) {} - } enum StatusCode { @@ -217,13 +216,13 @@ message GetStoreAppValuesRequest { string version = 2; } -message GetStoreAppValuesResponse{ +message GetStoreAppValuesResponse { StatusCode status = 1; string statusMessage = 2; StoreAppConfig appConfig = 3; } -message DeployStoreAppRequest{ +message DeployStoreAppRequest { StoreAppConfig appConfig = 1; } @@ -247,6 +246,7 @@ message StoreAppConfig { string icon = 12; string launchURL = 13; string launchUIDescription = 14; + bool defualtApp = 15; } message StoreAppValues { diff --git a/server/.DS_Store b/server/.DS_Store deleted file mode 100644 index 5138c564454cac9ccb73032d6c4e2ded5795a6bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~J!%6%427R!7lt%jx}3%b$PET#pTHLg*pS9{Adu8^^gR7ES*H$5cmnB-G%I%Z zD|S`@Z2x(A0VV(&x+``bW@gM+IOB%P*XiSaeZRl4;#J@&VrHyNnC;iLL0pQvfVyTmjO&;ssLc!1UOG})p;=82 zR;?Ceh}WZ?+UmMqI#RP8R>OzYoz15hnq@nzF`-!xQ4j$Um=RcIKKc27r2jVm&svm< zfC&6E0=7P!4tu^-ovjbA=k?dB`g+i*aXG_}p8zI)6mRKa+;6_1_R^8c3Qa!(fk8n8 H{*=HsYIhNR diff --git a/server/cmd/server/main.go b/server/cmd/server/main.go index e619450a..026155af 100644 --- a/server/cmd/server/main.go +++ b/server/cmd/server/main.go @@ -20,6 +20,7 @@ import ( "github.com/kube-tarian/kad/server/pkg/handler" iamclient "github.com/kube-tarian/kad/server/pkg/iam-client" oryclient "github.com/kube-tarian/kad/server/pkg/ory-client" + storeapps "github.com/kube-tarian/kad/server/pkg/store-apps" "github.com/kube-tarian/kad/server/pkg/pb/serverpb" "github.com/kube-tarian/kad/server/pkg/store" @@ -34,11 +35,9 @@ func main() { log.Fatal("failed to load service congfig", err) } - if cfg.ServiceRegister { - err = iamclient.RegisterService(log) - if err != nil { - log.Fatalf("%v", err) - } + err = iamclient.RegisterService(log) + if err != nil { + log.Fatalf("%v", err) } swagger, err := api.GetSwagger() @@ -56,6 +55,11 @@ func main() { log.Fatal("failed to initialize %s db, %w", cfg.Database, err) } + err = storeapps.SyncStoreApps(log, serverStore) + if err != nil { + log.Fatalf("%v", err) + } + oryclient, err := oryclient.NewOryClient(log) if err != nil { log.Fatal("OryClient initialization failed", err) diff --git a/server/pkg/api/store_apps.go b/server/pkg/api/store_apps.go index f68b712e..0a8e470a 100644 --- a/server/pkg/api/store_apps.go +++ b/server/pkg/api/store_apps.go @@ -34,6 +34,7 @@ func (s *Server) AddStoreApp(ctx context.Context, request *serverpb.AddStoreAppR PrivilegedNamespace: request.AppConfig.PrivilegedNamespace, Icon: request.AppConfig.Icon, LaunchURL: request.AppConfig.LaunchURL, + LaunchUIDescription: request.AppConfig.LaunchUIDescription, OverrideValues: request.AppValues.OverrideValues, LaunchUIValues: request.AppValues.LaunchUIValues, } @@ -76,6 +77,7 @@ func (s *Server) UpdateStoreApp(ctx context.Context, request *serverpb.UpdateSto PrivilegedNamespace: request.AppConfig.PrivilegedNamespace, Icon: request.AppConfig.Icon, LaunchURL: request.AppConfig.LaunchURL, + LaunchUIDescription: request.AppConfig.LaunchUIDescription, OverrideValues: request.AppValues.OverrideValues, LaunchUIValues: request.AppValues.LaunchUIValues, } @@ -150,6 +152,7 @@ func (s *Server) GetStoreApp(ctx context.Context, request *serverpb.GetStoreAppR PrivilegedNamespace: config.PrivilegedNamespace, Icon: config.Icon, LaunchURL: config.LaunchUIURL, + LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, } @@ -188,6 +191,7 @@ func (s *Server) GetStoreApps(ctx context.Context, request *serverpb.GetStoreApp PrivilegedNamespace: config.PrivilegedNamespace, Icon: config.Icon, LaunchURL: config.LaunchUIURL, + LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, }) } @@ -230,6 +234,7 @@ func (s *Server) GetStoreAppValues(ctx context.Context, request *serverpb.GetSto PrivilegedNamespace: config.PrivilegedNamespace, Icon: config.Icon, LaunchURL: config.LaunchUIURL, + LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, } @@ -295,6 +300,7 @@ func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeploySto PrivilegedNamespace: request.AppConfig.PrivilegedNamespace, Icon: []byte(request.AppConfig.Icon), LaunchURL: request.AppConfig.LaunchURL, + LaunchUIDescription: request.AppConfig.LaunchUIDescription, }, } diff --git a/server/pkg/config/config.go b/server/pkg/config/config.go index 4876a2ca..20eee6db 100644 --- a/server/pkg/config/config.go +++ b/server/pkg/config/config.go @@ -5,14 +5,11 @@ import ( ) type ServiceConfig struct { - ServerHost string `envconfig:"SERVER_HOST" default:"0.0.0.0"` - ServerPort int `envconfig:"SERVER_PORT" default:"8080"` - ServerGRPCHost string `envconfig:"SERVER_GRPC_HOST" default:"0.0.0.0"` - ServerGRPCPort int `envconfig:"SERVER_GRPC_PORT" default:"8081"` - Database string `envconfig:"DATABASE" default:"astra"` - AppStorConfig string `envconfig:"APP_STORE_CONFIG" default:"./storeconfig"` - ReadAppStoreConfig bool `envconfig:"READ_APP_STORE_CONFIG" default:"true"` - ServiceRegister bool `envconfig:"SERVICE_REGISTER" default:"false"` + ServerHost string `envconfig:"SERVER_HOST" default:"0.0.0.0"` + ServerPort int `envconfig:"SERVER_PORT" default:"8080"` + ServerGRPCHost string `envconfig:"SERVER_GRPC_HOST" default:"0.0.0.0"` + ServerGRPCPort int `envconfig:"SERVER_GRPC_PORT" default:"8081"` + Database string `envconfig:"DATABASE" default:"astra"` } func GetServiceConfig() (ServiceConfig, error) { diff --git a/server/pkg/iam-client/client.go b/server/pkg/iam-client/client.go index c3ec15a5..457da30e 100644 --- a/server/pkg/iam-client/client.go +++ b/server/pkg/iam-client/client.go @@ -5,7 +5,6 @@ import ( cm "github.com/intelops/go-common/iam" "github.com/intelops/go-common/logging" - "github.com/kelseyhightower/envconfig" "github.com/kube-tarian/kad/server/pkg/credential" oryclient "github.com/kube-tarian/kad/server/pkg/ory-client" iampb "github.com/kube-tarian/kad/server/pkg/pb/iampb" @@ -15,50 +14,29 @@ import ( "google.golang.org/grpc/metadata" ) -type Config struct { - IamURL string `envconfig:"IAM_URL" required:"true"` -} type Client struct { oryClient oryclient.OryClient log logging.Logger - oryURL string - oryPAT string + cfg Config } -func NewClient(ory oryclient.OryClient, log logging.Logger) (*Client, error) { - cfg, err := ory.GetOryEnv() - if err != nil { - return nil, err - } - serviceCredential, err := credential.GetServiceUserCredential(context.Background(), - cfg.OryEntityName, cfg.CredentialIdentifier) - if err != nil { - return nil, err - } - oryPAT := serviceCredential.AdditionalData["ORY_PAT"] - oryURL := serviceCredential.AdditionalData["ORY_URL"] +func NewClient(log logging.Logger, ory oryclient.OryClient, cfg Config) (*Client, error) { return &Client{ oryClient: ory, log: log, - oryURL: oryURL, - oryPAT: oryPAT, + cfg: cfg, }, nil } -func (c *Client) RegisterWithIam() error { - cfg, err := getIamEnv() - if err != nil { - return err - } - iamURL := cfg.IamURL - conn, err := grpc.Dial(iamURL, grpc.WithTransportCredentials(insecure.NewCredentials())) +func (c *Client) RegisterWithIam() error { + conn, err := grpc.Dial(c.cfg.IAMURL, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { return err } iamclient := iampb.NewOauthServiceClient(conn) - c.log.Info("Registering capten as client in ory through...") + oauthClientReq := &iampb.CreateClientCredentialsClientRequest{ - ClientName: "CaptenServer", + ClientName: c.cfg.ServiceName, } res, err := iamclient.CreateClientCredentialsClient(context.Background(), oauthClientReq) if err != nil { @@ -71,24 +49,10 @@ func (c *Client) RegisterWithIam() error { return nil } -func getIamEnv() (*Config, error) { - cfg := &Config{} - if err := envconfig.Process("", cfg); err != nil { - return nil, err - } - return cfg, nil -} - // at the line cm.WithIamYamlPath("provide the yaml location here"), // the roles and actions should be added to ConfigMap // the the location should be provided func (c *Client) RegisterRolesActions() error { - cfg, err := getIamEnv() - if err != nil { - return err - } - - iamURL := cfg.IamURL grpcOpts := []grpc.DialOption{ grpc.WithTransportCredentials(insecure.NewCredentials()), } @@ -96,7 +60,7 @@ func (c *Client) RegisterRolesActions() error { // the order of calling the options should be same as given in example iamConn := cm.NewIamConn( cm.WithGrpcDialOption(grpcOpts...), - cm.WithIamAddress(iamURL), + cm.WithIamAddress(c.cfg.IAMURL), // TODO: here need to add the roles and actions yaml location cm.WithIamYamlPath("provide the yaml location here"), ) @@ -111,8 +75,8 @@ func (c *Client) RegisterRolesActions() error { } md := metadata.Pairs( "oauth_token", *tkn, - "ory_url", c.oryURL, - "ory_pat", c.oryPAT, + "ory_url", c.oryClient.GetURL(), + "ory_pat", c.oryClient.GetPAT(), ) newCtx := metadata.NewOutgoingContext(ctx, md) // Update action roles diff --git a/server/pkg/iam-client/register_service.go b/server/pkg/iam-client/register_service.go index f26fe979..4cd3d24e 100644 --- a/server/pkg/iam-client/register_service.go +++ b/server/pkg/iam-client/register_service.go @@ -2,17 +2,34 @@ package iamclient import ( "github.com/intelops/go-common/logging" + "github.com/kelseyhightower/envconfig" oryclient "github.com/kube-tarian/kad/server/pkg/ory-client" "github.com/pkg/errors" ) +type Config struct { + IAMURL string `envconfig:"IAM_URL" required:"true"` + ServiceRegister bool `envconfig:"SERVICE_REGISTER" default:"false"` + ServiceName string `envconfig:"SERVICE_NAME" default:"capten-server"` +} + func RegisterService(log logging.Logger) error { + cfg := Config{} + if err := envconfig.Process("", &cfg); err != nil { + return err + } + + if cfg.ServiceRegister { + log.Infof("service registration disabled") + return nil + } + oryclient, err := oryclient.NewOryClient(log) if err != nil { return errors.WithMessage(err, "OryClient initialization failed") } - IC, err := NewClient(oryclient, log) + IC, err := NewClient(log, oryclient, cfg) if err != nil { return errors.WithMessage(err, "Error occured while created IAM client") } diff --git a/server/pkg/ory-client/client.go b/server/pkg/ory-client/client.go index 6e8eaf8f..e5e5f6ab 100644 --- a/server/pkg/ory-client/client.go +++ b/server/pkg/ory-client/client.go @@ -52,15 +52,17 @@ type OryClient interface { Authorize(ctx context.Context, accessToken string) (context.Context, error) UnaryInterceptor(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error GetCaptenServiceRegOauthToken() (*string, error) - GetOryEnv() (*Config, error) + GetURL() string + GetPAT() string } // NewOryClient returns a OryClient interface func NewOryClient(log logging.Logger) (OryClient, error) { - cfg, err := getOryEnv() - if err != nil { + cfg := &Config{} + if err := envconfig.Process("", cfg); err != nil { return nil, err } + serviceCredential, err := credential.GetServiceUserCredential(context.Background(), cfg.OryEntityName, cfg.CredentialIdentifier) if err != nil { @@ -77,20 +79,14 @@ func NewOryClient(log logging.Logger) (OryClient, error) { }, nil } -func (c *Client) GetOryEnv() (*Config, error) { - cfg := &Config{} - if err := envconfig.Process("", cfg); err != nil { - return nil, err - } - return cfg, nil +func (c *Client) GetURL() string { + return c.oryURL } -func getOryEnv() (*Config, error) { - cfg := &Config{} - if err := envconfig.Process("", cfg); err != nil { - return nil, err - } - return cfg, nil + +func (c *Client) GetPAT() string { + return c.oryPAT } + func getTokenEnv() (*TokenConfig, error) { cfg := &TokenConfig{} if err := envconfig.Process("", cfg); err != nil { diff --git a/server/pkg/pb/agentpb/agent.pb.go b/server/pkg/pb/agentpb/agent.pb.go index 21da42b3..12981eec 100644 --- a/server/pkg/pb/agentpb/agent.pb.go +++ b/server/pkg/pb/agentpb/agent.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.23.4 +// protoc-gen-go v1.30.0 +// protoc v3.12.4 // source: agent.proto package agentpb import ( + any1 "github.com/golang/protobuf/ptypes/any" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" ) @@ -960,8 +960,8 @@ type JobRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - Payload *anypb.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` + Payload *any1.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *JobRequest) Reset() { @@ -1003,7 +1003,7 @@ func (x *JobRequest) GetOperation() string { return "" } -func (x *JobRequest) GetPayload() *anypb.Any { +func (x *JobRequest) GetPayload() *any1.Any { if x != nil { return x.Payload } @@ -1723,6 +1723,116 @@ func (x *GetClusterAppValuesResponse) GetValues() *AppValues { return nil } +type InstallAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *InstallAppRequest) Reset() { + *x = InstallAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppRequest) ProtoMessage() {} + +func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[27] + 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 InstallAppRequest.ProtoReflect.Descriptor instead. +func (*InstallAppRequest) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{27} +} + +func (x *InstallAppRequest) GetAppConfig() *AppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + +type InstallAppResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=agentpb.StatusCode" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` + JobResponse *JobResponse `protobuf:"bytes,3,opt,name=jobResponse,proto3" json:"jobResponse,omitempty"` +} + +func (x *InstallAppResponse) Reset() { + *x = InstallAppResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppResponse) ProtoMessage() {} + +func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[28] + 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 InstallAppResponse.ProtoReflect.Descriptor instead. +func (*InstallAppResponse) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{28} +} + +func (x *InstallAppResponse) GetStatus() StatusCode { + if x != nil { + return x.Status + } + return StatusCode_OK +} + +func (x *InstallAppResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + +func (x *InstallAppResponse) GetJobResponse() *JobResponse { + if x != nil { + return x.JobResponse + } + return nil +} + type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1735,7 +1845,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1858,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1871,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1790,7 +1900,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1913,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +1926,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppData) GetConfig() *AppConfig { @@ -1844,7 +1954,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1857,7 +1967,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1870,7 +1980,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{31} } func (x *AppStatus) GetRuntimeStatus() string { @@ -1907,7 +2017,7 @@ type AppConfig struct { func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1920,7 +2030,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1933,7 +2043,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{32} } func (x *AppConfig) GetReleaseName() string { @@ -2067,7 +2177,7 @@ type AppValues struct { func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2080,7 +2190,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2093,7 +2203,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{33} } func (x *AppValues) GetOverrideValues() []byte { @@ -2115,18 +2225,18 @@ type AppLaunchConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` - LaunchRedirectURL string `protobuf:"bytes,6,opt,name=launchRedirectURL,proto3" json:"launchRedirectURL,omitempty"` + ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` + Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` + LaunchUIDescription string `protobuf:"bytes,6,opt,name=launchUIDescription,proto3" json:"launchUIDescription,omitempty"` } func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2139,7 +2249,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2152,7 +2262,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{34} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2190,60 +2300,13 @@ func (x *AppLaunchConfig) GetLaunchURL() string { return "" } -func (x *AppLaunchConfig) GetLaunchRedirectURL() string { +func (x *AppLaunchConfig) GetLaunchUIDescription() string { if x != nil { - return x.LaunchRedirectURL + return x.LaunchUIDescription } return "" } -type InstallAppRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` -} - -func (x *InstallAppRequest) Reset() { - *x = InstallAppRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InstallAppRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InstallAppRequest) ProtoMessage() {} - -func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[33] - 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 InstallAppRequest.ProtoReflect.Descriptor instead. -func (*InstallAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{33} -} - -func (x *InstallAppRequest) GetAppConfig() *AppConfig { - if x != nil { - return x.AppConfig - } - return nil -} - var File_agent_proto protoreflect.FileDescriptor var file_agent_proto_rawDesc = []byte{ @@ -2463,185 +2526,196 @@ var file_agent_proto_rawDesc = []byte{ 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, - 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, - 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, - 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, - 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, - 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x55, 0x52, 0x4c, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0x88, 0x0c, 0x0a, 0x05, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, - 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, - 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, + 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9f, 0x01, + 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x73, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x65, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x31, 0x0a, 0x09, 0x41, 0x70, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xbd, 0x04, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, + 0x55, 0x52, 0x4c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, + 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x70, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, + 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x22, 0x5b, 0x0a, 0x09, + 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, + 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x03, 0x32, 0x8f, 0x0c, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, + 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, + 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, + 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, + 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x47, 0x0a, 0x0f, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, + 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x22, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x41, 0x70, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0a, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, - 0x10, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, - 0x0d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, - 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, - 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, - 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, - 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x07, 0x53, + 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0a, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2657,7 +2731,7 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest @@ -2687,82 +2761,85 @@ var file_agent_proto_goTypes = []interface{}{ (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*SyncAppData)(nil), // 28: agentpb.SyncAppData - (*AppData)(nil), // 29: agentpb.AppData - (*AppStatus)(nil), // 30: agentpb.AppStatus - (*AppConfig)(nil), // 31: agentpb.AppConfig - (*AppValues)(nil), // 32: agentpb.AppValues - (*AppLaunchConfig)(nil), // 33: agentpb.AppLaunchConfig - (*InstallAppRequest)(nil), // 34: agentpb.InstallAppRequest - nil, // 35: agentpb.StoreCredentialRequest.CredentialEntry - (*anypb.Any)(nil), // 36: google.protobuf.Any + (*InstallAppRequest)(nil), // 28: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 29: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 30: agentpb.SyncAppData + (*AppData)(nil), // 31: agentpb.AppData + (*AppStatus)(nil), // 32: agentpb.AppStatus + (*AppConfig)(nil), // 33: agentpb.AppConfig + (*AppValues)(nil), // 34: agentpb.AppValues + (*AppLaunchConfig)(nil), // 35: agentpb.AppLaunchConfig + nil, // 36: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 37: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 35, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 36, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 28, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData 0, // 5: agentpb.SyncAppResponse.status:type_name -> agentpb.StatusCode 0, // 6: agentpb.GetClusterAppsResponse.status:type_name -> agentpb.StatusCode - 29, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 33, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig 0, // 10: agentpb.ConfigureAppSSOResponse.status:type_name -> agentpb.StatusCode 0, // 11: agentpb.GetClusterAppConfigResponse.status:type_name -> agentpb.StatusCode - 31, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 32, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues - 31, // 15: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig - 32, // 16: agentpb.SyncAppData.values:type_name -> agentpb.AppValues - 31, // 17: agentpb.AppData.config:type_name -> agentpb.AppConfig - 30, // 18: agentpb.AppData.status:type_name -> agentpb.AppStatus - 31, // 19: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig - 1, // 20: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 21: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 22: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 23: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 24: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 25: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 26: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 27: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 28: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 29: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 30: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 31: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 32: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 33: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 34: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 35: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 36: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 37: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 38: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 34, // 39: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest - 2, // 40: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 41: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 42: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 43: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 44: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 45: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 46: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 51: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 52: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 53: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 54: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 55: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 56: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 57: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 58: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 15, // 59: agentpb.Agent.InstallApp:output_type -> agentpb.JobResponse - 40, // [40:60] is the sub-list for method output_type - 20, // [20:40] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 34, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 33, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 0, // 16: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode + 15, // 17: agentpb.InstallAppResponse.jobResponse:type_name -> agentpb.JobResponse + 33, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 34, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 33, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 32, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 1, // 22: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 14, // 23: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 3, // 24: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 5, // 25: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest + 6, // 26: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest + 7, // 27: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest + 8, // 28: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest + 9, // 29: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 9, // 30: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 10, // 31: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 11, // 32: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 12, // 33: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 13, // 34: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 16, // 35: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 18, // 36: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 20, // 37: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 22, // 38: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 24, // 39: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 26, // 40: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 28, // 41: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 2, // 42: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 15, // 43: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 4, // 44: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 15, // 45: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse + 15, // 46: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse + 15, // 47: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse + 15, // 48: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse + 15, // 49: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 15, // 50: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 15, // 51: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 15, // 52: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 15, // 53: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 15, // 54: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 17, // 55: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 19, // 56: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 21, // 57: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 23, // 58: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 25, // 59: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 27, // 60: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 29, // 61: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 42, // [42:62] is the sub-list for method output_type + 22, // [22:42] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_agent_proto_init() } @@ -3096,7 +3173,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncAppData); i { + switch v := v.(*InstallAppRequest); i { case 0: return &v.state case 1: @@ -3108,7 +3185,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppData); i { + switch v := v.(*InstallAppResponse); i { case 0: return &v.state case 1: @@ -3120,7 +3197,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStatus); i { + switch v := v.(*SyncAppData); i { case 0: return &v.state case 1: @@ -3132,7 +3209,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppConfig); i { + switch v := v.(*AppData); i { case 0: return &v.state case 1: @@ -3144,7 +3221,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppValues); i { + switch v := v.(*AppStatus); i { case 0: return &v.state case 1: @@ -3156,7 +3233,7 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppLaunchConfig); i { + switch v := v.(*AppConfig); i { case 0: return &v.state case 1: @@ -3168,7 +3245,19 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InstallAppRequest); i { + switch v := v.(*AppValues); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppLaunchConfig); i { case 0: return &v.state case 1: @@ -3186,7 +3275,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 35, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/server/pkg/pb/agentpb/agent_grpc.pb.go b/server/pkg/pb/agentpb/agent_grpc.pb.go index ecc3b8f4..21881709 100644 --- a/server/pkg/pb/agentpb/agent_grpc.pb.go +++ b/server/pkg/pb/agentpb/agent_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.4 +// - protoc v3.12.4 // source: agent.proto package agentpb @@ -64,7 +64,7 @@ type AgentClient interface { ConfigureAppSSO(ctx context.Context, in *ConfigureAppSSORequest, opts ...grpc.CallOption) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(ctx context.Context, in *GetClusterAppConfigRequest, opts ...grpc.CallOption) (*GetClusterAppConfigResponse, error) GetClusterAppValues(ctx context.Context, in *GetClusterAppValuesRequest, opts ...grpc.CallOption) (*GetClusterAppValuesResponse, error) - InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) + InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) } type agentClient struct { @@ -246,8 +246,8 @@ func (c *agentClient) GetClusterAppValues(ctx context.Context, in *GetClusterApp return out, nil } -func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) +func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*InstallAppResponse, error) { + out := new(InstallAppResponse) err := c.cc.Invoke(ctx, Agent_InstallApp_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -278,7 +278,7 @@ type AgentServer interface { ConfigureAppSSO(context.Context, *ConfigureAppSSORequest) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(context.Context, *GetClusterAppConfigRequest) (*GetClusterAppConfigResponse, error) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) - InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) + InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) mustEmbedUnimplementedAgentServer() } @@ -343,7 +343,7 @@ func (UnimplementedAgentServer) GetClusterAppConfig(context.Context, *GetCluster func (UnimplementedAgentServer) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterAppValues not implemented") } -func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) { +func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*InstallAppResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method InstallApp not implemented") } func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} diff --git a/server/pkg/pb/serverpb/server.pb.go b/server/pkg/pb/serverpb/server.pb.go index 1064aa99..05b17721 100644 --- a/server/pkg/pb/serverpb/server.pb.go +++ b/server/pkg/pb/serverpb/server.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.23.4 +// protoc-gen-go v1.30.0 +// protoc v3.12.4 // source: server.proto package serverpb @@ -2183,6 +2183,7 @@ type StoreAppConfig struct { Icon string `protobuf:"bytes,12,opt,name=icon,proto3" json:"icon,omitempty"` LaunchURL string `protobuf:"bytes,13,opt,name=launchURL,proto3" json:"launchURL,omitempty"` LaunchUIDescription string `protobuf:"bytes,14,opt,name=launchUIDescription,proto3" json:"launchUIDescription,omitempty"` + DefualtApp bool `protobuf:"varint,15,opt,name=defualtApp,proto3" json:"defualtApp,omitempty"` } func (x *StoreAppConfig) Reset() { @@ -2315,6 +2316,13 @@ func (x *StoreAppConfig) GetLaunchUIDescription() string { return "" } +func (x *StoreAppConfig) GetDefualtApp() bool { + if x != nil { + return x.DefualtApp + } + return false +} + type StoreAppValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2667,7 +2675,7 @@ var file_server_proto_rawDesc = []byte{ 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd6, 0x03, 0x0a, 0x0e, 0x53, + 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xf6, 0x03, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, @@ -2697,7 +2705,9 @@ var file_server_proto_rawDesc = []byte{ 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, + 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, 0x41, 0x70, + 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x75, 0x61, 0x6c, 0x74, + 0x41, 0x70, 0x70, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, diff --git a/server/pkg/pb/serverpb/server_grpc.pb.go b/server/pkg/pb/serverpb/server_grpc.pb.go index 6ca95c98..8e239c61 100644 --- a/server/pkg/pb/serverpb/server_grpc.pb.go +++ b/server/pkg/pb/serverpb/server_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.4 +// - protoc v3.12.4 // source: server.proto package serverpb diff --git a/server/pkg/store-apps/sync_store_apps.go b/server/pkg/store-apps/sync_store_apps.go new file mode 100644 index 00000000..2c12ef6c --- /dev/null +++ b/server/pkg/store-apps/sync_store_apps.go @@ -0,0 +1,97 @@ +package storeapps + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/intelops/go-common/logging" + "github.com/kelseyhightower/envconfig" + "github.com/kube-tarian/kad/server/pkg/store" + "github.com/kube-tarian/kad/server/pkg/types" + "github.com/pkg/errors" + "gopkg.in/yaml.v2" +) + +type Config struct { + AppStoreAppConfigPath string `envconfig:"APP_STORE_APP_CONFIG_PATH" default:"/store-apps/conf"` + ReadAppStoreConfig bool `envconfig:"READ_APP_STORE_CONFIG" default:"true"` + AppStoreConfigFile string `envconfig:"APP_STORE_CONFIG_FILE" default:"/store-apps/app_list.yaml"` +} + +type AppStoreConfig struct { + EnabledApps []string `yaml:"enabledApps"` + DisabledApps []string `yaml:"disabledApps"` +} + +func SyncStoreApps(log logging.Logger, appStore store.ServerStore) error { + cfg := &Config{} + if err := envconfig.Process("", cfg); err != nil { + return err + } + + if !cfg.ReadAppStoreConfig { + log.Info("app store config synch disabled") + return nil + } + + configData, err := os.ReadFile(cfg.AppStoreConfigFile) + if err != nil { + return errors.WithMessage(err, "failed to read store config file") + } + + var config AppStoreConfig + if err := yaml.Unmarshal(configData, &config); err != nil { + return errors.WithMessage(err, "failed to unmarshall store config file") + } + + for _, appName := range config.EnabledApps { + appData, err := os.ReadFile(cfg.AppStoreAppConfigPath + "/" + appName + ".yaml") + if err != nil { + return errors.WithMessagef(err, "failed to read store app config for %s", appName) + } + + var appConfig types.AppConfig + if err := yaml.Unmarshal(appData, &appConfig); err != nil { + return errors.WithMessagef(err, "failed to unmarshall store app config for %s", appName) + } + + if appConfig.Name == "" || appConfig.Version == "" { + return fmt.Errorf("app name/version is missing for %s", appName) + } + + storeAppConfig := &types.StoreAppConfig{ + AppName: appConfig.Name, + Version: appConfig.Version, + Category: appConfig.Category, + Description: appConfig.Description, + ChartName: appConfig.ChartName, + RepoName: appConfig.RepoName, + ReleaseName: appConfig.ReleaseName, + RepoURL: appConfig.RepoURL, + Namespace: appConfig.Namespace, + CreateNamespace: appConfig.CreateNamespace, + PrivilegedNamespace: appConfig.PrivilegedNamespace, + Icon: appConfig.Icon, + LaunchURL: appConfig.LaunchUIURL, + LaunchUIDescription: appConfig.LaunchUIDescription, + } + + overrideValuesJSON, err := json.Marshal(appConfig.OverrideValues) + if err != nil { + return errors.WithMessagef(err, "failed to unmarshall store app config values for %s", appName) + } + + storeAppConfig.OverrideValues = string(overrideValuesJSON) + launchUIValues, err := json.Marshal(appConfig.LaunchUIValues) + if err != nil { + return errors.WithMessagef(err, "failed to unmarshall store app config UI values for %s", appName) + } + storeAppConfig.LaunchUIValues = string(launchUIValues) + + if err := appStore.AddOrUpdateApp(storeAppConfig); err != nil { + return errors.WithMessagef(err, "failed to store app config for %s", appName) + } + } + return nil +} diff --git a/server/pkg/store/astra/app_store.go b/server/pkg/store/astra/app_store.go index 96fe1654..686e11f5 100644 --- a/server/pkg/store/astra/app_store.go +++ b/server/pkg/store/astra/app_store.go @@ -29,12 +29,12 @@ func (a *AstraServerStore) AddOrUpdateApp(config *types.StoreAppConfig) error { if appExists { query = &pb.Query{ Cql: fmt.Sprintf(updateAppConfigQuery, - a.keyspace, config.ChartName, config.RepoName, config.RepoURL, config.Namespace, config.CreateNamespace, config.PrivilegedNamespace, config.LaunchURL, config.LaunchRedirectURL, config.Category, config.Icon, config.Description, config.LaunchUIValues, config.OverrideValues, time.Now().Format("2006-01-02 15:04:05"), config.AppName, config.Version), + a.keyspace, config.ChartName, config.RepoName, config.RepoURL, config.Namespace, config.CreateNamespace, config.PrivilegedNamespace, config.LaunchURL, config.LaunchUIDescription, config.Category, config.Icon, config.Description, config.LaunchUIValues, config.OverrideValues, time.Now().Format("2006-01-02 15:04:05"), config.AppName, config.Version), } } else { query = &pb.Query{ Cql: fmt.Sprintf(createAppConfigQuery, - a.keyspace, config.AppName, config.ChartName, config.RepoName, config.ReleaseName, config.RepoURL, config.Namespace, config.Version, config.CreateNamespace, config.PrivilegedNamespace, config.LaunchURL, config.LaunchRedirectURL, config.Category, config.Icon, config.Description, config.LaunchUIValues, config.OverrideValues, time.Now().Format("2006-01-02 15:04:05"), uuid.New().String()), + a.keyspace, config.AppName, config.ChartName, config.RepoName, config.ReleaseName, config.RepoURL, config.Namespace, config.Version, config.CreateNamespace, config.PrivilegedNamespace, config.LaunchURL, config.LaunchUIDescription, config.Category, config.Icon, config.Description, config.LaunchUIValues, config.OverrideValues, time.Now().Format("2006-01-02 15:04:05"), uuid.New().String()), } } @@ -156,7 +156,7 @@ func toAppConfig(row *pb.Row) (*types.AppConfig, error) { if err != nil { return nil, fmt.Errorf("failed to get launch ui url: %w", err) } - cqlLaunchUiRedirectUrl, err := client.ToString(row.Values[9]) + cqlLaunchUiDescription, err := client.ToString(row.Values[9]) if err != nil { return nil, fmt.Errorf("failed to get launch ui redirect url: %w", err) } @@ -195,7 +195,7 @@ func toAppConfig(row *pb.Row) (*types.AppConfig, error) { CreateNamespace: cqlCreateNamespace, PrivilegedNamespace: cqlPrivilegedNamespace, LaunchUIURL: cqlLaunchUiUrl, - LaunchUIRedirectURL: cqlLaunchUiRedirectUrl, + LaunchUIDescription: cqlLaunchUiDescription, Category: cqlCategory, Icon: cqlIcon, Description: cqlDescription, @@ -226,7 +226,6 @@ func (a *AstraServerStore) isAppExistsInStore(name, version string) (bool, error } func (a *AstraServerStore) GetStoreAppValues(name, version string) (*types.AppConfig, error) { - selectQuery := &pb.Query{ Cql: fmt.Sprintf(getAppConfigQuery, a.keyspace, name, version), @@ -240,7 +239,7 @@ func (a *AstraServerStore) GetStoreAppValues(name, version string) (*types.AppCo result := response.GetResultSet() if len(result.Rows) == 0 { - return nil, fmt.Errorf("app: %s not found", name) + return nil, fmt.Errorf("app %s not found", name) } config, err := toAppConfig(result.Rows[0]) diff --git a/server/pkg/store/astra/store.go b/server/pkg/store/astra/store.go index b155e963..0e35c45c 100644 --- a/server/pkg/store/astra/store.go +++ b/server/pkg/store/astra/store.go @@ -1,16 +1,10 @@ package astra import ( - "encoding/json" "fmt" - "os" astraclient "github.com/kube-tarian/kad/server/pkg/astra-client" - "github.com/kube-tarian/kad/server/pkg/config" - "github.com/kube-tarian/kad/server/pkg/types" - "github.com/stargate/stargate-grpc-go-client/stargate/pkg/client" pb "github.com/stargate/stargate-grpc-go-client/stargate/pkg/proto" - "gopkg.in/yaml.v3" ) type AstraServerStore struct { @@ -50,81 +44,5 @@ func (a *AstraServerStore) InitializeDb() error { return fmt.Errorf("failed to initialise db: %w", err) } } - - if err := appStoreConfig(a, a.c.Session()); err != nil { - return err - } - - return nil -} - -func appStoreConfig(handler *AstraServerStore, session *client.StargateClient) error { - - cfg, err := config.GetServiceConfig() - if err != nil { - return fmt.Errorf("failed to load service config: %w", err) - } - - if cfg.ReadAppStoreConfig { - configData, err := os.ReadFile(cfg.AppStorConfig + "/" + appStoreConfigFileName) - if err != nil { - return fmt.Errorf("failed to read store config file: %w", err) - } - - var config AppStoreConfig - if err := yaml.Unmarshal(configData, &config); err != nil { - return fmt.Errorf("failed to unmarshall store config file: %w", err) - } - - for _, v := range append(config.CreateStoreApps, config.UpdateStoreApps...) { - appData, err := os.ReadFile(cfg.AppStorConfig + "/" + v + ".yaml") - if err != nil { - return fmt.Errorf("failed to read app store config file: %w. App name - %s", err, v) - } - - var appConfig AppConfig - if err := yaml.Unmarshal(appData, &appConfig); err != nil { - return fmt.Errorf("failed to unmarshall app store config file: %w. App name - %s", err, v) - } - - if appConfig.Name == "" || appConfig.Version == "" { - return fmt.Errorf("failed to add app config to store, %v", "App name/version is missing") - } - - storeAppConfig := &types.StoreAppConfig{ - AppName: appConfig.Name, - Version: appConfig.Version, - Category: appConfig.Category, - Description: appConfig.Description, - ChartName: appConfig.ChartName, - RepoName: appConfig.RepoName, - ReleaseName: appConfig.ReleaseName, - RepoURL: appConfig.RepoURL, - Namespace: appConfig.Namespace, - CreateNamespace: appConfig.CreateNamespace, - PrivilegedNamespace: appConfig.PrivilegedNamespace, - Icon: appConfig.Icon, - LaunchURL: appConfig.LaunchURL, - LaunchRedirectURL: appConfig.LaunchRedirectURL, - } - - overrideValuesJSON, err := json.Marshal(appConfig.OverrideValues) - if err != nil { - return fmt.Errorf("failed to marshall app store config file: %w. App name - %s", err, v) - } - storeAppConfig.OverrideValues = string(overrideValuesJSON) - launchUIValues, err := json.Marshal(appConfig.LaunchUIValues) - if err != nil { - return fmt.Errorf("failed to marshall app store config file: %w. App name - %s", err, v) - } - storeAppConfig.LaunchUIValues = string(launchUIValues) - - if err := handler.AddOrUpdateApp(storeAppConfig); err != nil { - return fmt.Errorf("failed to add app config to store, %v", err) - } - - } - } - return nil } diff --git a/server/pkg/store/astra/type.go b/server/pkg/store/astra/type.go index 9057502e..da0c5ec6 100644 --- a/server/pkg/store/astra/type.go +++ b/server/pkg/store/astra/type.go @@ -28,12 +28,7 @@ var ( } ) -type AppStoreConfig struct { - CreateStoreApps []string `yaml:"CreateStoreApps"` - UpdateStoreApps []string `yaml:"UpdateStoreApps"` -} - -type AppConfig struct { +type StoreAppConfig struct { Name string `yaml:"Name"` ChartName string `yaml:"ChartName"` Category string `yaml:"Category"` @@ -49,5 +44,5 @@ type AppConfig struct { OverrideValues map[string]interface{} `yaml:"OverrideValues"` LaunchUIValues map[string]interface{} `yaml:"LaunchUIValues"` LaunchURL string `yaml:"LaunchURL"` - LaunchRedirectURL string `yaml:"LaunchRedirectURL"` + LaunchUIDescription string `yaml:"LaunchUIDescription"` } diff --git a/server/pkg/types/type.go b/server/pkg/types/type.go index 1232b7e1..6424d6a6 100644 --- a/server/pkg/types/type.go +++ b/server/pkg/types/type.go @@ -42,8 +42,8 @@ type StoreAppConfig struct { CreateNamespace bool `json:"createNamespace"` PrivilegedNamespace bool `json:"privilegedNamespace"` Icon string `json:"icon,omitempty"` - LaunchURL string `json:"launchURL,omitempty"` - LaunchRedirectURL string `json:"launchRedirectURL,omitempty"` + LaunchURL string `yaml:"LaunchURL,omitempty"` + LaunchUIDescription string `yaml:"LaunchUIDescription,omitempty"` OverrideValues string `json:"overrideValues,omitempty"` LaunchUIValues string `json:"launchUIValues,omitempty"` } @@ -63,7 +63,7 @@ type AppConfig struct { CreateNamespace bool `cql:"create_namespace" json:"create_namespace"` PrivilegedNamespace bool `cql:"privileged_namespace" json:"privileged_namespace"` LaunchUIURL string `cql:"launch_ui_url" json:"launch_ui_url"` - LaunchUIRedirectURL string `cql:"launch_ui_redirect_url" json:"launch_ui_redirect_url"` + LaunchUIDescription string `cql:"launch_ui_redirect_url" json:"launch_ui_redirect_url"` Category string `cql:"category" json:"category"` Icon string `cql:"icon" json:"icon"` Description string `cql:"description" json:"description"` diff --git a/server/store-apps/app_list.yaml b/server/store-apps/app_list.yaml new file mode 100644 index 00000000..bdfd2839 --- /dev/null +++ b/server/store-apps/app_list.yaml @@ -0,0 +1,6 @@ +enabledApps: +- falco +- loki + +disabledApps: +- signoz \ No newline at end of file diff --git a/server/storeconfig/falco.yaml b/server/store-apps/conf/falco.yaml similarity index 100% rename from server/storeconfig/falco.yaml rename to server/store-apps/conf/falco.yaml diff --git a/server/storeconfig/loki.yaml b/server/store-apps/conf/loki.yaml similarity index 100% rename from server/storeconfig/loki.yaml rename to server/store-apps/conf/loki.yaml diff --git a/server/storeconfig/signoz.yaml b/server/store-apps/conf/signoz.yaml similarity index 100% rename from server/storeconfig/signoz.yaml rename to server/store-apps/conf/signoz.yaml diff --git a/server/storeconfig/storeconfig.yaml b/server/storeconfig/storeconfig.yaml deleted file mode 100644 index 82f20083..00000000 --- a/server/storeconfig/storeconfig.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# On server start, the below apps config file will read and added to the store. -CreateStoreApps: -- falco -- loki -- signoz - -# On server start, the below apps config will be read and updated in the store. -UpdateStoreApps: -- signoz -- loki -- signoz \ No newline at end of file