From 65aa51cb3f7c2cda67a922d62a28adab0c725b05 Mon Sep 17 00:00:00 2001 From: Venkatreddy KP Date: Mon, 28 Aug 2023 10:08:58 +0530 Subject: [PATCH] adding app template values --- capten/agent/pkg/agent/agent.go | 47 +- capten/agent/pkg/agent/agent_app_deploy.go | 93 +- capten/agent/pkg/agent/agent_conf_sso.go | 75 +- capten/agent/pkg/agent/agent_deployer.go | 38 - capten/agent/pkg/agentpb/agent.pb.go | 1488 ++++++----------- capten/agent/pkg/agentpb/agent_grpc.pb.go | 298 +--- .../pkg/capten-store/app_config_store.go | 62 +- .../agent/pkg/model/{payload.go => types.go} | 56 +- capten/agent/pkg/workers/climon.go | 161 -- capten/agent/pkg/workers/deployment.go | 5 +- capten/capten-sdk/agentpb/agent.pb.go | 1472 ++++++---------- capten/capten-sdk/agentpb/agent_grpc.pb.go | 296 +--- capten/cassandra/migrations/001_agent.up.cql | 4 +- charts/kad/Chart.yaml | 4 +- charts/kad/values.yaml | 2 +- charts/server/Chart.yaml | 4 +- charts/server/templates/deployment.yaml | 8 - charts/server/values.yaml | 6 - proto/agent.proto | 60 +- proto/server.proto | 18 +- server/cmd/server/main.go | 26 - server/data/store-apps/conf/argo-cd.yaml | 3 - server/data/store-apps/conf/crossplane.yaml | 1 - server/data/store-apps/conf/tekton.yaml | 1 - server/data/store-apps/conf/testkube.yaml | 1 - .../conf/values/argo-cd_template.yaml | 2 + server/openapi.yaml | 703 -------- server/pkg/api/server.go | 16 + server/pkg/api/store_apps.go | 124 +- server/pkg/handler/handle_agent.go | 85 - server/pkg/handler/handle_agent_test.go | 814 --------- server/pkg/handler/handle_climon.go | 92 - server/pkg/handler/handle_config_cluster.go | 74 - server/pkg/handler/handle_config_project.go | 77 - server/pkg/handler/handle_config_repo.go | 78 - server/pkg/handler/handle_deploy.go | 108 -- server/pkg/handler/handle_storage.go | 60 - server/pkg/handler/handler.go | 49 - server/pkg/handler/util.go | 46 - server/pkg/pb/agentpb/agent.pb.go | 1488 ++++++----------- server/pkg/pb/agentpb/agent_grpc.pb.go | 298 +--- server/pkg/pb/serverpb/server.pb.go | 625 ++++--- server/pkg/pb/serverpb/server_grpc.pb.go | 2 +- server/pkg/store-apps/sync_store_apps.go | 5 +- server/pkg/store/astra/app_store.go | 31 +- server/pkg/store/astra/type.go | 2 +- server/pkg/store/store.go | 2 +- server/pkg/types/type.go | 4 +- 48 files changed, 2317 insertions(+), 6697 deletions(-) delete mode 100644 capten/agent/pkg/agent/agent_deployer.go rename capten/agent/pkg/model/{payload.go => types.go} (58%) delete mode 100644 capten/agent/pkg/workers/climon.go create mode 100644 server/data/store-apps/conf/values/argo-cd_template.yaml delete mode 100644 server/openapi.yaml delete mode 100644 server/pkg/handler/handle_agent.go delete mode 100644 server/pkg/handler/handle_agent_test.go delete mode 100644 server/pkg/handler/handle_climon.go delete mode 100644 server/pkg/handler/handle_config_cluster.go delete mode 100644 server/pkg/handler/handle_config_project.go delete mode 100644 server/pkg/handler/handle_config_repo.go delete mode 100644 server/pkg/handler/handle_deploy.go delete mode 100644 server/pkg/handler/handle_storage.go delete mode 100644 server/pkg/handler/handler.go delete mode 100644 server/pkg/handler/util.go diff --git a/capten/agent/pkg/agent/agent.go b/capten/agent/pkg/agent/agent.go index 72ce125e..2bb5a9bc 100644 --- a/capten/agent/pkg/agent/agent.go +++ b/capten/agent/pkg/agent/agent.go @@ -1,9 +1,10 @@ package agent import ( + "bytes" "context" - "errors" "fmt" + "html/template" "github.com/gogo/status" "github.com/intelops/go-common/logging" @@ -13,9 +14,11 @@ import ( "github.com/kube-tarian/kad/capten/agent/pkg/temporalclient" "github.com/kube-tarian/kad/capten/agent/pkg/workers" ory "github.com/ory/client-go" + "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "gopkg.in/yaml.v2" "go.temporal.io/sdk/client" ) @@ -161,3 +164,45 @@ func verifyToken(log logging.Logger, oryPAT, token string, oryApiClient *ory.API } return introspect.Active, nil } + +func executeTemplateValuesTemplate(data []byte, values map[string]any) (transformedData []byte, err error) { + tmpl, err := template.New("templateVal").Parse(string(data)) + if err != nil { + return + } + + var buf bytes.Buffer + err = tmpl.Execute(&buf, values) + if err != nil { + return + } + + transformedData = buf.Bytes() + return +} + +func deriveTemplateValuesMapping(overrideValues, templateValues []byte) (map[string]any, error) { + templateValues, err := deriveTemplateValues(overrideValues, templateValues) + if err != nil { + return nil, err + } + + templateValuesMapping := map[string]any{} + if err := yaml.Unmarshal(templateValues, &templateValuesMapping); err != nil { + return nil, errors.WithMessagef(err, "failed to Unmarshal template values") + } + return templateValuesMapping, nil +} + +func deriveTemplateValues(overrideValues, templateValues []byte) ([]byte, error) { + overrideValuesMapping := map[string]any{} + if err := yaml.Unmarshal(overrideValues, &overrideValuesMapping); err != nil { + return nil, errors.WithMessagef(err, "failed to Unmarshal override values") + } + + templateValues, err := executeTemplateValuesTemplate(templateValues, overrideValuesMapping) + if err != nil { + return nil, errors.WithMessagef(err, "failed to exeute template values update") + } + return templateValues, nil +} diff --git a/capten/agent/pkg/agent/agent_app_deploy.go b/capten/agent/pkg/agent/agent_app_deploy.go index f4432b81..c550e8ae 100644 --- a/capten/agent/pkg/agent/agent_app_deploy.go +++ b/capten/agent/pkg/agent/agent_app_deploy.go @@ -5,65 +5,36 @@ import ( "encoding/base64" "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" + "github.com/kube-tarian/kad/capten/agent/pkg/model" "github.com/kube-tarian/kad/capten/agent/pkg/workers" ) -func (a *Agent) ClimonAppInstall(ctx context.Context, request *agentpb.ClimonInstallRequest) (*agentpb.JobResponse, error) { - a.log.Infof("Recieved Climon Install event %+v", request) - worker := workers.NewClimon(a.tc, a.log) - - if request.ClusterName == "" { - request.ClusterName = "inbuilt" - } - run, err := worker.SendEvent(ctx, "install", request) - if err != nil { - return &agentpb.JobResponse{}, err - } - - return prepareJobResponse(run, worker.GetWorkflowName()), err -} - -func (a *Agent) ClimonAppDelete(ctx context.Context, request *agentpb.ClimonDeleteRequest) (*agentpb.JobResponse, error) { - a.log.Infof("Recieved Climon delete event %+v", request) - worker := workers.NewClimon(a.tc, a.log) - - if request.ClusterName == "" { - request.ClusterName = "inbuilt" - } - run, err := worker.SendDeleteEvent(ctx, "delete", request) - if err != nil { - return &agentpb.JobResponse{}, err - } - - return prepareJobResponse(run, worker.GetWorkflowName()), err -} - func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppRequest) (*agentpb.InstallAppResponse, error) { a.log.Infof("Recieved App Install request %+v", request) worker := workers.NewDeployment(a.tc, a.log) - config := &agentpb.ApplicationInstallRequest{ - PluginName: "helm", - RepoName: request.AppConfig.RepoName, - RepoUrl: request.AppConfig.RepoURL, - ChartName: request.AppConfig.ChartName, - Namespace: request.AppConfig.Namespace, - ReleaseName: request.AppConfig.ReleaseName, - Version: request.AppConfig.Version, - ClusterName: "capten", - ValuesYaml: base64.StdEncoding.EncodeToString(request.AppValues.OverrideValues), - Timeout: 5, - } - - run, err := worker.SendEvent(ctx, "install", config) + templateValues, err := deriveTemplateValues(request.AppValues.OverrideValues, request.AppValues.TemplateValues) if err != nil { - a.log.Errorf("failed to send store app install event, %v", err) + a.log.Errorf("failed to derive template values, %v", err) return &agentpb.InstallAppResponse{ Status: agentpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: "Internall error in create install app job", + StatusMessage: "failed to derive template values", }, err } + config := &model.ApplicationInstallRequest{ + PluginName: "helm", + RepoName: request.AppConfig.RepoName, + RepoURL: request.AppConfig.RepoURL, + ChartName: request.AppConfig.ChartName, + Namespace: request.AppConfig.Namespace, + ReleaseName: request.AppConfig.ReleaseName, + Version: request.AppConfig.Version, + ClusterName: "capten", + OverrideValues: base64.StdEncoding.EncodeToString(templateValues), + Timeout: 5, + } + syncConfig := &agentpb.SyncAppData{ Config: &agentpb.AppConfig{ ReleaseName: request.AppConfig.ReleaseName, @@ -80,7 +51,7 @@ func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppReque Icon: request.AppConfig.Icon, LaunchURL: request.AppConfig.LaunchURL, LaunchUIDescription: request.AppConfig.LaunchUIDescription, - InstallStatus: "Installed", + InstallStatus: "Installing", DefualtApp: request.AppConfig.DefualtApp, }, Values: &agentpb.AppValues{ @@ -97,11 +68,37 @@ func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppReque }, err } + _, err = worker.SendEvent(ctx, "install", config) + if err != nil { + syncConfig.Config.InstallStatus = "Install Failed" + if err := a.as.UpsertAppConfig(syncConfig); err != nil { + a.log.Errorf("failed to update sync app config, %v", err) + return &agentpb.InstallAppResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to sync app config", + }, err + } + + a.log.Errorf("failed to send store app install event, %v", err) + return &agentpb.InstallAppResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "Internall error in create install app job", + }, err + } + + syncConfig.Config.InstallStatus = "Installed" + if err := a.as.UpsertAppConfig(syncConfig); err != nil { + a.log.Errorf("failed to update sync app config, %v", err) + return &agentpb.InstallAppResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to sync app config", + }, err + } + a.log.Infof("Sync app [%s] successful", request.AppConfig.ReleaseName) 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_conf_sso.go b/capten/agent/pkg/agent/agent_conf_sso.go index 0d144726..4886a7a2 100644 --- a/capten/agent/pkg/agent/agent_conf_sso.go +++ b/capten/agent/pkg/agent/agent_conf_sso.go @@ -9,6 +9,7 @@ import ( "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" "github.com/kube-tarian/kad/capten/agent/pkg/credential" + "github.com/kube-tarian/kad/capten/agent/pkg/model" "github.com/kube-tarian/kad/capten/agent/pkg/workers" "github.com/pkg/errors" "gopkg.in/yaml.v2" @@ -16,14 +17,13 @@ import ( func (a *Agent) ConfigureAppSSO( ctx context.Context, req *agentpb.ConfigureAppSSORequest) (*agentpb.ConfigureAppSSOResponse, error) { - if req.ReleaseName == "" { return &agentpb.ConfigureAppSSOResponse{ Status: agentpb.StatusCode_INVALID_ARGUMENT, StatusMessage: "release name empty", }, nil } - a.log.Infof("Received request for ConfigureAppSSO, release_name: %s\n", req.ReleaseName) + a.log.Infof("Received request for ConfigureAppSSO, app %s", req.ReleaseName) appConfig, err := a.as.GetAppConfig(req.ReleaseName) if err != nil { @@ -35,7 +35,6 @@ func (a *Agent) ConfigureAppSSO( } if err := credential.StoreAppOauthCredential(ctx, req.ReleaseName, req.ClientId, req.ClientSecret); err != nil { - a.log.Audit("security", "storecred", "failed", "system", "failed to intialize credentails for clientId: %s", req.ClientId) a.log.Errorf("failed to store credential for ClientId: %s, %v", req.ClientId, err) return &agentpb.ConfigureAppSSOResponse{ Status: agentpb.StatusCode_INTERNRAL_ERROR, @@ -49,25 +48,24 @@ func (a *Agent) ConfigureAppSSO( "OAuthBaseURL": req.OAuthBaseURL, } - launchUiMapping, overrideValuesMapping := map[string]any{}, map[any]any{} - - if err := yaml.Unmarshal(appConfig.Values.LaunchUIValues, &launchUiMapping); err != nil { - a.log.Errorf("failed to Unmarshal LaunchUIValues: %s err: %v", string(appConfig.Values.LaunchUIValues), err) + templateValuesMapping, err := deriveTemplateValuesMapping(appConfig.Values.OverrideValues, appConfig.Values.TemplateValues) + if err != nil { + a.log.Errorf("failed to derivee template values, err: %v", err) return &agentpb.ConfigureAppSSOResponse{ Status: agentpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: errors.WithMessage(err, "err Unmarshalling launchiUiValues").Error(), + StatusMessage: errors.WithMessage(err, "failed to dervice template values").Error(), }, nil } - if err := yaml.Unmarshal(appConfig.Values.OverrideValues, &overrideValuesMapping); err != nil { - a.log.Errorf("failed to Unmarshal OverrideValues: %s err: %v", string(appConfig.Values.OverrideValues), err) + launchUiMapping := map[string]any{} + if err := yaml.Unmarshal(appConfig.Values.LaunchUIValues, &launchUiMapping); err != nil { + a.log.Errorf("failed to Unmarshal LaunchUIValues: %s err: %v", string(appConfig.Values.LaunchUIValues), err) return &agentpb.ConfigureAppSSOResponse{ Status: agentpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: errors.WithMessage(err, "err Unmarshalling overrideValues").Error(), + StatusMessage: errors.WithMessage(err, "err Unmarshalling launchiUiValues").Error(), }, nil } - // replace values launchUiMapping, err = replaceTemplateValues(launchUiMapping, ssoOverwriteMapping) if err != nil { a.log.Errorf("failed to replaceTemplateValues, err: %v", err) @@ -77,11 +75,8 @@ func (a *Agent) ConfigureAppSSO( }, nil } - // merge values - overrideValuesMapping = mergeRecursive(overrideValuesMapping, convertKey(launchUiMapping)) - - // update override values in db - marshaledOverrideValues, err := yaml.Marshal(overrideValuesMapping) + finalOverrideValuesMapping := mergeRecursive(convertKey(templateValuesMapping), convertKey(launchUiMapping)) + marshaledOverrideValues, err := yaml.Marshal(finalOverrideValuesMapping) if err != nil { a.log.Errorf("failed to Marshal, err: %v", err) return &agentpb.ConfigureAppSSOResponse{ @@ -89,13 +84,31 @@ func (a *Agent) ConfigureAppSSO( StatusMessage: errors.WithMessage(err, "err marshalling overrideValues").Error(), }, nil } + newAppConfig := *appConfig newAppConfig.Values.OverrideValues = marshaledOverrideValues + newAppConfig.Config.InstallStatus = "Updating" + + if err := a.as.UpsertAppConfig(&newAppConfig); err != nil { + a.log.Errorf("failed to UpsertAppConfig, err: %v", err) + return &agentpb.ConfigureAppSSOResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: errors.WithMessage(err, "err upserting new appConfig").Error(), + }, nil + } - // start temporal workflow to redploy apps wd := workers.NewDeployment(a.tc, a.log) run, err := wd.SendEvent(context.TODO(), "update", installRequestFromSyncApp(&newAppConfig)) if err != nil { + newAppConfig.Config.InstallStatus = "Update Failed" + if err := a.as.UpsertAppConfig(&newAppConfig); err != nil { + a.log.Errorf("failed to UpsertAppConfig, err: %v", err) + return &agentpb.ConfigureAppSSOResponse{ + Status: agentpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: errors.WithMessage(err, "err upserting new appConfig").Error(), + }, nil + } + a.log.Errorf("failed to SendEvent, err: %v", err) return &agentpb.ConfigureAppSSOResponse{ Status: agentpb.StatusCode_INTERNRAL_ERROR, @@ -103,7 +116,7 @@ func (a *Agent) ConfigureAppSSO( }, nil } - // update new values in db + newAppConfig.Config.InstallStatus = "Updated" if err := a.as.UpsertAppConfig(&newAppConfig); err != nil { a.log.Errorf("failed to UpsertAppConfig, err: %v", err) return &agentpb.ConfigureAppSSOResponse{ @@ -186,19 +199,19 @@ func convertKey(m map[string]any) map[any]any { return ret } -func installRequestFromSyncApp(data *agentpb.SyncAppData) *agentpb.ApplicationInstallRequest { +func installRequestFromSyncApp(data *agentpb.SyncAppData) *model.ApplicationInstallRequest { values := make([]byte, len(data.Values.OverrideValues)) copy(values, data.Values.OverrideValues) - return &agentpb.ApplicationInstallRequest{ - PluginName: "helm", - RepoName: data.Config.RepoName, - RepoUrl: data.Config.RepoURL, - ChartName: data.Config.ChartName, - Namespace: data.Config.Namespace, - ReleaseName: data.Config.ReleaseName, - Version: data.Config.Version, - ClusterName: "capten", - ValuesYaml: string(values), - Timeout: 10, + return &model.ApplicationInstallRequest{ + PluginName: "helm", + RepoName: data.Config.RepoName, + RepoURL: data.Config.RepoURL, + ChartName: data.Config.ChartName, + Namespace: data.Config.Namespace, + ReleaseName: data.Config.ReleaseName, + Version: data.Config.Version, + ClusterName: "capten", + OverrideValues: string(values), + Timeout: 10, } } diff --git a/capten/agent/pkg/agent/agent_deployer.go b/capten/agent/pkg/agent/agent_deployer.go deleted file mode 100644 index 986596a3..00000000 --- a/capten/agent/pkg/agent/agent_deployer.go +++ /dev/null @@ -1,38 +0,0 @@ -package agent - -import ( - "context" - - "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" - "github.com/kube-tarian/kad/capten/agent/pkg/workers" -) - -func (a *Agent) DeployerAppInstall(ctx context.Context, request *agentpb.ApplicationInstallRequest) (*agentpb.JobResponse, error) { - a.log.Infof("Recieved Deployer Install event %+v", request) - worker := workers.NewDeployment(a.tc, a.log) - - if request.ClusterName == "" { - request.ClusterName = "inbuilt" - } - run, err := worker.SendEvent(ctx, "install", request) - if err != nil { - return &agentpb.JobResponse{}, err - } - - return prepareJobResponse(run, worker.GetWorkflowName()), err -} - -func (a *Agent) DeployerAppDelete(ctx context.Context, request *agentpb.ApplicationDeleteRequest) (*agentpb.JobResponse, error) { - a.log.Infof("Recieved Deployer delete event %+v", request) - worker := workers.NewDeployment(a.tc, a.log) - - if request.ClusterName == "" { - request.ClusterName = "inbuilt" - } - run, err := worker.SendDeleteEvent(ctx, "delete", request) - if err != nil { - return &agentpb.JobResponse{}, err - } - - return prepareJobResponse(run, worker.GetWorkflowName()), err -} diff --git a/capten/agent/pkg/agentpb/agent.pb.go b/capten/agent/pkg/agentpb/agent.pb.go index f3ef2596..e7ff5d73 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" ) @@ -284,394 +284,6 @@ func (x *StoreCredentialResponse) GetStatusMessage() string { return "" } -type ClimonInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonInstallRequest) Reset() { - *x = ClimonInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonInstallRequest) ProtoMessage() {} - -func (x *ClimonInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClimonInstallRequest.ProtoReflect.Descriptor instead. -func (*ClimonInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{4} -} - -func (x *ClimonInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ClimonInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ClimonInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ClimonInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ClimonDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonDeleteRequest) Reset() { - *x = ClimonDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonDeleteRequest) ProtoMessage() {} - -func (x *ClimonDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[5] - 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 ClimonDeleteRequest.ProtoReflect.Descriptor instead. -func (*ClimonDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{5} -} - -func (x *ClimonDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ApplicationInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` - ValuesYaml string `protobuf:"bytes,10,opt,name=values_yaml,json=valuesYaml,proto3" json:"values_yaml,omitempty"` -} - -func (x *ApplicationInstallRequest) Reset() { - *x = ApplicationInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationInstallRequest) ProtoMessage() {} - -func (x *ApplicationInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[6] - 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 ApplicationInstallRequest.ProtoReflect.Descriptor instead. -func (*ApplicationInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{6} -} - -func (x *ApplicationInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ApplicationInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ApplicationInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ApplicationInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -func (x *ApplicationInstallRequest) GetValuesYaml() string { - if x != nil { - return x.ValuesYaml - } - return "" -} - -type ApplicationDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ApplicationDeleteRequest) Reset() { - *x = ApplicationDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationDeleteRequest) ProtoMessage() {} - -func (x *ApplicationDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[7] - 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 ApplicationDeleteRequest.ProtoReflect.Descriptor instead. -func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{7} -} - -func (x *ApplicationDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - type ClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -684,7 +296,7 @@ type ClusterRequest struct { func (x *ClusterRequest) Reset() { *x = ClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -697,7 +309,7 @@ func (x *ClusterRequest) String() string { func (*ClusterRequest) ProtoMessage() {} func (x *ClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -710,7 +322,7 @@ func (x *ClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterRequest.ProtoReflect.Descriptor instead. func (*ClusterRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{8} + return file_agent_proto_rawDescGZIP(), []int{4} } func (x *ClusterRequest) GetPluginName() string { @@ -740,7 +352,7 @@ type RepositoryAddRequest struct { func (x *RepositoryAddRequest) Reset() { *x = RepositoryAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +365,7 @@ func (x *RepositoryAddRequest) String() string { func (*RepositoryAddRequest) ProtoMessage() {} func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +378,7 @@ func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryAddRequest.ProtoReflect.Descriptor instead. func (*RepositoryAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{9} + return file_agent_proto_rawDescGZIP(), []int{5} } func (x *RepositoryAddRequest) GetPluginName() string { @@ -802,7 +414,7 @@ type RepositoryDeleteRequest struct { func (x *RepositoryDeleteRequest) Reset() { *x = RepositoryDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -815,7 +427,7 @@ func (x *RepositoryDeleteRequest) String() string { func (*RepositoryDeleteRequest) ProtoMessage() {} func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -828,7 +440,7 @@ func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryDeleteRequest.ProtoReflect.Descriptor instead. func (*RepositoryDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{10} + return file_agent_proto_rawDescGZIP(), []int{6} } func (x *RepositoryDeleteRequest) GetPluginName() string { @@ -857,7 +469,7 @@ type ProjectAddRequest struct { func (x *ProjectAddRequest) Reset() { *x = ProjectAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -870,7 +482,7 @@ func (x *ProjectAddRequest) String() string { func (*ProjectAddRequest) ProtoMessage() {} func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -883,7 +495,7 @@ func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectAddRequest.ProtoReflect.Descriptor instead. func (*ProjectAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{11} + return file_agent_proto_rawDescGZIP(), []int{7} } func (x *ProjectAddRequest) GetPluginName() string { @@ -912,7 +524,7 @@ type ProjectDeleteRequest struct { func (x *ProjectDeleteRequest) Reset() { *x = ProjectDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -925,7 +537,7 @@ func (x *ProjectDeleteRequest) String() string { func (*ProjectDeleteRequest) ProtoMessage() {} func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -938,7 +550,7 @@ func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{12} + return file_agent_proto_rawDescGZIP(), []int{8} } func (x *ProjectDeleteRequest) GetPluginName() string { @@ -960,14 +572,14 @@ 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() { *x = JobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +592,7 @@ func (x *JobRequest) String() string { func (*JobRequest) ProtoMessage() {} func (x *JobRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +605,7 @@ func (x *JobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JobRequest.ProtoReflect.Descriptor instead. func (*JobRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{13} + return file_agent_proto_rawDescGZIP(), []int{9} } func (x *JobRequest) GetOperation() string { @@ -1003,7 +615,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 } @@ -1023,7 +635,7 @@ type JobResponse struct { func (x *JobResponse) Reset() { *x = JobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1036,7 +648,7 @@ func (x *JobResponse) String() string { func (*JobResponse) ProtoMessage() {} func (x *JobResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1049,7 +661,7 @@ func (x *JobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JobResponse.ProtoReflect.Descriptor instead. func (*JobResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{14} + return file_agent_proto_rawDescGZIP(), []int{10} } func (x *JobResponse) GetId() string { @@ -1084,7 +696,7 @@ type SyncAppRequest struct { func (x *SyncAppRequest) Reset() { *x = SyncAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1097,7 +709,7 @@ func (x *SyncAppRequest) String() string { func (*SyncAppRequest) ProtoMessage() {} func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1110,7 +722,7 @@ func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppRequest.ProtoReflect.Descriptor instead. func (*SyncAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{15} + return file_agent_proto_rawDescGZIP(), []int{11} } func (x *SyncAppRequest) GetData() *SyncAppData { @@ -1132,7 +744,7 @@ type SyncAppResponse struct { func (x *SyncAppResponse) Reset() { *x = SyncAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1145,7 +757,7 @@ func (x *SyncAppResponse) String() string { func (*SyncAppResponse) ProtoMessage() {} func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1158,7 +770,7 @@ func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppResponse.ProtoReflect.Descriptor instead. func (*SyncAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{16} + return file_agent_proto_rawDescGZIP(), []int{12} } func (x *SyncAppResponse) GetStatus() StatusCode { @@ -1184,7 +796,7 @@ type GetClusterAppsRequest struct { func (x *GetClusterAppsRequest) Reset() { *x = GetClusterAppsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +809,7 @@ func (x *GetClusterAppsRequest) String() string { func (*GetClusterAppsRequest) ProtoMessage() {} func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +822,7 @@ func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppsRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{17} + return file_agent_proto_rawDescGZIP(), []int{13} } type GetClusterAppsResponse struct { @@ -1226,7 +838,7 @@ type GetClusterAppsResponse struct { func (x *GetClusterAppsResponse) Reset() { *x = GetClusterAppsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +851,7 @@ func (x *GetClusterAppsResponse) String() string { func (*GetClusterAppsResponse) ProtoMessage() {} func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +864,7 @@ func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppsResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{18} + return file_agent_proto_rawDescGZIP(), []int{14} } func (x *GetClusterAppsResponse) GetStatus() StatusCode { @@ -1285,7 +897,7 @@ type GetClusterAppLaunchesRequest struct { func (x *GetClusterAppLaunchesRequest) Reset() { *x = GetClusterAppLaunchesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1298,7 +910,7 @@ func (x *GetClusterAppLaunchesRequest) String() string { func (*GetClusterAppLaunchesRequest) ProtoMessage() {} func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1311,7 +923,7 @@ func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{19} + return file_agent_proto_rawDescGZIP(), []int{15} } type GetClusterAppLaunchesResponse struct { @@ -1327,7 +939,7 @@ type GetClusterAppLaunchesResponse struct { func (x *GetClusterAppLaunchesResponse) Reset() { *x = GetClusterAppLaunchesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +952,7 @@ func (x *GetClusterAppLaunchesResponse) String() string { func (*GetClusterAppLaunchesResponse) ProtoMessage() {} func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +965,7 @@ func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{20} + return file_agent_proto_rawDescGZIP(), []int{16} } func (x *GetClusterAppLaunchesResponse) GetStatus() StatusCode { @@ -1391,7 +1003,7 @@ type ConfigureAppSSORequest struct { func (x *ConfigureAppSSORequest) Reset() { *x = ConfigureAppSSORequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1016,7 @@ func (x *ConfigureAppSSORequest) String() string { func (*ConfigureAppSSORequest) ProtoMessage() {} func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1029,7 @@ func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSORequest.ProtoReflect.Descriptor instead. func (*ConfigureAppSSORequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{21} + return file_agent_proto_rawDescGZIP(), []int{17} } func (x *ConfigureAppSSORequest) GetReleaseName() string { @@ -1460,7 +1072,7 @@ type ConfigureAppSSOResponse struct { func (x *ConfigureAppSSOResponse) Reset() { *x = ConfigureAppSSOResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1473,7 +1085,7 @@ func (x *ConfigureAppSSOResponse) String() string { func (*ConfigureAppSSOResponse) ProtoMessage() {} func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,7 +1098,7 @@ func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSOResponse.ProtoReflect.Descriptor instead. func (*ConfigureAppSSOResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{22} + return file_agent_proto_rawDescGZIP(), []int{18} } func (x *ConfigureAppSSOResponse) GetStatus() StatusCode { @@ -1514,7 +1126,7 @@ type GetClusterAppConfigRequest struct { func (x *GetClusterAppConfigRequest) Reset() { *x = GetClusterAppConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1139,7 @@ func (x *GetClusterAppConfigRequest) String() string { func (*GetClusterAppConfigRequest) ProtoMessage() {} func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1152,7 @@ func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{23} + return file_agent_proto_rawDescGZIP(), []int{19} } func (x *GetClusterAppConfigRequest) GetReleaseName() string { @@ -1563,7 +1175,7 @@ type GetClusterAppConfigResponse struct { func (x *GetClusterAppConfigResponse) Reset() { *x = GetClusterAppConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1188,7 @@ func (x *GetClusterAppConfigResponse) String() string { func (*GetClusterAppConfigResponse) ProtoMessage() {} func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1201,7 @@ func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{24} + return file_agent_proto_rawDescGZIP(), []int{20} } func (x *GetClusterAppConfigResponse) GetStatus() StatusCode { @@ -1624,7 +1236,7 @@ type GetClusterAppValuesRequest struct { func (x *GetClusterAppValuesRequest) Reset() { *x = GetClusterAppValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1637,7 +1249,7 @@ func (x *GetClusterAppValuesRequest) String() string { func (*GetClusterAppValuesRequest) ProtoMessage() {} func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1650,7 +1262,7 @@ func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{25} + return file_agent_proto_rawDescGZIP(), []int{21} } func (x *GetClusterAppValuesRequest) GetReleaseName() string { @@ -1673,7 +1285,7 @@ type GetClusterAppValuesResponse struct { func (x *GetClusterAppValuesResponse) Reset() { *x = GetClusterAppValuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1686,7 +1298,7 @@ func (x *GetClusterAppValuesResponse) String() string { func (*GetClusterAppValuesResponse) ProtoMessage() {} func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1699,7 +1311,7 @@ func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{26} + return file_agent_proto_rawDescGZIP(), []int{22} } func (x *GetClusterAppValuesResponse) GetStatus() StatusCode { @@ -1735,7 +1347,7 @@ type InstallAppRequest struct { func (x *InstallAppRequest) Reset() { *x = InstallAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1360,7 @@ func (x *InstallAppRequest) String() string { func (*InstallAppRequest) ProtoMessage() {} func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1373,7 @@ func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppRequest.ProtoReflect.Descriptor instead. func (*InstallAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{23} } func (x *InstallAppRequest) GetAppConfig() *AppConfig { @@ -1783,15 +1395,14 @@ type InstallAppResponse struct { 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"` + 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"` } func (x *InstallAppResponse) Reset() { *x = InstallAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1804,7 +1415,7 @@ func (x *InstallAppResponse) String() string { func (*InstallAppResponse) ProtoMessage() {} func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1817,7 +1428,7 @@ func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppResponse.ProtoReflect.Descriptor instead. func (*InstallAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{24} } func (x *InstallAppResponse) GetStatus() StatusCode { @@ -1834,13 +1445,6 @@ func (x *InstallAppResponse) GetStatusMessage() string { return "" } -func (x *InstallAppResponse) GetJobResponse() *JobResponse { - if x != nil { - return x.JobResponse - } - return nil -} - type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1853,7 +1457,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1866,7 +1470,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1879,7 +1483,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{25} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1908,7 +1512,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1921,7 +1525,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1934,7 +1538,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{26} } func (x *AppData) GetConfig() *AppConfig { @@ -1962,7 +1566,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1975,7 +1579,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1988,7 +1592,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{27} } func (x *AppStatus) GetRuntimeStatus() string { @@ -2020,12 +1624,13 @@ type AppConfig struct { InstallStatus string `protobuf:"bytes,15,opt,name=installStatus,proto3" json:"installStatus,omitempty"` RuntimeStatus string `protobuf:"bytes,16,opt,name=runtimeStatus,proto3" json:"runtimeStatus,omitempty"` DefualtApp bool `protobuf:"varint,17,opt,name=defualtApp,proto3" json:"defualtApp,omitempty"` + LastUpdateTime string `protobuf:"bytes,18,opt,name=lastUpdateTime,proto3" json:"lastUpdateTime,omitempty"` } func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2038,7 +1643,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2051,7 +1656,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{28} } func (x *AppConfig) GetReleaseName() string { @@ -2173,6 +1778,13 @@ func (x *AppConfig) GetDefualtApp() bool { return false } +func (x *AppConfig) GetLastUpdateTime() string { + if x != nil { + return x.LastUpdateTime + } + return "" +} + type AppValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2180,12 +1792,13 @@ type AppValues struct { OverrideValues []byte `protobuf:"bytes,1,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` LaunchUIValues []byte `protobuf:"bytes,2,opt,name=launchUIValues,proto3" json:"launchUIValues,omitempty"` + TemplateValues []byte `protobuf:"bytes,3,opt,name=templateValues,proto3" json:"templateValues,omitempty"` } func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +1811,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +1824,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{33} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *AppValues) GetOverrideValues() []byte { @@ -2228,6 +1841,13 @@ func (x *AppValues) GetLaunchUIValues() []byte { return nil } +func (x *AppValues) GetTemplateValues() []byte { + if x != nil { + return x.TemplateValues + } + return nil +} + type AppLaunchConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2244,7 +1864,7 @@ type AppLaunchConfig struct { func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2257,7 +1877,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2270,7 +1890,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{34} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2350,383 +1970,302 @@ var file_agent_proto_rawDesc = []byte{ 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, 0x22, 0xa6, - 0x02, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x6d, - 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcc, - 0x02, 0x0a, 0x19, 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, 0x12, 0x1f, 0x0a, 0x0b, + 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x54, + 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xb9, 0x01, - 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x0e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x11, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, - 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x57, 0x0a, 0x0b, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, - 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, - 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x73, 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, 0x2a, 0x0a, 0x07, - 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, 0x1c, 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, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 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, 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, 0x44, 0x0a, - 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, - 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, + 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x57, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x75, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 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, 0x2a, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, + 0x1c, 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, 0x22, 0xb8, 0x01, + 0x0a, 0x1d, 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, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, - 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, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, + 0x67, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, + 0x73, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, + 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, 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, 0x22, 0x9c, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, + 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 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, 0x77, 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, 0x12, 0x30, 0x0a, - 0x09, 0x61, 0x70, 0x70, 0x56, 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, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 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, + 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, + 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, 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, 0x22, 0x9c, 0x01, 0x0a, + 0x1b, 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, 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, + 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, 0x77, 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, 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, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 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, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x22, 0x67, 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, 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, 0xe5, 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, 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, + 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, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x83, 0x01, 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, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 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, 0xd9, 0x09, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 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, 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, + 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, 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, + 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, 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, + 0x6e, 0x73, 0x65, 0x22, 0x00, 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, 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, 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, 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, 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, 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, + 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 ( @@ -2742,116 +2281,103 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest (*PingResponse)(nil), // 2: agentpb.PingResponse (*StoreCredentialRequest)(nil), // 3: agentpb.StoreCredentialRequest (*StoreCredentialResponse)(nil), // 4: agentpb.StoreCredentialResponse - (*ClimonInstallRequest)(nil), // 5: agentpb.ClimonInstallRequest - (*ClimonDeleteRequest)(nil), // 6: agentpb.ClimonDeleteRequest - (*ApplicationInstallRequest)(nil), // 7: agentpb.ApplicationInstallRequest - (*ApplicationDeleteRequest)(nil), // 8: agentpb.ApplicationDeleteRequest - (*ClusterRequest)(nil), // 9: agentpb.ClusterRequest - (*RepositoryAddRequest)(nil), // 10: agentpb.RepositoryAddRequest - (*RepositoryDeleteRequest)(nil), // 11: agentpb.RepositoryDeleteRequest - (*ProjectAddRequest)(nil), // 12: agentpb.ProjectAddRequest - (*ProjectDeleteRequest)(nil), // 13: agentpb.ProjectDeleteRequest - (*JobRequest)(nil), // 14: agentpb.JobRequest - (*JobResponse)(nil), // 15: agentpb.JobResponse - (*SyncAppRequest)(nil), // 16: agentpb.SyncAppRequest - (*SyncAppResponse)(nil), // 17: agentpb.SyncAppResponse - (*GetClusterAppsRequest)(nil), // 18: agentpb.GetClusterAppsRequest - (*GetClusterAppsResponse)(nil), // 19: agentpb.GetClusterAppsResponse - (*GetClusterAppLaunchesRequest)(nil), // 20: agentpb.GetClusterAppLaunchesRequest - (*GetClusterAppLaunchesResponse)(nil), // 21: agentpb.GetClusterAppLaunchesResponse - (*ConfigureAppSSORequest)(nil), // 22: agentpb.ConfigureAppSSORequest - (*ConfigureAppSSOResponse)(nil), // 23: agentpb.ConfigureAppSSOResponse - (*GetClusterAppConfigRequest)(nil), // 24: agentpb.GetClusterAppConfigRequest - (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse - (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest - (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*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 - (*anypb.Any)(nil), // 37: google.protobuf.Any + (*ClusterRequest)(nil), // 5: agentpb.ClusterRequest + (*RepositoryAddRequest)(nil), // 6: agentpb.RepositoryAddRequest + (*RepositoryDeleteRequest)(nil), // 7: agentpb.RepositoryDeleteRequest + (*ProjectAddRequest)(nil), // 8: agentpb.ProjectAddRequest + (*ProjectDeleteRequest)(nil), // 9: agentpb.ProjectDeleteRequest + (*JobRequest)(nil), // 10: agentpb.JobRequest + (*JobResponse)(nil), // 11: agentpb.JobResponse + (*SyncAppRequest)(nil), // 12: agentpb.SyncAppRequest + (*SyncAppResponse)(nil), // 13: agentpb.SyncAppResponse + (*GetClusterAppsRequest)(nil), // 14: agentpb.GetClusterAppsRequest + (*GetClusterAppsResponse)(nil), // 15: agentpb.GetClusterAppsResponse + (*GetClusterAppLaunchesRequest)(nil), // 16: agentpb.GetClusterAppLaunchesRequest + (*GetClusterAppLaunchesResponse)(nil), // 17: agentpb.GetClusterAppLaunchesResponse + (*ConfigureAppSSORequest)(nil), // 18: agentpb.ConfigureAppSSORequest + (*ConfigureAppSSOResponse)(nil), // 19: agentpb.ConfigureAppSSOResponse + (*GetClusterAppConfigRequest)(nil), // 20: agentpb.GetClusterAppConfigRequest + (*GetClusterAppConfigResponse)(nil), // 21: agentpb.GetClusterAppConfigResponse + (*GetClusterAppValuesRequest)(nil), // 22: agentpb.GetClusterAppValuesRequest + (*GetClusterAppValuesResponse)(nil), // 23: agentpb.GetClusterAppValuesResponse + (*InstallAppRequest)(nil), // 24: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 25: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 26: agentpb.SyncAppData + (*AppData)(nil), // 27: agentpb.AppData + (*AppStatus)(nil), // 28: agentpb.AppStatus + (*AppConfig)(nil), // 29: agentpb.AppConfig + (*AppValues)(nil), // 30: agentpb.AppValues + (*AppLaunchConfig)(nil), // 31: agentpb.AppLaunchConfig + nil, // 32: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 33: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 32, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 33, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 26, // 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 - 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 27, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 31, // 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 - 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 29, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 34, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues - 33, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig - 34, // 16: agentpb.InstallAppRequest.appValues:type_name -> agentpb.AppValues + 30, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 29, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 30, // 16: agentpb.InstallAppRequest.appValues:type_name -> agentpb.AppValues 0, // 17: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode - 15, // 18: agentpb.InstallAppResponse.jobResponse:type_name -> agentpb.JobResponse - 33, // 19: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig - 34, // 20: agentpb.SyncAppData.values:type_name -> agentpb.AppValues - 33, // 21: agentpb.AppData.config:type_name -> agentpb.AppConfig - 32, // 22: agentpb.AppData.status:type_name -> agentpb.AppStatus - 1, // 23: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 24: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 25: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 26: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 27: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 28: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 29: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 30: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 31: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 32: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 33: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 34: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 35: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 36: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 37: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 38: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 39: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 40: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 41: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 28, // 42: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest - 2, // 43: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 44: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 45: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 46: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 51: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 52: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 53: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 54: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 55: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 56: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 57: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 58: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 59: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 60: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 61: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 29, // 62: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse - 43, // [43:63] is the sub-list for method output_type - 23, // [23:43] is the sub-list for method input_type - 23, // [23:23] is the sub-list for extension type_name - 23, // [23:23] is the sub-list for extension extendee - 0, // [0:23] is the sub-list for field type_name + 29, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 30, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 29, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 28, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 10, // 22: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 5, // 23: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 5, // 24: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 6, // 25: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 7, // 26: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 8, // 27: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 9, // 28: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 1, // 29: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 3, // 30: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 12, // 31: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 14, // 32: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 16, // 33: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 18, // 34: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 20, // 35: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 22, // 36: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 24, // 37: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 11, // 38: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 11, // 39: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 11, // 40: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 11, // 41: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 11, // 42: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 11, // 43: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 11, // 44: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 2, // 45: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 4, // 46: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 13, // 47: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 15, // 48: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 17, // 49: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 19, // 50: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 21, // 51: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 23, // 52: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 25, // 53: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 38, // [38:54] is the sub-list for method output_type + 22, // [22:38] 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() } @@ -2909,54 +2435,6 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterRequest); i { case 0: return &v.state @@ -2968,7 +2446,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryAddRequest); i { case 0: return &v.state @@ -2980,7 +2458,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryDeleteRequest); i { case 0: return &v.state @@ -2992,7 +2470,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectAddRequest); i { case 0: return &v.state @@ -3004,7 +2482,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectDeleteRequest); i { case 0: return &v.state @@ -3016,7 +2494,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobRequest); i { case 0: return &v.state @@ -3028,7 +2506,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobResponse); i { case 0: return &v.state @@ -3040,7 +2518,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppRequest); i { case 0: return &v.state @@ -3052,7 +2530,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppResponse); i { case 0: return &v.state @@ -3064,7 +2542,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsRequest); i { case 0: return &v.state @@ -3076,7 +2554,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsResponse); i { case 0: return &v.state @@ -3088,7 +2566,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesRequest); i { case 0: return &v.state @@ -3100,7 +2578,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesResponse); i { case 0: return &v.state @@ -3112,7 +2590,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSORequest); i { case 0: return &v.state @@ -3124,7 +2602,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSOResponse); i { case 0: return &v.state @@ -3136,7 +2614,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigRequest); i { case 0: return &v.state @@ -3148,7 +2626,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigResponse); i { case 0: return &v.state @@ -3160,7 +2638,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesRequest); i { case 0: return &v.state @@ -3172,7 +2650,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesResponse); i { case 0: return &v.state @@ -3184,7 +2662,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppRequest); i { case 0: return &v.state @@ -3196,7 +2674,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppResponse); i { case 0: return &v.state @@ -3208,7 +2686,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppData); i { case 0: return &v.state @@ -3220,7 +2698,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppData); i { case 0: return &v.state @@ -3232,7 +2710,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppStatus); i { case 0: return &v.state @@ -3244,7 +2722,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppConfig); i { case 0: return &v.state @@ -3256,7 +2734,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppValues); i { case 0: return &v.state @@ -3268,7 +2746,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppLaunchConfig); i { case 0: return &v.state @@ -3287,7 +2765,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 36, + NumMessages: 32, 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 d102f8ac..6afca910 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 @@ -19,19 +19,15 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" Agent_SubmitJob_FullMethodName = "/agentpb.Agent/SubmitJob" - Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" - Agent_ClimonAppInstall_FullMethodName = "/agentpb.Agent/ClimonAppInstall" - Agent_ClimonAppDelete_FullMethodName = "/agentpb.Agent/ClimonAppDelete" - Agent_DeployerAppInstall_FullMethodName = "/agentpb.Agent/DeployerAppInstall" - Agent_DeployerAppDelete_FullMethodName = "/agentpb.Agent/DeployerAppDelete" Agent_ClusterAdd_FullMethodName = "/agentpb.Agent/ClusterAdd" Agent_ClusterDelete_FullMethodName = "/agentpb.Agent/ClusterDelete" Agent_RepositoryAdd_FullMethodName = "/agentpb.Agent/RepositoryAdd" Agent_RepositoryDelete_FullMethodName = "/agentpb.Agent/RepositoryDelete" Agent_ProjectAdd_FullMethodName = "/agentpb.Agent/ProjectAdd" Agent_ProjectDelete_FullMethodName = "/agentpb.Agent/ProjectDelete" + Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" + Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" Agent_SyncApp_FullMethodName = "/agentpb.Agent/SyncApp" Agent_GetClusterApps_FullMethodName = "/agentpb.Agent/GetClusterApps" Agent_GetClusterAppLaunches_FullMethodName = "/agentpb.Agent/GetClusterAppLaunches" @@ -45,19 +41,15 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AgentClient interface { - Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) - StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) - ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterDelete(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryAdd(ctx context.Context, in *RepositoryAddRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryDelete(ctx context.Context, in *RepositoryDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectAdd(ctx context.Context, in *ProjectAddRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectDelete(ctx context.Context, in *ProjectDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) + StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) GetClusterApps(ctx context.Context, in *GetClusterAppsRequest, opts ...grpc.CallOption) (*GetClusterAppsResponse, error) GetClusterAppLaunches(ctx context.Context, in *GetClusterAppLaunchesRequest, opts ...grpc.CallOption) (*GetClusterAppLaunchesResponse, error) @@ -75,15 +67,6 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { return &agentClient{cc} } -func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { - out := new(PingResponse) - err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_SubmitJob_FullMethodName, in, out, opts...) @@ -93,51 +76,6 @@ func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grp return out, nil } -func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { - out := new(StoreCredentialResponse) - err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_ClusterAdd_FullMethodName, in, out, opts...) @@ -192,6 +130,24 @@ func (c *agentClient) ProjectDelete(ctx context.Context, in *ProjectDeleteReques return out, nil } +func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { + out := new(StoreCredentialResponse) + err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *agentClient) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) { out := new(SyncAppResponse) err := c.cc.Invoke(ctx, Agent_SyncApp_FullMethodName, in, out, opts...) @@ -259,19 +215,15 @@ func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opt // All implementations must embed UnimplementedAgentServer // for forward compatibility type AgentServer interface { - Ping(context.Context, *PingRequest) (*PingResponse, error) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) - StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) - ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) - ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) - DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) - DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) ClusterDelete(context.Context, *ClusterRequest) (*JobResponse, error) RepositoryAdd(context.Context, *RepositoryAddRequest) (*JobResponse, error) RepositoryDelete(context.Context, *RepositoryDeleteRequest) (*JobResponse, error) ProjectAdd(context.Context, *ProjectAddRequest) (*JobResponse, error) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) + Ping(context.Context, *PingRequest) (*PingResponse, error) + StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) GetClusterApps(context.Context, *GetClusterAppsRequest) (*GetClusterAppsResponse, error) GetClusterAppLaunches(context.Context, *GetClusterAppLaunchesRequest) (*GetClusterAppLaunchesResponse, error) @@ -286,27 +238,9 @@ type AgentServer interface { type UnimplementedAgentServer struct { } -func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") -} func (UnimplementedAgentServer) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubmitJob not implemented") } -func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") -} -func (UnimplementedAgentServer) ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppInstall not implemented") -} -func (UnimplementedAgentServer) ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppDelete not implemented") -} -func (UnimplementedAgentServer) DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppInstall not implemented") -} -func (UnimplementedAgentServer) DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppDelete not implemented") -} func (UnimplementedAgentServer) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClusterAdd not implemented") } @@ -325,6 +259,12 @@ func (UnimplementedAgentServer) ProjectAdd(context.Context, *ProjectAddRequest) func (UnimplementedAgentServer) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ProjectDelete not implemented") } +func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") +} func (UnimplementedAgentServer) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncApp not implemented") } @@ -359,24 +299,6 @@ func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { s.RegisterService(&Agent_ServiceDesc, srv) } -func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).Ping(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_Ping_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(JobRequest) if err := dec(in); err != nil { @@ -395,96 +317,6 @@ func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StoreCredentialRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).StoreCredential(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_StoreCredential_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppInstall(ctx, req.(*ClimonInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppDelete(ctx, req.(*ClimonDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppInstall(ctx, req.(*ApplicationInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppDelete(ctx, req.(*ApplicationDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_ClusterAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ClusterRequest) if err := dec(in); err != nil { @@ -593,6 +425,42 @@ func _Agent_ProjectDelete_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreCredentialRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).StoreCredential(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_StoreCredential_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Agent_SyncApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SyncAppRequest) if err := dec(in); err != nil { @@ -726,34 +594,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ ServiceName: "agentpb.Agent", HandlerType: (*AgentServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "Ping", - Handler: _Agent_Ping_Handler, - }, { MethodName: "SubmitJob", Handler: _Agent_SubmitJob_Handler, }, - { - MethodName: "StoreCredential", - Handler: _Agent_StoreCredential_Handler, - }, - { - MethodName: "ClimonAppInstall", - Handler: _Agent_ClimonAppInstall_Handler, - }, - { - MethodName: "ClimonAppDelete", - Handler: _Agent_ClimonAppDelete_Handler, - }, - { - MethodName: "DeployerAppInstall", - Handler: _Agent_DeployerAppInstall_Handler, - }, - { - MethodName: "DeployerAppDelete", - Handler: _Agent_DeployerAppDelete_Handler, - }, { MethodName: "ClusterAdd", Handler: _Agent_ClusterAdd_Handler, @@ -778,6 +622,14 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "ProjectDelete", Handler: _Agent_ProjectDelete_Handler, }, + { + MethodName: "Ping", + Handler: _Agent_Ping_Handler, + }, + { + MethodName: "StoreCredential", + Handler: _Agent_StoreCredential_Handler, + }, { MethodName: "SyncApp", Handler: _Agent_SyncApp_Handler, diff --git a/capten/agent/pkg/capten-store/app_config_store.go b/capten/agent/pkg/capten-store/app_config_store.go index 20213193..8db39c01 100644 --- a/capten/agent/pkg/capten-store/app_config_store.go +++ b/capten/agent/pkg/capten-store/app_config_store.go @@ -5,14 +5,16 @@ import ( "encoding/hex" "fmt" "strings" + "time" "github.com/gocql/gocql" "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" + "github.com/pkg/errors" ) const ( - insertAppConfigByReleaseNameQuery = "INSERT INTO %s.AppConfig(release_name) VALUES (?)" - updateAppConfigByReleaseNameQuery = "UPDATE %s.AppConfig SET %s WHERE release_name = ?" + insertAppConfigByReleaseNameQuery = "INSERT INTO %s.ClusterAppConfig(release_name) VALUES (?)" + updateAppConfigByReleaseNameQuery = "UPDATE %s.ClusterAppConfig SET %s WHERE release_name = ?" ) func CreateSelectByFieldNameQuery(keyspace, field string) string { @@ -20,7 +22,7 @@ func CreateSelectByFieldNameQuery(keyspace, field string) string { } func CreateSelectAllQuery(keyspace string) string { - return fmt.Sprintf("SELECT %s FROM %s.AppConfig", strings.Join(appConfigfields, ", "), keyspace) + return fmt.Sprintf("SELECT %s FROM %s.ClusterAppConfig", strings.Join(appConfigfields, ", "), keyspace) } const ( @@ -30,7 +32,9 @@ const ( launchUrl, launchUIDesc = "launch_url", "launch_redirect_url" createNamespace, privilegedNamespace = "create_namespace", "privileged_namespace" overrideValues, launchUiValues = "override_values", "launch_ui_values" + templateValues, defaultApp = "template_values", "default_app" icon, installStatus = "icon", "install_status" + updateTime = "update_time" ) var ( @@ -41,7 +45,9 @@ var ( launchUrl, launchUIDesc, createNamespace, privilegedNamespace, overrideValues, launchUiValues, + templateValues, defaultApp, icon, installStatus, + updateTime, } ) @@ -63,7 +69,7 @@ func (a *Store) GetAppConfig(appReleaseName string) (*agentpb.SyncAppData, error selectQuery := a.client.Session().Query(CreateSelectByFieldNameQuery(a.keyspace, releaseName), appReleaseName) config := agentpb.AppConfig{} - var overrideValues, launchUiValues string + var overrideValues, launchUiValues, templateValues string if err := selectQuery.Scan( &config.AppName, &config.Description, &config.Category, @@ -72,19 +78,24 @@ func (a *Store) GetAppConfig(appReleaseName string) (*agentpb.SyncAppData, error &config.LaunchURL, &config.LaunchUIDescription, &config.CreateNamespace, &config.PrivilegedNamespace, &overrideValues, &launchUiValues, + &templateValues, &config.DefualtApp, &config.Icon, &config.InstallStatus, + &config.LastUpdateTime, ); err != nil { return nil, err } overrideValuesCopy, _ := base64.StdEncoding.DecodeString(overrideValues) launchUiValuesCopy, _ := base64.StdEncoding.DecodeString(launchUiValues) + templateValuesCopy, _ := base64.StdEncoding.DecodeString(templateValues) return &agentpb.SyncAppData{ Config: &config, Values: &agentpb.AppValues{ OverrideValues: overrideValuesCopy, - LaunchUIValues: launchUiValuesCopy}, + LaunchUIValues: launchUiValuesCopy, + TemplateValues: templateValuesCopy, + }, }, nil } @@ -93,7 +104,7 @@ func (a *Store) GetAllApps() ([]*agentpb.SyncAppData, error) { iter := selectAllQuery.Iter() config := agentpb.AppConfig{} - var overrideValues, launchUiValues string + var overrideValues, launchUiValues, templateValues string ret := make([]*agentpb.SyncAppData, 0) for iter.Scan( @@ -103,24 +114,27 @@ func (a *Store) GetAllApps() ([]*agentpb.SyncAppData, error) { &config.LaunchURL, &config.LaunchUIDescription, &config.CreateNamespace, &config.PrivilegedNamespace, &overrideValues, &launchUiValues, + &templateValues, &config.DefualtApp, &config.Icon, &config.InstallStatus, + &config.LastUpdateTime, ) { configCopy := config overrideValuesCopy, _ := base64.StdEncoding.DecodeString(overrideValues) launchUiValuesCopy, _ := base64.StdEncoding.DecodeString(launchUiValues) + templateValuesCopy, _ := base64.StdEncoding.DecodeString(templateValues) a := &agentpb.SyncAppData{ Config: &configCopy, Values: &agentpb.AppValues{ OverrideValues: overrideValuesCopy, LaunchUIValues: launchUiValuesCopy, + TemplateValues: templateValuesCopy, }, } ret = append(ret, a) } if err := iter.Close(); err != nil { - a.log.Fatal("Failed to iterate through results:", err) - return nil, err + return nil, errors.WithMessage(err, "failed to iterate through results:") } return ret, nil } @@ -128,16 +142,24 @@ func (a *Store) GetAllApps() ([]*agentpb.SyncAppData, error) { func formUpdateKvPairs(config *agentpb.SyncAppData) (string, bool) { params := []string{} - if config.Values != nil && len(config.Values.OverrideValues) > 0 { - encoded := base64.StdEncoding.EncodeToString(config.Values.OverrideValues) - params = append(params, - fmt.Sprintf("%s = '%s'", overrideValues, encoded)) - } + if config.Values != nil { + if len(config.Values.OverrideValues) > 0 { + encoded := base64.StdEncoding.EncodeToString(config.Values.OverrideValues) + params = append(params, + fmt.Sprintf("%s = '%s'", overrideValues, encoded)) + } - if config.Values != nil && len(config.Values.LaunchUIValues) > 0 { - encoded := base64.StdEncoding.EncodeToString(config.Values.LaunchUIValues) - params = append(params, - fmt.Sprintf("%s = '%s'", launchUiValues, encoded)) + if len(config.Values.LaunchUIValues) > 0 { + encoded := base64.StdEncoding.EncodeToString(config.Values.LaunchUIValues) + params = append(params, + fmt.Sprintf("%s = '%s'", launchUiValues, encoded)) + } + + if len(config.Values.TemplateValues) > 0 { + encoded := base64.StdEncoding.EncodeToString(config.Values.TemplateValues) + params = append(params, + fmt.Sprintf("%s = '%s'", templateValues, encoded)) + } } if config.Config.CreateNamespace { @@ -204,6 +226,12 @@ func formUpdateKvPairs(config *agentpb.SyncAppData) (string, bool) { fmt.Sprintf("%s = '%s'", installStatus, config.Config.InstallStatus)) } + params = append(params, + fmt.Sprintf("%s = '%s'", updateTime, time.Now().Format(time.RFC3339))) + + params = append(params, + fmt.Sprintf("%s = %v", defaultApp, config.Config.DefualtApp)) + if len(params) == 0 { // query is empty there is nothing to update return "", true diff --git a/capten/agent/pkg/model/payload.go b/capten/agent/pkg/model/types.go similarity index 58% rename from capten/agent/pkg/model/payload.go rename to capten/agent/pkg/model/types.go index 7f016521..369152fe 100644 --- a/capten/agent/pkg/model/payload.go +++ b/capten/agent/pkg/model/types.go @@ -5,32 +5,6 @@ import ( "fmt" ) -type RequestPayload struct { - PluginName string `json:"plugin_name"` - Action string `json:"action"` - Data json.RawMessage `json:"data,omitempty"` // TODO: This will be enhanced along with plugin implementation -} - -type ResponsePayload struct { - Status string `json:"status"` - Message json.RawMessage `json:"message,omitempty"` // TODO: This will be enhanced along with plugin implementation -} - -func (rsp *ResponsePayload) ToString() string { - return fmt.Sprintf("Status: %s, Message: %s", rsp.Status, string(rsp.Message)) -} - -type Request struct { - RepoName string `json:"repo_name" required:"true"` - RepoURL string `json:"repo_url" required:"true"` - ChartName string `json:"chart_name" required:"true"` - - Namespace string `json:"namespace" required:"true"` - ReleaseName string `json:"release_name" required:"true"` - Timeout int `json:"timeout" required:"true"` - Version string `json:"version" required:"true"` -} - type AppConfig struct { AppName string `json:"AppName,omitempty"` Version string `json:"Version,omitempty"` @@ -47,3 +21,33 @@ type AppConfig struct { LaunchURL string `json:"LaunchURL,omitempty"` LaunchUIDescription string `json:"LaunchUIDescription,omitempty"` } + +type ApplicationInstallRequest struct { + PluginName string `json:"PluginName,omitempty"` + RepoName string `json:"RepoName,omitempty"` + RepoURL string `json:"RepoURL,omitempty"` + ChartName string `json:"ChartName,omitempty"` + Namespace string `json:"Namespace,omitempty"` + ReleaseName string `json:"ReleaseName,omitempty"` + Timeout uint32 `json:"Timeout,omitempty"` + Version string `json:"Version,omitempty"` + ClusterName string `json:"ClusterName,omitempty"` + OverrideValues string `json:"OverrideValues,omitempty"` +} + +type ApplicationDeleteRequest struct { + PluginName string `json:"PluginName,omitempty"` + Namespace string `json:"Namespace,omitempty"` + ReleaseName string `json:"ReleaseName,omitempty"` + Timeout uint32 `json:"Timeout,omitempty"` + ClusterName string `json:"ClusterName,omitempty"` +} + +type ResponsePayload struct { + Status string `json:"status"` + Message json.RawMessage `json:"message,omitempty"` // TODO: This will be enhanced along with plugin implementation +} + +func (rsp *ResponsePayload) ToString() string { + return fmt.Sprintf("Status: %s, Message: %s", rsp.Status, string(rsp.Message)) +} diff --git a/capten/agent/pkg/workers/climon.go b/capten/agent/pkg/workers/climon.go deleted file mode 100644 index b8bb5df3..00000000 --- a/capten/agent/pkg/workers/climon.go +++ /dev/null @@ -1,161 +0,0 @@ -package workers - -import ( - "context" - "encoding/json" - "fmt" - "log" - "time" - - "github.com/intelops/go-common/logging" - "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" - "github.com/kube-tarian/kad/capten/agent/pkg/model" - "github.com/kube-tarian/kad/capten/agent/pkg/temporalclient" - "go.temporal.io/sdk/client" -) - -type Climon struct { - client *temporalclient.Client - log logging.Logger -} - -func NewClimon(client *temporalclient.Client, log logging.Logger) *Climon { - return &Climon{ - client: client, - log: log, - } -} - -func (c *Climon) GetWorkflowName() string { - return DeployWorkflowName -} - -func (c *Climon) SendEvent(ctx context.Context, action string, payload *agentpb.ClimonInstallRequest) (client.WorkflowRun, error) { - options := client.StartWorkflowOptions{ - ID: "helm-deploy-workflow", - TaskQueue: ClimonHelmTaskQueue, - } - - payloadJSON, err := json.Marshal(payload) - if err != nil { - return nil, err - } - - log.Printf("payload climon: %v", string(payloadJSON)) - we, err := c.client.TemporalClient.ExecuteWorkflow(context.Background(), options, DeployWorkflowName, action, json.RawMessage(payloadJSON)) - if err != nil { - log.Println("error starting climon workflow", err) - return nil, err - } - //printResults(deployInfo, we.GetID(), we.GetRunID()) - - c.log.Infof("Started workflow, ID: %v, WorkflowName: %v RunID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - - // Wait for 5mins till workflow finishes - // Timeout with 5mins - var result model.ResponsePayload - err = we.Get(ctx, &result) - if err != nil { - c.log.Errorf("Result for workflow ID: %v, workflowName: %v, runID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - c.log.Errorf("Workflow result failed, %v", err) - return we, err - } - c.log.Infof("workflow finished success, %+v", result.ToString()) - - return we, nil -} - -func (c *Climon) SendDeleteEvent(ctx context.Context, action string, payload *agentpb.ClimonDeleteRequest) (client.WorkflowRun, error) { - options := client.StartWorkflowOptions{ - ID: "helm-deploy-workflow", - TaskQueue: ClimonHelmTaskQueue, - } - - payloadJSON, err := json.Marshal(payload) - if err != nil { - return nil, err - } - - we, err := c.client.TemporalClient.ExecuteWorkflow(context.Background(), options, DeployWorkflowName, action, payloadJSON) - if err != nil { - log.Println("error starting climon workflow", err) - return nil, err - } - - c.log.Infof("Started workflow, ID: %v, WorkflowName: %v RunID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - - // Wait for 5mins till workflow finishes - // Timeout with 5mins - var result model.ResponsePayload - err = we.Get(ctx, &result) - if err != nil { - c.log.Errorf("Result for workflow ID: %v, workflowName: %v, runID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - c.log.Errorf("Workflow result failed, %v", err) - return we, err - } - c.log.Infof("workflow finished success, %+v", result.ToString()) - - return we, nil -} - -func (c *Climon) getWorkflowStatusByLatestWorkflow(run client.WorkflowRun) error { - ticker := time.NewTicker(500 * time.Millisecond) - for { - select { - case <-ticker.C: - err := c.getWorkflowInformation(run) - if err != nil { - c.log.Errorf("get state of workflow failed: %v, retrying .....", err) - continue - } - return nil - case <-time.After(5 * time.Minute): - c.log.Errorf("Timed out waiting for state of workflow") - return fmt.Errorf("timedout waiting for the workflow to finish") - } - } -} - -func (c *Climon) getWorkflowInformation(run client.WorkflowRun) error { - latestRun := c.client.TemporalClient.GetWorkflow(context.Background(), run.GetID(), "") - - var result model.ResponsePayload - if err := latestRun.Get(context.Background(), &result); err != nil { - c.log.Errorf("Unable to decode query result", err) - return err - } - c.log.Debugf("Result info: %+v", result) - return nil -} - -func (c *Climon) SendInstallAppEvent(ctx context.Context, action string, payload *model.AppConfig) (client.WorkflowRun, error) { - options := client.StartWorkflowOptions{ - ID: "helm-deploy-workflow", - TaskQueue: ClimonHelmTaskQueue, - } - - payloadJSON, err := json.Marshal(payload) - if err != nil { - return nil, err - } - - we, err := c.client.TemporalClient.ExecuteWorkflow(context.Background(), options, DeployWorkflowName, action, json.RawMessage(payloadJSON)) - if err != nil { - log.Println("error starting workflow", err) - return nil, err - } - - c.log.Infof("Started workflow, ID: %v, WorkflowName: %v RunID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - - // Wait for 5mins till workflow finishes - var result model.ResponsePayload - err = we.Get(ctx, &result) - if err != nil { - c.log.Errorf("Result for workflow ID: %v, workflowName: %v, runID: %v", we.GetID(), DeploymentWorkerWorkflowName, we.GetRunID()) - c.log.Errorf("Workflow result failed, %v", err) - return we, err - } - c.log.Infof("workflow finished success, %+v", result.ToString()) - - return we, nil -} diff --git a/capten/agent/pkg/workers/deployment.go b/capten/agent/pkg/workers/deployment.go index 0878c6b6..859d2f62 100644 --- a/capten/agent/pkg/workers/deployment.go +++ b/capten/agent/pkg/workers/deployment.go @@ -9,7 +9,6 @@ import ( "github.com/google/uuid" "github.com/intelops/go-common/logging" - "github.com/kube-tarian/kad/capten/agent/pkg/agentpb" "github.com/kube-tarian/kad/capten/agent/pkg/model" "github.com/kube-tarian/kad/capten/agent/pkg/temporalclient" "github.com/kube-tarian/kad/capten/deployment-worker/pkg/workflows" @@ -37,7 +36,7 @@ func (d *Deployment) GetWorkflowName() string { return DeploymentWorkerWorkflowName } -func (d *Deployment) SendEvent(ctx context.Context, action string, deployPayload *agentpb.ApplicationInstallRequest) (client.WorkflowRun, error) { +func (d *Deployment) SendEvent(ctx context.Context, action string, deployPayload *model.ApplicationInstallRequest) (client.WorkflowRun, error) { options := client.StartWorkflowOptions{ ID: uuid.NewString(), TaskQueue: DeploymentWorkerTaskQueue, @@ -70,7 +69,7 @@ func (d *Deployment) SendEvent(ctx context.Context, action string, deployPayload return run, nil } -func (d *Deployment) SendDeleteEvent(ctx context.Context, action string, deployPayload *agentpb.ApplicationDeleteRequest) (client.WorkflowRun, error) { +func (d *Deployment) SendDeleteEvent(ctx context.Context, action string, deployPayload *model.ApplicationDeleteRequest) (client.WorkflowRun, error) { options := client.StartWorkflowOptions{ ID: uuid.NewString(), TaskQueue: DeploymentWorkerTaskQueue, diff --git a/capten/capten-sdk/agentpb/agent.pb.go b/capten/capten-sdk/agentpb/agent.pb.go index 12981eec..e7ff5d73 100644 --- a/capten/capten-sdk/agentpb/agent.pb.go +++ b/capten/capten-sdk/agentpb/agent.pb.go @@ -284,394 +284,6 @@ func (x *StoreCredentialResponse) GetStatusMessage() string { return "" } -type ClimonInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonInstallRequest) Reset() { - *x = ClimonInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonInstallRequest) ProtoMessage() {} - -func (x *ClimonInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClimonInstallRequest.ProtoReflect.Descriptor instead. -func (*ClimonInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{4} -} - -func (x *ClimonInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ClimonInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ClimonInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ClimonInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ClimonDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonDeleteRequest) Reset() { - *x = ClimonDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonDeleteRequest) ProtoMessage() {} - -func (x *ClimonDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[5] - 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 ClimonDeleteRequest.ProtoReflect.Descriptor instead. -func (*ClimonDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{5} -} - -func (x *ClimonDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ApplicationInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` - ValuesYaml string `protobuf:"bytes,10,opt,name=values_yaml,json=valuesYaml,proto3" json:"values_yaml,omitempty"` -} - -func (x *ApplicationInstallRequest) Reset() { - *x = ApplicationInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationInstallRequest) ProtoMessage() {} - -func (x *ApplicationInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[6] - 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 ApplicationInstallRequest.ProtoReflect.Descriptor instead. -func (*ApplicationInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{6} -} - -func (x *ApplicationInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ApplicationInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ApplicationInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ApplicationInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -func (x *ApplicationInstallRequest) GetValuesYaml() string { - if x != nil { - return x.ValuesYaml - } - return "" -} - -type ApplicationDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ApplicationDeleteRequest) Reset() { - *x = ApplicationDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationDeleteRequest) ProtoMessage() {} - -func (x *ApplicationDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[7] - 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 ApplicationDeleteRequest.ProtoReflect.Descriptor instead. -func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{7} -} - -func (x *ApplicationDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - type ClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -684,7 +296,7 @@ type ClusterRequest struct { func (x *ClusterRequest) Reset() { *x = ClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -697,7 +309,7 @@ func (x *ClusterRequest) String() string { func (*ClusterRequest) ProtoMessage() {} func (x *ClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -710,7 +322,7 @@ func (x *ClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterRequest.ProtoReflect.Descriptor instead. func (*ClusterRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{8} + return file_agent_proto_rawDescGZIP(), []int{4} } func (x *ClusterRequest) GetPluginName() string { @@ -740,7 +352,7 @@ type RepositoryAddRequest struct { func (x *RepositoryAddRequest) Reset() { *x = RepositoryAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +365,7 @@ func (x *RepositoryAddRequest) String() string { func (*RepositoryAddRequest) ProtoMessage() {} func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +378,7 @@ func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryAddRequest.ProtoReflect.Descriptor instead. func (*RepositoryAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{9} + return file_agent_proto_rawDescGZIP(), []int{5} } func (x *RepositoryAddRequest) GetPluginName() string { @@ -802,7 +414,7 @@ type RepositoryDeleteRequest struct { func (x *RepositoryDeleteRequest) Reset() { *x = RepositoryDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -815,7 +427,7 @@ func (x *RepositoryDeleteRequest) String() string { func (*RepositoryDeleteRequest) ProtoMessage() {} func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -828,7 +440,7 @@ func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryDeleteRequest.ProtoReflect.Descriptor instead. func (*RepositoryDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{10} + return file_agent_proto_rawDescGZIP(), []int{6} } func (x *RepositoryDeleteRequest) GetPluginName() string { @@ -857,7 +469,7 @@ type ProjectAddRequest struct { func (x *ProjectAddRequest) Reset() { *x = ProjectAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -870,7 +482,7 @@ func (x *ProjectAddRequest) String() string { func (*ProjectAddRequest) ProtoMessage() {} func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -883,7 +495,7 @@ func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectAddRequest.ProtoReflect.Descriptor instead. func (*ProjectAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{11} + return file_agent_proto_rawDescGZIP(), []int{7} } func (x *ProjectAddRequest) GetPluginName() string { @@ -912,7 +524,7 @@ type ProjectDeleteRequest struct { func (x *ProjectDeleteRequest) Reset() { *x = ProjectDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -925,7 +537,7 @@ func (x *ProjectDeleteRequest) String() string { func (*ProjectDeleteRequest) ProtoMessage() {} func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -938,7 +550,7 @@ func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{12} + return file_agent_proto_rawDescGZIP(), []int{8} } func (x *ProjectDeleteRequest) GetPluginName() string { @@ -967,7 +579,7 @@ type JobRequest struct { func (x *JobRequest) Reset() { *x = JobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +592,7 @@ func (x *JobRequest) String() string { func (*JobRequest) ProtoMessage() {} func (x *JobRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +605,7 @@ func (x *JobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JobRequest.ProtoReflect.Descriptor instead. func (*JobRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{13} + return file_agent_proto_rawDescGZIP(), []int{9} } func (x *JobRequest) GetOperation() string { @@ -1023,7 +635,7 @@ type JobResponse struct { func (x *JobResponse) Reset() { *x = JobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1036,7 +648,7 @@ func (x *JobResponse) String() string { func (*JobResponse) ProtoMessage() {} func (x *JobResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1049,7 +661,7 @@ func (x *JobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JobResponse.ProtoReflect.Descriptor instead. func (*JobResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{14} + return file_agent_proto_rawDescGZIP(), []int{10} } func (x *JobResponse) GetId() string { @@ -1084,7 +696,7 @@ type SyncAppRequest struct { func (x *SyncAppRequest) Reset() { *x = SyncAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1097,7 +709,7 @@ func (x *SyncAppRequest) String() string { func (*SyncAppRequest) ProtoMessage() {} func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1110,7 +722,7 @@ func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppRequest.ProtoReflect.Descriptor instead. func (*SyncAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{15} + return file_agent_proto_rawDescGZIP(), []int{11} } func (x *SyncAppRequest) GetData() *SyncAppData { @@ -1132,7 +744,7 @@ type SyncAppResponse struct { func (x *SyncAppResponse) Reset() { *x = SyncAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1145,7 +757,7 @@ func (x *SyncAppResponse) String() string { func (*SyncAppResponse) ProtoMessage() {} func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1158,7 +770,7 @@ func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppResponse.ProtoReflect.Descriptor instead. func (*SyncAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{16} + return file_agent_proto_rawDescGZIP(), []int{12} } func (x *SyncAppResponse) GetStatus() StatusCode { @@ -1184,7 +796,7 @@ type GetClusterAppsRequest struct { func (x *GetClusterAppsRequest) Reset() { *x = GetClusterAppsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +809,7 @@ func (x *GetClusterAppsRequest) String() string { func (*GetClusterAppsRequest) ProtoMessage() {} func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +822,7 @@ func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppsRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{17} + return file_agent_proto_rawDescGZIP(), []int{13} } type GetClusterAppsResponse struct { @@ -1226,7 +838,7 @@ type GetClusterAppsResponse struct { func (x *GetClusterAppsResponse) Reset() { *x = GetClusterAppsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +851,7 @@ func (x *GetClusterAppsResponse) String() string { func (*GetClusterAppsResponse) ProtoMessage() {} func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +864,7 @@ func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppsResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{18} + return file_agent_proto_rawDescGZIP(), []int{14} } func (x *GetClusterAppsResponse) GetStatus() StatusCode { @@ -1285,7 +897,7 @@ type GetClusterAppLaunchesRequest struct { func (x *GetClusterAppLaunchesRequest) Reset() { *x = GetClusterAppLaunchesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1298,7 +910,7 @@ func (x *GetClusterAppLaunchesRequest) String() string { func (*GetClusterAppLaunchesRequest) ProtoMessage() {} func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1311,7 +923,7 @@ func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{19} + return file_agent_proto_rawDescGZIP(), []int{15} } type GetClusterAppLaunchesResponse struct { @@ -1327,7 +939,7 @@ type GetClusterAppLaunchesResponse struct { func (x *GetClusterAppLaunchesResponse) Reset() { *x = GetClusterAppLaunchesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +952,7 @@ func (x *GetClusterAppLaunchesResponse) String() string { func (*GetClusterAppLaunchesResponse) ProtoMessage() {} func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +965,7 @@ func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{20} + return file_agent_proto_rawDescGZIP(), []int{16} } func (x *GetClusterAppLaunchesResponse) GetStatus() StatusCode { @@ -1391,7 +1003,7 @@ type ConfigureAppSSORequest struct { func (x *ConfigureAppSSORequest) Reset() { *x = ConfigureAppSSORequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1016,7 @@ func (x *ConfigureAppSSORequest) String() string { func (*ConfigureAppSSORequest) ProtoMessage() {} func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1029,7 @@ func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSORequest.ProtoReflect.Descriptor instead. func (*ConfigureAppSSORequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{21} + return file_agent_proto_rawDescGZIP(), []int{17} } func (x *ConfigureAppSSORequest) GetReleaseName() string { @@ -1460,7 +1072,7 @@ type ConfigureAppSSOResponse struct { func (x *ConfigureAppSSOResponse) Reset() { *x = ConfigureAppSSOResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1473,7 +1085,7 @@ func (x *ConfigureAppSSOResponse) String() string { func (*ConfigureAppSSOResponse) ProtoMessage() {} func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,7 +1098,7 @@ func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSOResponse.ProtoReflect.Descriptor instead. func (*ConfigureAppSSOResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{22} + return file_agent_proto_rawDescGZIP(), []int{18} } func (x *ConfigureAppSSOResponse) GetStatus() StatusCode { @@ -1514,7 +1126,7 @@ type GetClusterAppConfigRequest struct { func (x *GetClusterAppConfigRequest) Reset() { *x = GetClusterAppConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1139,7 @@ func (x *GetClusterAppConfigRequest) String() string { func (*GetClusterAppConfigRequest) ProtoMessage() {} func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1152,7 @@ func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{23} + return file_agent_proto_rawDescGZIP(), []int{19} } func (x *GetClusterAppConfigRequest) GetReleaseName() string { @@ -1563,7 +1175,7 @@ type GetClusterAppConfigResponse struct { func (x *GetClusterAppConfigResponse) Reset() { *x = GetClusterAppConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1188,7 @@ func (x *GetClusterAppConfigResponse) String() string { func (*GetClusterAppConfigResponse) ProtoMessage() {} func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1201,7 @@ func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{24} + return file_agent_proto_rawDescGZIP(), []int{20} } func (x *GetClusterAppConfigResponse) GetStatus() StatusCode { @@ -1624,7 +1236,7 @@ type GetClusterAppValuesRequest struct { func (x *GetClusterAppValuesRequest) Reset() { *x = GetClusterAppValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1637,7 +1249,7 @@ func (x *GetClusterAppValuesRequest) String() string { func (*GetClusterAppValuesRequest) ProtoMessage() {} func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1650,7 +1262,7 @@ func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{25} + return file_agent_proto_rawDescGZIP(), []int{21} } func (x *GetClusterAppValuesRequest) GetReleaseName() string { @@ -1673,7 +1285,7 @@ type GetClusterAppValuesResponse struct { func (x *GetClusterAppValuesResponse) Reset() { *x = GetClusterAppValuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1686,7 +1298,7 @@ func (x *GetClusterAppValuesResponse) String() string { func (*GetClusterAppValuesResponse) ProtoMessage() {} func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1699,7 +1311,7 @@ func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{26} + return file_agent_proto_rawDescGZIP(), []int{22} } func (x *GetClusterAppValuesResponse) GetStatus() StatusCode { @@ -1729,12 +1341,13 @@ type InstallAppRequest struct { unknownFields protoimpl.UnknownFields AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` + AppValues *AppValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` } func (x *InstallAppRequest) Reset() { *x = InstallAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1747,7 +1360,7 @@ func (x *InstallAppRequest) String() string { func (*InstallAppRequest) ProtoMessage() {} func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1760,7 +1373,7 @@ func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppRequest.ProtoReflect.Descriptor instead. func (*InstallAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{23} } func (x *InstallAppRequest) GetAppConfig() *AppConfig { @@ -1770,20 +1383,26 @@ func (x *InstallAppRequest) GetAppConfig() *AppConfig { return nil } +func (x *InstallAppRequest) GetAppValues() *AppValues { + if x != nil { + return x.AppValues + } + 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"` + 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"` } func (x *InstallAppResponse) Reset() { *x = InstallAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1796,7 +1415,7 @@ func (x *InstallAppResponse) String() string { func (*InstallAppResponse) ProtoMessage() {} func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1809,7 +1428,7 @@ func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppResponse.ProtoReflect.Descriptor instead. func (*InstallAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{24} } func (x *InstallAppResponse) GetStatus() StatusCode { @@ -1826,13 +1445,6 @@ func (x *InstallAppResponse) GetStatusMessage() string { return "" } -func (x *InstallAppResponse) GetJobResponse() *JobResponse { - if x != nil { - return x.JobResponse - } - return nil -} - type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1845,7 +1457,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1858,7 +1470,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1871,7 +1483,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{25} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1900,7 +1512,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1913,7 +1525,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1926,7 +1538,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{26} } func (x *AppData) GetConfig() *AppConfig { @@ -1954,7 +1566,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1967,7 +1579,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1980,7 +1592,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{27} } func (x *AppStatus) GetRuntimeStatus() string { @@ -2012,12 +1624,13 @@ type AppConfig struct { InstallStatus string `protobuf:"bytes,15,opt,name=installStatus,proto3" json:"installStatus,omitempty"` RuntimeStatus string `protobuf:"bytes,16,opt,name=runtimeStatus,proto3" json:"runtimeStatus,omitempty"` DefualtApp bool `protobuf:"varint,17,opt,name=defualtApp,proto3" json:"defualtApp,omitempty"` + LastUpdateTime string `protobuf:"bytes,18,opt,name=lastUpdateTime,proto3" json:"lastUpdateTime,omitempty"` } func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2030,7 +1643,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2043,7 +1656,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{28} } func (x *AppConfig) GetReleaseName() string { @@ -2165,6 +1778,13 @@ func (x *AppConfig) GetDefualtApp() bool { return false } +func (x *AppConfig) GetLastUpdateTime() string { + if x != nil { + return x.LastUpdateTime + } + return "" +} + type AppValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2172,12 +1792,13 @@ type AppValues struct { OverrideValues []byte `protobuf:"bytes,1,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` LaunchUIValues []byte `protobuf:"bytes,2,opt,name=launchUIValues,proto3" json:"launchUIValues,omitempty"` + TemplateValues []byte `protobuf:"bytes,3,opt,name=templateValues,proto3" json:"templateValues,omitempty"` } func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2190,7 +1811,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2203,7 +1824,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{33} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *AppValues) GetOverrideValues() []byte { @@ -2220,6 +1841,13 @@ func (x *AppValues) GetLaunchUIValues() []byte { return nil } +func (x *AppValues) GetTemplateValues() []byte { + if x != nil { + return x.TemplateValues + } + return nil +} + type AppLaunchConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2236,7 +1864,7 @@ type AppLaunchConfig struct { func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2249,7 +1877,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2262,7 +1890,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{34} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2342,380 +1970,302 @@ var file_agent_proto_rawDesc = []byte{ 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, 0x22, 0xa6, - 0x02, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x6d, - 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcc, - 0x02, 0x0a, 0x19, 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, 0x12, 0x1f, 0x0a, 0x0b, + 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x54, + 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xb9, 0x01, - 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x0e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x11, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, - 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x57, 0x0a, 0x0b, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, - 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, - 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x73, 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, 0x2a, 0x0a, 0x07, - 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, 0x1c, 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, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 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, 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, 0x44, 0x0a, - 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, - 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, + 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x57, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x75, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 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, 0x2a, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, + 0x1c, 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, 0x22, 0xb8, 0x01, + 0x0a, 0x1d, 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, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, - 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, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, + 0x67, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, + 0x73, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, + 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, 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, 0x22, 0x9c, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, + 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 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, 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, + 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, + 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, 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, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, + 0x1b, 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, 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, + 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, 0x77, 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, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 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, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x22, 0x67, 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, 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, 0xe5, 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, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x83, 0x01, 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, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 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, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, + 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, - 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, + 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, 0xd9, 0x09, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 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, 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, 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, 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, + 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, 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, + 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 ( @@ -2731,112 +2281,100 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest (*PingResponse)(nil), // 2: agentpb.PingResponse (*StoreCredentialRequest)(nil), // 3: agentpb.StoreCredentialRequest (*StoreCredentialResponse)(nil), // 4: agentpb.StoreCredentialResponse - (*ClimonInstallRequest)(nil), // 5: agentpb.ClimonInstallRequest - (*ClimonDeleteRequest)(nil), // 6: agentpb.ClimonDeleteRequest - (*ApplicationInstallRequest)(nil), // 7: agentpb.ApplicationInstallRequest - (*ApplicationDeleteRequest)(nil), // 8: agentpb.ApplicationDeleteRequest - (*ClusterRequest)(nil), // 9: agentpb.ClusterRequest - (*RepositoryAddRequest)(nil), // 10: agentpb.RepositoryAddRequest - (*RepositoryDeleteRequest)(nil), // 11: agentpb.RepositoryDeleteRequest - (*ProjectAddRequest)(nil), // 12: agentpb.ProjectAddRequest - (*ProjectDeleteRequest)(nil), // 13: agentpb.ProjectDeleteRequest - (*JobRequest)(nil), // 14: agentpb.JobRequest - (*JobResponse)(nil), // 15: agentpb.JobResponse - (*SyncAppRequest)(nil), // 16: agentpb.SyncAppRequest - (*SyncAppResponse)(nil), // 17: agentpb.SyncAppResponse - (*GetClusterAppsRequest)(nil), // 18: agentpb.GetClusterAppsRequest - (*GetClusterAppsResponse)(nil), // 19: agentpb.GetClusterAppsResponse - (*GetClusterAppLaunchesRequest)(nil), // 20: agentpb.GetClusterAppLaunchesRequest - (*GetClusterAppLaunchesResponse)(nil), // 21: agentpb.GetClusterAppLaunchesResponse - (*ConfigureAppSSORequest)(nil), // 22: agentpb.ConfigureAppSSORequest - (*ConfigureAppSSOResponse)(nil), // 23: agentpb.ConfigureAppSSOResponse - (*GetClusterAppConfigRequest)(nil), // 24: agentpb.GetClusterAppConfigRequest - (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse - (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest - (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*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 + (*ClusterRequest)(nil), // 5: agentpb.ClusterRequest + (*RepositoryAddRequest)(nil), // 6: agentpb.RepositoryAddRequest + (*RepositoryDeleteRequest)(nil), // 7: agentpb.RepositoryDeleteRequest + (*ProjectAddRequest)(nil), // 8: agentpb.ProjectAddRequest + (*ProjectDeleteRequest)(nil), // 9: agentpb.ProjectDeleteRequest + (*JobRequest)(nil), // 10: agentpb.JobRequest + (*JobResponse)(nil), // 11: agentpb.JobResponse + (*SyncAppRequest)(nil), // 12: agentpb.SyncAppRequest + (*SyncAppResponse)(nil), // 13: agentpb.SyncAppResponse + (*GetClusterAppsRequest)(nil), // 14: agentpb.GetClusterAppsRequest + (*GetClusterAppsResponse)(nil), // 15: agentpb.GetClusterAppsResponse + (*GetClusterAppLaunchesRequest)(nil), // 16: agentpb.GetClusterAppLaunchesRequest + (*GetClusterAppLaunchesResponse)(nil), // 17: agentpb.GetClusterAppLaunchesResponse + (*ConfigureAppSSORequest)(nil), // 18: agentpb.ConfigureAppSSORequest + (*ConfigureAppSSOResponse)(nil), // 19: agentpb.ConfigureAppSSOResponse + (*GetClusterAppConfigRequest)(nil), // 20: agentpb.GetClusterAppConfigRequest + (*GetClusterAppConfigResponse)(nil), // 21: agentpb.GetClusterAppConfigResponse + (*GetClusterAppValuesRequest)(nil), // 22: agentpb.GetClusterAppValuesRequest + (*GetClusterAppValuesResponse)(nil), // 23: agentpb.GetClusterAppValuesResponse + (*InstallAppRequest)(nil), // 24: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 25: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 26: agentpb.SyncAppData + (*AppData)(nil), // 27: agentpb.AppData + (*AppStatus)(nil), // 28: agentpb.AppStatus + (*AppConfig)(nil), // 29: agentpb.AppConfig + (*AppValues)(nil), // 30: agentpb.AppValues + (*AppLaunchConfig)(nil), // 31: agentpb.AppLaunchConfig + nil, // 32: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 33: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 32, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 33, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 26, // 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 - 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 27, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 31, // 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 - 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 29, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 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 + 30, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 29, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 30, // 16: agentpb.InstallAppRequest.appValues:type_name -> agentpb.AppValues + 0, // 17: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode + 29, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 30, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 29, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 28, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 10, // 22: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 5, // 23: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 5, // 24: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 6, // 25: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 7, // 26: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 8, // 27: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 9, // 28: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 1, // 29: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 3, // 30: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 12, // 31: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 14, // 32: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 16, // 33: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 18, // 34: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 20, // 35: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 22, // 36: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 24, // 37: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 11, // 38: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 11, // 39: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 11, // 40: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 11, // 41: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 11, // 42: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 11, // 43: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 11, // 44: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 2, // 45: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 4, // 46: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 13, // 47: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 15, // 48: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 17, // 49: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 19, // 50: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 21, // 51: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 23, // 52: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 25, // 53: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 38, // [38:54] is the sub-list for method output_type + 22, // [22:38] 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 @@ -2897,54 +2435,6 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterRequest); i { case 0: return &v.state @@ -2956,7 +2446,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryAddRequest); i { case 0: return &v.state @@ -2968,7 +2458,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryDeleteRequest); i { case 0: return &v.state @@ -2980,7 +2470,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectAddRequest); i { case 0: return &v.state @@ -2992,7 +2482,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectDeleteRequest); i { case 0: return &v.state @@ -3004,7 +2494,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobRequest); i { case 0: return &v.state @@ -3016,7 +2506,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobResponse); i { case 0: return &v.state @@ -3028,7 +2518,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppRequest); i { case 0: return &v.state @@ -3040,7 +2530,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppResponse); i { case 0: return &v.state @@ -3052,7 +2542,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsRequest); i { case 0: return &v.state @@ -3064,7 +2554,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsResponse); i { case 0: return &v.state @@ -3076,7 +2566,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesRequest); i { case 0: return &v.state @@ -3088,7 +2578,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesResponse); i { case 0: return &v.state @@ -3100,7 +2590,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSORequest); i { case 0: return &v.state @@ -3112,7 +2602,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSOResponse); i { case 0: return &v.state @@ -3124,7 +2614,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigRequest); i { case 0: return &v.state @@ -3136,7 +2626,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigResponse); i { case 0: return &v.state @@ -3148,7 +2638,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesRequest); i { case 0: return &v.state @@ -3160,7 +2650,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesResponse); i { case 0: return &v.state @@ -3172,7 +2662,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppRequest); i { case 0: return &v.state @@ -3184,7 +2674,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppResponse); i { case 0: return &v.state @@ -3196,7 +2686,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppData); i { case 0: return &v.state @@ -3208,7 +2698,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppData); i { case 0: return &v.state @@ -3220,7 +2710,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppStatus); i { case 0: return &v.state @@ -3232,7 +2722,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppConfig); i { case 0: return &v.state @@ -3244,7 +2734,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppValues); i { case 0: return &v.state @@ -3256,7 +2746,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppLaunchConfig); i { case 0: return &v.state @@ -3275,7 +2765,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 36, + NumMessages: 32, 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 21881709..6afca910 100644 --- a/capten/capten-sdk/agentpb/agent_grpc.pb.go +++ b/capten/capten-sdk/agentpb/agent_grpc.pb.go @@ -19,19 +19,15 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" Agent_SubmitJob_FullMethodName = "/agentpb.Agent/SubmitJob" - Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" - Agent_ClimonAppInstall_FullMethodName = "/agentpb.Agent/ClimonAppInstall" - Agent_ClimonAppDelete_FullMethodName = "/agentpb.Agent/ClimonAppDelete" - Agent_DeployerAppInstall_FullMethodName = "/agentpb.Agent/DeployerAppInstall" - Agent_DeployerAppDelete_FullMethodName = "/agentpb.Agent/DeployerAppDelete" Agent_ClusterAdd_FullMethodName = "/agentpb.Agent/ClusterAdd" Agent_ClusterDelete_FullMethodName = "/agentpb.Agent/ClusterDelete" Agent_RepositoryAdd_FullMethodName = "/agentpb.Agent/RepositoryAdd" Agent_RepositoryDelete_FullMethodName = "/agentpb.Agent/RepositoryDelete" Agent_ProjectAdd_FullMethodName = "/agentpb.Agent/ProjectAdd" Agent_ProjectDelete_FullMethodName = "/agentpb.Agent/ProjectDelete" + Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" + Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" Agent_SyncApp_FullMethodName = "/agentpb.Agent/SyncApp" Agent_GetClusterApps_FullMethodName = "/agentpb.Agent/GetClusterApps" Agent_GetClusterAppLaunches_FullMethodName = "/agentpb.Agent/GetClusterAppLaunches" @@ -45,19 +41,15 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AgentClient interface { - Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) - StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) - ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterDelete(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryAdd(ctx context.Context, in *RepositoryAddRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryDelete(ctx context.Context, in *RepositoryDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectAdd(ctx context.Context, in *ProjectAddRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectDelete(ctx context.Context, in *ProjectDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) + StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) GetClusterApps(ctx context.Context, in *GetClusterAppsRequest, opts ...grpc.CallOption) (*GetClusterAppsResponse, error) GetClusterAppLaunches(ctx context.Context, in *GetClusterAppLaunchesRequest, opts ...grpc.CallOption) (*GetClusterAppLaunchesResponse, error) @@ -75,15 +67,6 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { return &agentClient{cc} } -func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { - out := new(PingResponse) - err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_SubmitJob_FullMethodName, in, out, opts...) @@ -93,51 +76,6 @@ func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grp return out, nil } -func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { - out := new(StoreCredentialResponse) - err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_ClusterAdd_FullMethodName, in, out, opts...) @@ -192,6 +130,24 @@ func (c *agentClient) ProjectDelete(ctx context.Context, in *ProjectDeleteReques return out, nil } +func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { + out := new(StoreCredentialResponse) + err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *agentClient) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) { out := new(SyncAppResponse) err := c.cc.Invoke(ctx, Agent_SyncApp_FullMethodName, in, out, opts...) @@ -259,19 +215,15 @@ func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opt // All implementations must embed UnimplementedAgentServer // for forward compatibility type AgentServer interface { - Ping(context.Context, *PingRequest) (*PingResponse, error) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) - StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) - ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) - ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) - DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) - DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) ClusterDelete(context.Context, *ClusterRequest) (*JobResponse, error) RepositoryAdd(context.Context, *RepositoryAddRequest) (*JobResponse, error) RepositoryDelete(context.Context, *RepositoryDeleteRequest) (*JobResponse, error) ProjectAdd(context.Context, *ProjectAddRequest) (*JobResponse, error) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) + Ping(context.Context, *PingRequest) (*PingResponse, error) + StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) GetClusterApps(context.Context, *GetClusterAppsRequest) (*GetClusterAppsResponse, error) GetClusterAppLaunches(context.Context, *GetClusterAppLaunchesRequest) (*GetClusterAppLaunchesResponse, error) @@ -286,27 +238,9 @@ type AgentServer interface { type UnimplementedAgentServer struct { } -func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") -} func (UnimplementedAgentServer) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubmitJob not implemented") } -func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") -} -func (UnimplementedAgentServer) ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppInstall not implemented") -} -func (UnimplementedAgentServer) ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppDelete not implemented") -} -func (UnimplementedAgentServer) DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppInstall not implemented") -} -func (UnimplementedAgentServer) DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppDelete not implemented") -} func (UnimplementedAgentServer) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClusterAdd not implemented") } @@ -325,6 +259,12 @@ func (UnimplementedAgentServer) ProjectAdd(context.Context, *ProjectAddRequest) func (UnimplementedAgentServer) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ProjectDelete not implemented") } +func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") +} func (UnimplementedAgentServer) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncApp not implemented") } @@ -359,24 +299,6 @@ func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { s.RegisterService(&Agent_ServiceDesc, srv) } -func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).Ping(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_Ping_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(JobRequest) if err := dec(in); err != nil { @@ -395,96 +317,6 @@ func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StoreCredentialRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).StoreCredential(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_StoreCredential_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppInstall(ctx, req.(*ClimonInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppDelete(ctx, req.(*ClimonDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppInstall(ctx, req.(*ApplicationInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppDelete(ctx, req.(*ApplicationDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_ClusterAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ClusterRequest) if err := dec(in); err != nil { @@ -593,6 +425,42 @@ func _Agent_ProjectDelete_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreCredentialRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).StoreCredential(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_StoreCredential_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Agent_SyncApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SyncAppRequest) if err := dec(in); err != nil { @@ -726,34 +594,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ ServiceName: "agentpb.Agent", HandlerType: (*AgentServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "Ping", - Handler: _Agent_Ping_Handler, - }, { MethodName: "SubmitJob", Handler: _Agent_SubmitJob_Handler, }, - { - MethodName: "StoreCredential", - Handler: _Agent_StoreCredential_Handler, - }, - { - MethodName: "ClimonAppInstall", - Handler: _Agent_ClimonAppInstall_Handler, - }, - { - MethodName: "ClimonAppDelete", - Handler: _Agent_ClimonAppDelete_Handler, - }, - { - MethodName: "DeployerAppInstall", - Handler: _Agent_DeployerAppInstall_Handler, - }, - { - MethodName: "DeployerAppDelete", - Handler: _Agent_DeployerAppDelete_Handler, - }, { MethodName: "ClusterAdd", Handler: _Agent_ClusterAdd_Handler, @@ -778,6 +622,14 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "ProjectDelete", Handler: _Agent_ProjectDelete_Handler, }, + { + MethodName: "Ping", + Handler: _Agent_Ping_Handler, + }, + { + MethodName: "StoreCredential", + Handler: _Agent_StoreCredential_Handler, + }, { MethodName: "SyncApp", Handler: _Agent_SyncApp_Handler, diff --git a/capten/cassandra/migrations/001_agent.up.cql b/capten/cassandra/migrations/001_agent.up.cql index ade8e1cb..f1502d1b 100644 --- a/capten/cassandra/migrations/001_agent.up.cql +++ b/capten/cassandra/migrations/001_agent.up.cql @@ -1,11 +1,13 @@ -CREATE TABLE AppConfig( +CREATE TABLE ClusterAppConfig( app_name text, description text, category text, chart_name text, repo_name text, repo_url text, namespace text, release_name text, version text, launch_url text, launch_redirect_url text, create_namespace boolean, privileged_namespace boolean, override_values text, launch_ui_values text, + template_values text, default_app boolean, icon blob, install_status text, + update_time text, PRIMARY KEY (release_name) ) WITH bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} diff --git a/charts/kad/Chart.yaml b/charts/kad/Chart.yaml index 7c4411c9..befa1b6a 100644 --- a/charts/kad/Chart.yaml +++ b/charts/kad/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.5 +version: 0.2.6 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "1.17.0" diff --git a/charts/kad/values.yaml b/charts/kad/values.yaml index 099981d2..c91091b4 100644 --- a/charts/kad/values.yaml +++ b/charts/kad/values.yaml @@ -59,7 +59,7 @@ ingressroute: enabled: true mtls: enabled: true - host: "captenagent.dev.optimizor.app" + host: "captenagent" cert: secretName: "kad-agent-cert" diff --git a/charts/server/Chart.yaml b/charts/server/Chart.yaml index 425399e3..76eaef0a 100644 --- a/charts/server/Chart.yaml +++ b/charts/server/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.17 +version: 0.1.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "1.17.0" diff --git a/charts/server/templates/deployment.yaml b/charts/server/templates/deployment.yaml index f16770cd..36892826 100644 --- a/charts/server/templates/deployment.yaml +++ b/charts/server/templates/deployment.yaml @@ -73,16 +73,8 @@ spec: value: {{ .Values.ory.entityName }} - name: ORY_CRED_IDENTIFIER value: {{ .Values.ory.credIdentifier }} - - name: CAPTEN_SERVER_ENTITY - value: {{.Values.oauth.entityName}} - - name: CAPTEN_SERVER_IDENTIFIER - value: {{.Values.oauth.identifier}} - name: IAM_URL value: {{.Values.iam.address}} - - name: CAPTEN_CLIENT_KEY - value: {{.Values.oauth.clientKey}} - - name: CAPTEN_CLIENT_SECRET - value: {{.Values.oauth.clientSecret}} resources: {{- toYaml .Values.resources | nindent 12 }} {{- with .Values.nodeSelector }} diff --git a/charts/server/values.yaml b/charts/server/values.yaml index 74eeb99e..bb1aba73 100644 --- a/charts/server/values.yaml +++ b/charts/server/values.yaml @@ -31,12 +31,6 @@ ory: credIdentifier: capten entityName: ory -oauth: - entityName: "service-reg" - identifier: "service-reg-identifier" - clientKey: "CAPTEN_CLIENTID" - clientSecret: "CAPTEN_CLIENTSECRET" - env: logLevel: info database: astra diff --git a/proto/agent.proto b/proto/agent.proto index dc0be008..8cd287ce 100644 --- a/proto/agent.proto +++ b/proto/agent.proto @@ -9,30 +9,20 @@ package agentpb; // The greeting service definition. service Agent { - rpc Ping (PingRequest) returns (PingResponse) {} - rpc SubmitJob (JobRequest) returns (JobResponse) {} - rpc StoreCredential (StoreCredentialRequest) returns (StoreCredentialResponse) {} - - rpc ClimonAppInstall (ClimonInstallRequest) returns (JobResponse) {} - rpc ClimonAppDelete (ClimonDeleteRequest) returns (JobResponse) {} - - rpc DeployerAppInstall (ApplicationInstallRequest) returns (JobResponse) {} - rpc DeployerAppDelete (ApplicationDeleteRequest) returns (JobResponse) {} - rpc ClusterAdd (ClusterRequest) returns (JobResponse) {} rpc ClusterDelete (ClusterRequest) returns (JobResponse) {} - rpc RepositoryAdd (RepositoryAddRequest) returns (JobResponse) {} rpc RepositoryDelete (RepositoryDeleteRequest) returns (JobResponse) {} - rpc ProjectAdd (ProjectAddRequest) returns (JobResponse) {} rpc ProjectDelete (ProjectDeleteRequest) returns (JobResponse) {} + rpc Ping (PingRequest) returns (PingResponse) {} + rpc StoreCredential (StoreCredentialRequest) returns (StoreCredentialResponse) {} + rpc SyncApp(SyncAppRequest) returns (SyncAppResponse) {} rpc GetClusterApps (GetClusterAppsRequest) returns (GetClusterAppsResponse) {} rpc GetClusterAppLaunches (GetClusterAppLaunchesRequest) returns (GetClusterAppLaunchesResponse) {} - rpc ConfigureAppSSO(ConfigureAppSSORequest) returns (ConfigureAppSSOResponse) {} rpc GetClusterAppConfig (GetClusterAppConfigRequest) returns (GetClusterAppConfigResponse) {} @@ -67,47 +57,6 @@ message StoreCredentialResponse { string statusMessage = 2; } -message ClimonInstallRequest { - string plugin_name = 1; - string repo_name = 2; - string repo_url = 3; - string chart_name = 4; - string namespace = 5; - string release_name = 6; - uint32 timeout = 7; - string version = 8; - string cluster_name = 9; -} - -message ClimonDeleteRequest { - string plugin_name = 1; - string namespace = 2; - string release_name = 3; - uint32 timeout = 4; - string cluster_name = 5; -} - -message ApplicationInstallRequest { - string plugin_name = 1; - string repo_name = 2; - string repo_url = 3; - string chart_name = 4; - string namespace = 5; - string release_name = 6; - uint32 timeout = 7; - string version = 8; - string cluster_name = 9; - string values_yaml = 10; -} - -message ApplicationDeleteRequest { - string plugin_name = 1; - string namespace = 2; - string release_name = 3; - uint32 timeout = 4; - string cluster_name = 5; -} - message ClusterRequest { string plugin_name = 1; string cluster_name = 2; @@ -210,7 +159,6 @@ message InstallAppRequest { message InstallAppResponse { StatusCode status = 1; string statusMessage = 2; - JobResponse jobResponse = 3; } message SyncAppData { @@ -245,11 +193,13 @@ message AppConfig { string installStatus = 15; string runtimeStatus = 16; bool defualtApp = 17; + string lastUpdateTime = 18; } message AppValues { bytes overrideValues = 1; bytes launchUIValues = 2; + bytes templateValues = 3; } message AppLaunchConfig { diff --git a/proto/server.proto b/proto/server.proto index 3a5678cf..7389a5cc 100644 --- a/proto/server.proto +++ b/proto/server.proto @@ -163,7 +163,7 @@ message ClusterAppConfig { message AddStoreAppRequest { StoreAppConfig appConfig = 1; - StoreAppValues appValues = 2; + StoreAppAllValues appValues = 2; } message AddStoreAppResponse { @@ -173,7 +173,7 @@ message AddStoreAppResponse { message UpdateStoreAppRequest { StoreAppConfig appConfig = 1; - StoreAppValues appValues = 2; + StoreAppAllValues appValues = 2; } message UpdateStoreAppRsponse { @@ -200,7 +200,6 @@ message GetStoreAppResponse { StatusCode status = 1; string statusMessage = 2; StoreAppConfig appConfig = 3; - StoreAppValues appValues = 4; } message GetStoreAppsRequest { @@ -214,7 +213,7 @@ message GetStoreAppsResponse { message StoreAppsData { StoreAppConfig appConfigs = 1; - StoreAppValues appValues = 2; + bytes overrideValues = 2; } message GetStoreAppValuesRequest { @@ -226,12 +225,13 @@ message GetStoreAppValuesResponse { StatusCode status = 1; string statusMessage = 2; StoreAppConfig appConfig = 3; - StoreAppValues appValues = 4; + bytes overrideValues = 4; } message DeployStoreAppRequest { - StoreAppConfig appConfig = 1; - StoreAppValues appValues = 2; + string appName = 1; + string version = 2; + bytes overrideValues = 3; } message DeployStoreAppResponse{ @@ -257,8 +257,8 @@ message StoreAppConfig { bool defualtApp = 15; } -message StoreAppValues { +message StoreAppAllValues { bytes overrideValues = 1; bytes launchUIValues = 2; + bytes templateValues = 3; } - diff --git a/server/cmd/server/main.go b/server/cmd/server/main.go index d39ec4c3..c7d30d65 100644 --- a/server/cmd/server/main.go +++ b/server/cmd/server/main.go @@ -10,14 +10,9 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/reflection" - middleware "github.com/deepmap/oapi-codegen/pkg/gin-middleware" - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/agent/pkg/logging" - "github.com/kube-tarian/kad/server/api" rpcapi "github.com/kube-tarian/kad/server/pkg/api" "github.com/kube-tarian/kad/server/pkg/config" - "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" @@ -40,11 +35,6 @@ func main() { log.Fatalf("%v", err) } - swagger, err := api.GetSwagger() - if err != nil { - log.Fatal("Failed to get the swagger", err) - } - serverStore, err := store.NewStore(cfg.Database) if err != nil { log.Fatal("Failed to connect to %s database", cfg.Database, err) @@ -65,11 +55,6 @@ func main() { log.Fatal("OryClient initialization failed", err) } - server, err := handler.NewAPIHandler(log, serverStore, oryclient) - if err != nil { - log.Fatal("APIHandler initialization failed", err) - } - iamCfg, err := iamclient.NewConfig() if err != nil { log.Fatal("faield to get the iam config", err) @@ -109,17 +94,6 @@ func main() { } }() - r := gin.Default() - r.Use(middleware.OapiRequestValidator(swagger)) - r = api.RegisterHandlers(r, server) - - go func() { - serverAddress := fmt.Sprintf("%s:%d", cfg.ServerHost, cfg.ServerPort) - if err := r.Run(serverAddress); err != nil { - log.Fatal("failed to start server", err) - } - }() - signals := make(chan os.Signal, 1) signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM) <-signals diff --git a/server/data/store-apps/conf/argo-cd.yaml b/server/data/store-apps/conf/argo-cd.yaml index 80bc8bf8..777e7936 100644 --- a/server/data/store-apps/conf/argo-cd.yaml +++ b/server/data/store-apps/conf/argo-cd.yaml @@ -8,6 +8,3 @@ Namespace: "argo-cd" ReleaseName: "argo-cd" Version: "1.0.0" CreateNamespace: true -OverrideValues: - driver: - kind: ebpf diff --git a/server/data/store-apps/conf/crossplane.yaml b/server/data/store-apps/conf/crossplane.yaml index 06447274..43b64e1e 100644 --- a/server/data/store-apps/conf/crossplane.yaml +++ b/server/data/store-apps/conf/crossplane.yaml @@ -8,4 +8,3 @@ Namespace: "crossplane" ReleaseName: "crossplane" Version: "1.0.0" CreateNamespace: true -OverrideValues: diff --git a/server/data/store-apps/conf/tekton.yaml b/server/data/store-apps/conf/tekton.yaml index 22508878..0fbc6cd4 100644 --- a/server/data/store-apps/conf/tekton.yaml +++ b/server/data/store-apps/conf/tekton.yaml @@ -8,4 +8,3 @@ Namespace: "tekton" ReleaseName: "tekton" Version: "1.0.0" CreateNamespace: true -OverrideValues: diff --git a/server/data/store-apps/conf/testkube.yaml b/server/data/store-apps/conf/testkube.yaml index 6b1372cc..105c97e2 100644 --- a/server/data/store-apps/conf/testkube.yaml +++ b/server/data/store-apps/conf/testkube.yaml @@ -8,4 +8,3 @@ Namespace: "testkube" ReleaseName: "testkube" Version: "1.0.0" CreateNamespace: true -OverrideValues: diff --git a/server/data/store-apps/conf/values/argo-cd_template.yaml b/server/data/store-apps/conf/values/argo-cd_template.yaml new file mode 100644 index 00000000..a5bd77ba --- /dev/null +++ b/server/data/store-apps/conf/values/argo-cd_template.yaml @@ -0,0 +1,2 @@ +driver: + kind: ebpf diff --git a/server/openapi.yaml b/server/openapi.yaml deleted file mode 100644 index f5227f28..00000000 --- a/server/openapi.yaml +++ /dev/null @@ -1,703 +0,0 @@ -openapi: "3.0.3" - -info: - title: SaaS server Open REST API Specification - description: SaaS server Open REST API specification - version: 1.0.0 - -servers: - - url: / - -paths: - /status: - get: - tags: - - private - summary: Kubernetes readiness and liveness probe endpoint - responses: - '200': - description: successful operation - - /api-docs: - get: - tags: - - public - summary: List of APIs provided by the service - responses: - '200': - description: OK - - /agent/climondeploy: - post: - tags: - - climon - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ClimonPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - put: - tags: - - climon - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ClimonPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - delete: - tags: - - climon - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ClimonDeleteRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - /agent/deploy: - post: - tags: - - deployer - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeployerPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - put: - tags: - - deployer - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeployerPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - delete: - tags: - - deployer - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeployerDeleteRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - /agent/repository: - post: - tags: - - repository - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RepositoryPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - put: - tags: - - repository - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RepositoryPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - delete: - tags: - - repository - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RepositoryDeleteRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - /agent/project: - post: - tags: - - project - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ProjectPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - put: - tags: - - project - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ProjectPostRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - delete: - tags: - - project - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ProjectDeleteRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - /agent/cluster: - post: - tags: - - cluster - summary: deploy the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ClusterRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - delete: - tags: - - cluster - summary: Delete the application - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ClusterRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - - /agent/endpoint: - post: - tags: - - agent-registration - summary: Register agent - requestBody: - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/AgentRequest' - responses: - '200': - description: OK - put: - tags: - - agent-registration - summary: Register agent - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AgentRequest' - responses: - '200': - description: OK - get: - tags: - - agent-registration - summary: Register agent - responses: - '200': - description: OK - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/AgentResponse' - - /agent/secret: - post: - tags: - - store - summary: to store the credentials in agent vault - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/StoreCredRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' - /agent/apps: - post: - tags: - - agent-apps - summary: used to update the installed tools - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AgentAppsRequest' - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Response' -# get: -# tags: -# - agent-apps -# summary: provision details -# responses: -# '200': -# description: OK -# content: -# application/json: -# schema: -# $ref: '#/components/schemas/Response' -# /apps: -# post: -# tags: -# - apps -# summary: used to update the installed tools -# requestBody: -# content: -# application/json: -# schema: -# $ref: '#/components/schemas/AppsRequest' -# responses: -# '200': -# description: OK -# content: -# application/json: -# schema: -# $ref: '#/components/schemas/Response' -# get: -# tags: -# - apps -# summary: provision details -# responses: -# '200': -# description: OK -# content: -# application/json: -# schema: -# $ref: '#/components/schemas/AppsResponse - -components: - schemas: - AgentAppsRequest: - title: post provisions - type: object - properties: - apps: - type: array - items: - properties: - name: - type: string - chartName: - type: string - repoName: - type: string - namespace: - type: string - repoURL: - type: string - releaseName: - type: string - version: - type: string - override: - type: string -# AppsResponse: -# title: get provisions -# type: object -# properties: -# provisions: -# type: array -# items: -# properties: -# group: -# type: string -# tools: -# type: array -# properties: -# name: -# type: string -# description: -# type: string -# installed: -# type: boolean -# lastupdate: -# type: object -# version: -# type: string - StoreCredRequest: - title: store secrets - type: object - properties: - customer_id: - type: string - credname: - type: string - username: - type: string - password: - type: string - - AgentRequest: - title: Agent information - type: object - properties: - ca_crt: - type: array - items: - type: string - format: binary - client_crt: - type: array - items: - type: string - format: binary - client_key: - type: array - items: - type: string - format: binary - required: - - ca_crt - - client_crt - - client_key - - AgentResponse: - title: Agent response - type: object - properties: - customer_id: - type: string - endpoint: - type: string - required: - - customer_id - - endpoint - - Response: - type: object - description: Configuration request response - properties: - status: - type: string - message: - type: string - required: - - status - - message - - ClimonPostRequest: - title: Deploy operation request payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - repo_name: - type: string - description: Repository name - repo_url: - type: string - description: Repository URL - chart_name: - type: string - description: Chart name in Repository - namespace: - type: string - description: Namespace chart to be installed - release_name: - type: string - description: Release name to be used for install - timeout: - type: integer - description: Timeout for the application installation - version: - type: string - description: Version of the chart - cluster_name: - type: string - description: Cluster in which to be installed, default in-build cluster - required: - - plugin_name - - repo_name - - repo_url - - chart_name - - namespace - - release_name - - timeout - - ClimonDeleteRequest: - title: Deploy operation request payload - type: object - properties: - customer_id: - type: string - plugin_name: - type: string - description: Plugin name - namespace: - type: string - description: Namespace chart to be installed - release_name: - type: string - description: Release name to be used for install - timeout: - type: integer - description: Timeout for the application installation - cluster_name: - type: string - description: Cluster in which to be deleted, default in-build cluster - required: - - customer_id - - plugin_name - - namespace - - release_name - - timeout - DeployerPostRequest: - title: Deploy operation request payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - repo_name: - type: string - description: Repository name - repo_url: - type: string - description: Repository URL - chart_name: - type: string - description: Chart name in Repository - namespace: - type: string - description: Namespace chart to be installed - release_name: - type: string - description: Release name to be used for install - timeout: - type: integer - description: Timeout for the application installation - version: - type: string - description: Version of the chart - cluster_name: - type: string - description: Cluster in which to be installed, default in-build cluster - required: - - plugin_name - - repo_name - - repo_url - - chart_name - - namespace - - release_name - - timeout - - DeployerDeleteRequest: - title: Deploy operation request payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - namespace: - type: string - description: Namespace chart to be installed - release_name: - type: string - description: Release name to be used for install - timeout: - type: integer - description: Timeout for the application installation - cluster_name: - type: string - description: Cluster in which to be deleted, default in-build cluster - required: - - plugin_name - - namespace - - release_name - - timeout - - ClusterRequest: - title: Configure payload - type: object - properties: - customer_id: - type: string - plugin_name: - type: string - cluster_name: - type: string - required: - - customer_id - - plugin_name - - cluster_name - - RepositoryPostRequest: - title: Configure payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - repo_name: - type: string - description: Repository to added to plugin - repo_url: - type: string - description: Repository URL - required: - - plugin_name - - repo_name - - repo_url - - RepositoryDeleteRequest: - title: Configure payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - repo_name: - type: string - description: Repository to added to plugin - required: - - plugin_name - - repo_name - - ProjectPostRequest: - title: Configure payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - project_name: - type: string - description: Project name to be created in plugin - # Project parameters to be added - required: - - plugin_name - - project_name - - ProjectDeleteRequest: - title: Configure payload - type: object - properties: - plugin_name: - type: string - description: Plugin name - project_name: - type: string - description: Project name to be created in plugin - # Project parameters to be added - required: - - plugin_name - - project_name diff --git a/server/pkg/api/server.go b/server/pkg/api/server.go index d9aed187..1fc6aa5c 100644 --- a/server/pkg/api/server.go +++ b/server/pkg/api/server.go @@ -2,6 +2,7 @@ package api import ( "context" + "encoding/base64" "github.com/kube-tarian/kad/agent/pkg/logging" "github.com/kube-tarian/kad/server/pkg/agent" @@ -54,3 +55,18 @@ func metadataContextToMap(ctx context.Context) map[string]string { } return metadataMap } + +func encodeBase64BytesToString(val []byte) string { + if len(val) == 0 { + return "" + } + return base64.StdEncoding.EncodeToString(val) +} + +func decodeBase64StringToBytes(val string) []byte { + if len(val) == 0 { + return nil + } + dval, _ := base64.StdEncoding.DecodeString(val) + return dval +} diff --git a/server/pkg/api/store_apps.go b/server/pkg/api/store_apps.go index d457eae4..d107187f 100644 --- a/server/pkg/api/store_apps.go +++ b/server/pkg/api/store_apps.go @@ -2,7 +2,6 @@ package api import ( "context" - "encoding/base64" "encoding/hex" "github.com/kube-tarian/kad/server/pkg/pb/agentpb" @@ -12,12 +11,11 @@ import ( func (s *Server) AddStoreApp(ctx context.Context, request *serverpb.AddStoreAppRequest) ( *serverpb.AddStoreAppResponse, error) { - if request.AppConfig.AppName == "" || request.AppConfig.Version == "" { - s.log.Errorf("failed to add app config to store, %v", "App name/version is missing") + s.log.Infof("AppName or version is missing for add store app request") return &serverpb.AddStoreAppResponse{ - Status: serverpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: "failed add app config to store, app name/version is missing", + Status: serverpb.StatusCode_INVALID_ARGUMENT, + StatusMessage: "AppName or version is missing in the request", }, nil } @@ -36,11 +34,12 @@ func (s *Server) AddStoreApp(ctx context.Context, request *serverpb.AddStoreAppR Icon: hex.EncodeToString(request.AppConfig.Icon), LaunchURL: request.AppConfig.LaunchURL, LaunchUIDescription: request.AppConfig.LaunchUIDescription, - OverrideValues: base64.StdEncoding.EncodeToString(request.AppValues.OverrideValues), - LaunchUIValues: base64.StdEncoding.EncodeToString(request.AppValues.LaunchUIValues), + OverrideValues: encodeBase64BytesToString(request.AppValues.OverrideValues), + LaunchUIValues: encodeBase64BytesToString(request.AppValues.LaunchUIValues), + TemplateValues: encodeBase64BytesToString(request.AppValues.TemplateValues), } - if err := s.serverStore.AddOrUpdateApp(config); err != nil { + if err := s.serverStore.AddOrUpdateStoreApp(config); err != nil { s.log.Errorf("failed to add app config to store, %v", err) return &serverpb.AddStoreAppResponse{ Status: serverpb.StatusCode_INTERNRAL_ERROR, @@ -57,10 +56,10 @@ func (s *Server) AddStoreApp(ctx context.Context, request *serverpb.AddStoreAppR func (s *Server) UpdateStoreApp(ctx context.Context, request *serverpb.UpdateStoreAppRequest) ( *serverpb.UpdateStoreAppRsponse, error) { if request.AppConfig.AppName == "" || request.AppConfig.Version == "" { - s.log.Errorf("failed to update app config in store, %v", "App name/version is missing") + s.log.Infof("AppName or version is missing for update store app request") return &serverpb.UpdateStoreAppRsponse{ - Status: serverpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: "failed to update app config in store, app name/version is missing", + Status: serverpb.StatusCode_INVALID_ARGUMENT, + StatusMessage: "AppName or version is missing in the request", }, nil } @@ -79,11 +78,12 @@ func (s *Server) UpdateStoreApp(ctx context.Context, request *serverpb.UpdateSto Icon: hex.EncodeToString(request.AppConfig.Icon), LaunchURL: request.AppConfig.LaunchURL, LaunchUIDescription: request.AppConfig.LaunchUIDescription, - OverrideValues: base64.StdEncoding.EncodeToString(request.AppValues.OverrideValues), - LaunchUIValues: base64.StdEncoding.EncodeToString(request.AppValues.LaunchUIValues), + OverrideValues: encodeBase64BytesToString(request.AppValues.OverrideValues), + LaunchUIValues: encodeBase64BytesToString(request.AppValues.LaunchUIValues), + TemplateValues: encodeBase64BytesToString(request.AppValues.TemplateValues), } - if err := s.serverStore.AddOrUpdateApp(config); err != nil { + if err := s.serverStore.AddOrUpdateStoreApp(config); err != nil { s.log.Errorf("failed to update app config in store, %v", err) return &serverpb.UpdateStoreAppRsponse{ Status: serverpb.StatusCode_INTERNRAL_ERROR, @@ -100,10 +100,10 @@ func (s *Server) UpdateStoreApp(ctx context.Context, request *serverpb.UpdateSto func (s *Server) DeleteStoreApp(ctx context.Context, request *serverpb.DeleteStoreAppRequest) ( *serverpb.DeleteStoreAppResponse, error) { if request.AppName == "" || request.Version == "" { - s.log.Errorf("failed to delete app config from store, %v", "App name/version is missing") + s.log.Infof("AppName or version is missing for delete store app request") return &serverpb.DeleteStoreAppResponse{ - Status: serverpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: "failed to delete app config from store, app name/version is missing", + Status: serverpb.StatusCode_INVALID_ARGUMENT, + StatusMessage: "AppName or version is missing in the request", }, nil } @@ -125,12 +125,13 @@ func (s *Server) DeleteStoreApp(ctx context.Context, request *serverpb.DeleteSto func (s *Server) GetStoreApp(ctx context.Context, request *serverpb.GetStoreAppRequest) ( *serverpb.GetStoreAppResponse, error) { if request.AppName == "" || request.Version == "" { - s.log.Errorf("failed to get app config from store, %v", "App name/version is missing") + s.log.Infof("AppName or version is missing for get store app request") return &serverpb.GetStoreAppResponse{ - Status: serverpb.StatusCode_INTERNRAL_ERROR, - StatusMessage: "failed to get app config from store, app name/version is missing", + Status: serverpb.StatusCode_INVALID_ARGUMENT, + StatusMessage: "AppName or version is missing in the request", }, nil } + config, err := s.serverStore.GetAppFromStore(request.AppName, request.Version) if err != nil { s.log.Errorf("failed to get app config from store, %v", err) @@ -153,23 +154,15 @@ func (s *Server) GetStoreApp(ctx context.Context, request *serverpb.GetStoreAppR CreateNamespace: config.CreateNamespace, PrivilegedNamespace: config.PrivilegedNamespace, Icon: decodedIconBytes, - LaunchURL: config.LaunchUIURL, + LaunchURL: config.LaunchURL, LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, } - decodedOverrideValuesBytes, _ := base64.StdEncoding.DecodeString(config.OverrideValues) - decodedLaunchUiValuesBytes, _ := base64.StdEncoding.DecodeString(config.LaunchUIValues) - appValues := &serverpb.StoreAppValues{ - OverrideValues: decodedOverrideValuesBytes, - LaunchUIValues: decodedLaunchUiValuesBytes, - } - return &serverpb.GetStoreAppResponse{ Status: serverpb.StatusCode_OK, StatusMessage: "app config is sucessfuly fetched from store", AppConfig: appConfig, - AppValues: appValues, }, nil } @@ -189,8 +182,6 @@ func (s *Server) GetStoreApps(ctx context.Context, request *serverpb.GetStoreApp appsData := []*serverpb.StoreAppsData{} for _, config := range *configs { decodedIconBytes, _ := hex.DecodeString(config.Icon) - decodedOverrideValuesBytes, _ := base64.StdEncoding.DecodeString(config.OverrideValues) - decodedLaunchUiValuesBytes, _ := base64.StdEncoding.DecodeString(config.LaunchUIValues) appsData = append(appsData, &serverpb.StoreAppsData{ AppConfigs: &serverpb.StoreAppConfig{ AppName: config.Name, @@ -204,14 +195,10 @@ func (s *Server) GetStoreApps(ctx context.Context, request *serverpb.GetStoreApp CreateNamespace: config.CreateNamespace, PrivilegedNamespace: config.PrivilegedNamespace, Icon: decodedIconBytes, - LaunchURL: config.LaunchUIURL, + LaunchURL: config.LaunchURL, LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, }, - AppValues: &serverpb.StoreAppValues{ - OverrideValues: decodedOverrideValuesBytes, - LaunchUIValues: decodedLaunchUiValuesBytes, - }, }) } @@ -253,30 +240,23 @@ func (s *Server) GetStoreAppValues(ctx context.Context, request *serverpb.GetSto CreateNamespace: config.CreateNamespace, PrivilegedNamespace: config.PrivilegedNamespace, Icon: decodedIconBytes, - LaunchURL: config.LaunchUIURL, + LaunchURL: config.LaunchURL, LaunchUIDescription: config.LaunchUIDescription, ReleaseName: config.ReleaseName, } - decodedOverrideValuesBytes, _ := base64.StdEncoding.DecodeString(config.OverrideValues) - decodedLaunchUiValuesBytes, _ := base64.StdEncoding.DecodeString(config.LaunchUIValues) - appValues := &serverpb.StoreAppValues{ - OverrideValues: decodedOverrideValuesBytes, - LaunchUIValues: decodedLaunchUiValuesBytes, - } - return &serverpb.GetStoreAppValuesResponse{ - Status: serverpb.StatusCode_OK, - StatusMessage: "store app values sucessfuly fetched", - AppConfig: appConfig, - AppValues: appValues, + Status: serverpb.StatusCode_OK, + StatusMessage: "store app values sucessfuly fetched", + AppConfig: appConfig, + OverrideValues: decodeBase64StringToBytes(config.OverrideValues), }, nil } func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeployStoreAppRequest) ( *serverpb.DeployStoreAppResponse, error) { - if request.AppConfig.AppName == "" || request.AppConfig.Version == "" { + if request.AppName == "" || request.Version == "" { s.log.Errorf("failed to get store app values, %v", "App name/version is missing") return &serverpb.DeployStoreAppResponse{ Status: serverpb.StatusCode_INTERNRAL_ERROR, @@ -284,6 +264,15 @@ func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeploySto }, nil } + config, err := s.serverStore.GetAppFromStore(request.AppName, request.Version) + if err != nil { + s.log.Errorf("failed to get store app values, %v", err) + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to find store app values", + }, nil + } + metadataMap := metadataContextToMap(ctx) orgId := metadataMap[organizationIDAttribute] if orgId == "" { @@ -312,27 +301,29 @@ func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeploySto }, nil } + decodedIconBytes, _ := hex.DecodeString(config.Icon) req := &agentpb.InstallAppRequest{ AppConfig: &agentpb.AppConfig{ - AppName: request.AppConfig.AppName, - Version: request.AppConfig.Version, - ReleaseName: request.AppConfig.ReleaseName, - Category: request.AppConfig.Category, - Description: request.AppConfig.Description, - ChartName: request.AppConfig.ChartName, - RepoName: request.AppConfig.RepoName, - RepoURL: request.AppConfig.RepoURL, - Namespace: request.AppConfig.Namespace, - CreateNamespace: request.AppConfig.CreateNamespace, - PrivilegedNamespace: request.AppConfig.PrivilegedNamespace, - Icon: request.AppConfig.Icon, - LaunchURL: request.AppConfig.LaunchURL, - LaunchUIDescription: request.AppConfig.LaunchUIDescription, - DefualtApp: request.AppConfig.DefualtApp, + AppName: config.Name, + Version: config.Version, + ReleaseName: config.ReleaseName, + Category: config.Category, + Description: config.Description, + ChartName: config.ChartName, + RepoName: config.RepoName, + RepoURL: config.RepoURL, + Namespace: config.Namespace, + CreateNamespace: config.CreateNamespace, + PrivilegedNamespace: config.PrivilegedNamespace, + Icon: decodedIconBytes, + LaunchURL: config.LaunchURL, + LaunchUIDescription: config.LaunchUIDescription, + DefualtApp: false, }, AppValues: &agentpb.AppValues{ - OverrideValues: request.AppValues.OverrideValues, - LaunchUIValues: request.AppValues.LaunchUIValues, + OverrideValues: request.OverrideValues, + LaunchUIValues: decodeBase64StringToBytes(config.LaunchUIValues), + TemplateValues: decodeBase64StringToBytes(config.TemplateValues), }, } @@ -349,5 +340,4 @@ func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeploySto Status: serverpb.StatusCode_OK, StatusMessage: "app is successfully deployed", }, nil - } diff --git a/server/pkg/handler/handle_agent.go b/server/pkg/handler/handle_agent.go deleted file mode 100644 index 5fb8ff75..00000000 --- a/server/pkg/handler/handle_agent.go +++ /dev/null @@ -1,85 +0,0 @@ -package handler - -import ( - "errors" - "net/http" - - "github.com/kube-tarian/kad/server/pkg/credential" - - "github.com/gin-gonic/gin" - - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/model" - "github.com/kube-tarian/kad/server/pkg/types" -) - -func (a *APIHandler) PostAgentEndpoint(c *gin.Context) { - a.log.Info("Register agent api invocation started") - - //var req api.AgentRequest - customerId := c.GetHeader("customer_id") - if customerId == "" { - a.setFailedResponse(c, "missing customer id header", errors.New("")) - return - } - - endpoint := c.GetHeader("endpoint") - if endpoint == "" { - a.setFailedResponse(c, "missing endpoint in header", errors.New("")) - return - } - - fileContentsMap, err := a.getFileContent(c, map[string]string{ - "ca_crt": types.ClientCertChainFileName, - "client_crt": types.ClientCertFileName, - "client_key": types.ClientKeyFileName}) - if err != nil { - a.setFailedResponse(c, "failed to register agent", err) - return - } - - err = a.serverStore.AddCluster(customerId, customerId, customerId, endpoint) - if err != nil { - a.setFailedResponse(c, "failed to store data", nil) - a.log.Error("failed to get db session", err) - return - } - - err = credential.PutClusterCerts(c, customerId, - fileContentsMap[types.ClientCertChainFileName], - fileContentsMap[types.ClientKeyFileName], - fileContentsMap[types.ClientCertFileName], - ) - - if err != nil { - a.setFailedResponse(c, "failed to register", nil) - a.log.Error("failed to store cert in vault", err) - return - } - - c.Writer.WriteHeader(http.StatusOK) - a.log.Info("registered new agent endpoint") -} - -func (a *APIHandler) GetAgentEndpoint(c *gin.Context) { - a.log.Debug("get all registered agents api") - c.IndentedJSON(http.StatusOK, &model.AgentsResponse{}) - a.log.Debug("get all registered agents api") -} - -func (a *APIHandler) PutAgentEndpoint(c *gin.Context) { - a.log.Debug("update register agent api invocation started") - var req api.AgentRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "Failed to parse deploy payload", err) - return - } - - //TODO Update in DB and internal cache - c.Writer.WriteHeader(http.StatusOK) - a.log.Debug("update register agent api invocation finished") -} - -func (a *APIHandler) PostAgentApps(c *gin.Context) { - a.setFailedResponse(c, "not implemented", errors.New("")) -} diff --git a/server/pkg/handler/handle_agent_test.go b/server/pkg/handler/handle_agent_test.go deleted file mode 100644 index 0eda53e3..00000000 --- a/server/pkg/handler/handle_agent_test.go +++ /dev/null @@ -1,814 +0,0 @@ -package handler - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "testing" - - "github.com/gin-gonic/gin" - "github.com/intelops/go-common/logging" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/agent" - "github.com/kube-tarian/kad/server/pkg/config" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" - "github.com/stretchr/testify/require" -) - -func TestAPIHandler_Close(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - customerId string - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.agentHandler.RemoveAgent(tt.args.customerId) - }) - } -} - -func TestAPIHandler_CloseAll(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - tests := []struct { - name string - fields fields - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.Close() - }) - } -} - -func TestAPIHandler_ConnectClient(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - customerId string - } - tests := []struct { - name string - fields fields - args args - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - if _, err := a.agentHandler.GetAgent(tt.args.customerId); (err != nil) != tt.wantErr { - t.Errorf("ConnectClient() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func TestAPIHandler_DeleteAgentClimondeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.DeleteAgentClimondeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_DeleteAgentCluster(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.DeleteAgentCluster(tt.args.c) - }) - } -} - -func TestAPIHandler_DeleteAgentDeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.DeleteAgentDeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_DeleteAgentProject(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.DeleteAgentProject(tt.args.c) - }) - } -} - -func TestAPIHandler_DeleteAgentRepository(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.DeleteAgentRepository(tt.args.c) - }) - } -} - -func TestAPIHandler_GetAgentEndpoint(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.GetAgentEndpoint(tt.args.c) - }) - } -} - -func TestAPIHandler_GetApiDocs(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.GetApiDocs(tt.args.c) - }) - } -} - -func TestAPIHandler_GetClient(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - customerId string - } - tests := []struct { - name string - fields fields - args args - want *agent.Agent - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - if got, err := a.agentHandler.GetAgent(tt.args.customerId); err != nil && !reflect.DeepEqual(got, tt.want) { - t.Errorf("GetClient() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestAPIHandler_GetStatus(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.GetStatus(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentApps(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - - chartName := "argocd" - name := "argocd" - //override := "" - releaseName := "test" - repoName := "test" - repoURL := "https://argocd.com" - version := "v1.0.0" - namespace := "capten" - tools := []struct { - ChartName *string `json:"chartName,omitempty"` - Name *string `json:"name,omitempty"` - Namespace *string `json:"namespace,omitempty"` - Override *string `json:"override,omitempty"` - ReleaseName *string `json:"releaseName,omitempty"` - RepoName *string `json:"repoName,omitempty"` - RepoURL *string `json:"repoURL,omitempty"` - Version *string `json:"version,omitempty"` - }{ - { - ChartName: &chartName, - Name: &name, - ReleaseName: &releaseName, - RepoName: &repoName, - RepoURL: &repoURL, - Version: &version, - Namespace: &namespace, - }, - } - - apps := api.AgentAppsRequest{ - Apps: &tools, - } - - jsonByte, err := json.Marshal(apps) - require.NoError(t, err) - fmt.Println(string(jsonByte)) - - gin.SetMode(gin.TestMode) - w := httptest.NewRecorder() - c, _ := gin.CreateTestContext(w) - c.Request = &http.Request{ - Header: make(http.Header), - URL: &url.URL{}, - } - - c.Request.Header.Set("Content-Type", "application/json") - c.Request.Header.Set("customer_id", "1") - c.Request.Body = io.NopCloser(bytes.NewBuffer(jsonByte)) - fmt.Println(c.Request.Body) - agentConn, err := agent.NewAgent(logging.NewLogger(), &agent.Config{ - Address: "127.0.0.1", - }, nil) - - require.NoError(t, err) - - tests := []struct { - name string - fields fields - args args - }{ - { - name: "post apps", - fields: fields{agents: map[string]*agent.Agent{ - "1": agentConn, - }}, - args: args{c: c}, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentApps(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentClimondeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentClimondeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentCluster(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentCluster(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentDeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentDeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentEndpoint(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentEndpoint(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentProject(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentProject(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentRepository(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentRepository(tt.args.c) - }) - } -} - -func TestAPIHandler_PostAgentSecret(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PostAgentSecret(tt.args.c) - }) - } -} - -func TestAPIHandler_PutAgentClimondeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PutAgentClimondeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_PutAgentDeploy(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PutAgentDeploy(tt.args.c) - }) - } -} - -func TestAPIHandler_PutAgentEndpoint(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PutAgentEndpoint(tt.args.c) - }) - } -} - -func TestAPIHandler_PutAgentProject(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PutAgentProject(tt.args.c) - }) - } -} - -func TestAPIHandler_PutAgentRepository(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.PutAgentRepository(tt.args.c) - }) - } -} - -func TestAPIHandler_getFileContent(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - fileInfo map[string]string - } - tests := []struct { - name string - fields fields - args args - want map[string]string - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - got, err := a.getFileContent(tt.args.c, tt.args.fileInfo) - if (err != nil) != tt.wantErr { - t.Errorf("getFileContent() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("getFileContent() got = %v, want %v", got, tt.want) - } - }) - } -} - -func TestAPIHandler_sendResponse(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - msg string - err error - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.sendResponse(tt.args.c, tt.args.msg, tt.args.err) - }) - } -} - -func TestAPIHandler_setFailedResponse(t *testing.T) { - type fields struct { - agents map[string]*agent.Agent - } - type args struct { - c *gin.Context - msg string - err error - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &APIHandler{ - agentHandler: agent.NewAgentHandler(logging.NewLogger(), config.ServiceConfig{}, nil, nil), - } - a.setFailedResponse(tt.args.c, tt.args.msg, tt.args.err) - }) - } -} - -func TestNewAPIHandler(t *testing.T) { - tests := []struct { - name string - want *APIHandler - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := NewAPIHandler(logging.NewLogger(), nil, nil) - if (err != nil) != tt.wantErr { - t.Errorf("NewAPIHandler() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("NewAPIHandler() got = %v, want %v", got, tt.want) - } - }) - } -} - -func Test_toString(t *testing.T) { - type args struct { - resp *agentpb.JobResponse - } - tests := []struct { - name string - args args - want string - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := toString(tt.args.resp); got != tt.want { - t.Errorf("toString() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/server/pkg/handler/handle_climon.go b/server/pkg/handler/handle_climon.go deleted file mode 100644 index 1e8ef384..00000000 --- a/server/pkg/handler/handle_climon.go +++ /dev/null @@ -1,92 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentClimondeploy(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ClimonPostRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "failed to parse deploy payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - response, err := agent.GetClient().ClimonAppInstall( - ctx, - &agentpb.ClimonInstallRequest{ - PluginName: req.PluginName, - RepoName: req.RepoName, - RepoUrl: req.RepoUrl, - ChartName: req.ChartName, - Namespace: req.Namespace, - ReleaseName: req.ReleaseName, - Timeout: uint32(req.Timeout), - }, - ) - if err != nil { - a.setFailedResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: toString(response)}) - -} - -func (a *APIHandler) PutAgentClimondeploy(c *gin.Context) { - a.PostAgentClimondeploy(c) -} - -func (a *APIHandler) DeleteAgentClimondeploy(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ClimonDeleteRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "Failed to parse deploy payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - response, err := agent.GetClient().ClimonAppDelete( - ctx, - &agentpb.ClimonDeleteRequest{ - PluginName: req.PluginName, - Namespace: req.Namespace, - ReleaseName: req.ReleaseName, - Timeout: uint32(req.Timeout), - }, - ) - if err != nil { - a.setFailedResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: toString(response)}) - -} diff --git a/server/pkg/handler/handle_config_cluster.go b/server/pkg/handler/handle_config_cluster.go deleted file mode 100644 index 05cfea15..00000000 --- a/server/pkg/handler/handle_config_cluster.go +++ /dev/null @@ -1,74 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentCluster(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ClusterRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().ClusterAdd(ctx, &agentpb.ClusterRequest{ - PluginName: req.PluginName, - ClusterName: req.ClusterName, - }) - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) - -} - -func (a *APIHandler) DeleteAgentCluster(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ClusterRequest - if err := c.BindJSON(&req); err != nil { - a.sendResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().ClusterDelete(ctx, &agentpb.ClusterRequest{ - PluginName: req.PluginName, - ClusterName: req.ClusterName, - }) - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) -} diff --git a/server/pkg/handler/handle_config_project.go b/server/pkg/handler/handle_config_project.go deleted file mode 100644 index 5597cdc8..00000000 --- a/server/pkg/handler/handle_config_project.go +++ /dev/null @@ -1,77 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentProject(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ProjectPostRequest - if err := c.BindJSON(&req); err != nil { - a.sendResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().ProjectAdd(ctx, &agentpb.ProjectAddRequest{ - PluginName: req.PluginName, - ProjectName: req.ProjectName, - }) - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) - -} -func (a *APIHandler) PutAgentProject(c *gin.Context) { - a.PostAgentProject(c) -} - -func (a *APIHandler) DeleteAgentProject(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.ProjectDeleteRequest - if err := c.BindJSON(&req); err != nil { - a.sendResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().ProjectDelete(ctx, &agentpb.ProjectDeleteRequest{ - PluginName: req.PluginName, - ProjectName: req.ProjectName, - }) - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) -} diff --git a/server/pkg/handler/handle_config_repo.go b/server/pkg/handler/handle_config_repo.go deleted file mode 100644 index 9f1846a4..00000000 --- a/server/pkg/handler/handle_config_repo.go +++ /dev/null @@ -1,78 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentRepository(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.RepositoryPostRequest - if err := c.BindJSON(&req); err != nil { - a.sendResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().RepositoryAdd(ctx, &agentpb.RepositoryAddRequest{ - PluginName: req.PluginName, - RepoName: req.RepoName, - RepoUrl: req.RepoUrl, - }) - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) -} -func (a *APIHandler) PutAgentRepository(c *gin.Context) { - a.PostAgentRepository(c) -} - -func (a *APIHandler) DeleteAgentRepository(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.RepositoryPostRequest - if err := c.BindJSON(&req); err != nil { - a.sendResponse(c, "Failed to parse config payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - _, err = agent.GetClient().RepositoryDelete(ctx, &agentpb.RepositoryDeleteRequest{ - PluginName: req.PluginName, - RepoName: req.RepoName, - }) - - if err != nil { - a.sendResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "submitted Job"}) -} diff --git a/server/pkg/handler/handle_deploy.go b/server/pkg/handler/handle_deploy.go deleted file mode 100644 index 69bfdcbd..00000000 --- a/server/pkg/handler/handle_deploy.go +++ /dev/null @@ -1,108 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentDeploy(c *gin.Context) { - a.log.Debug("deploying application") - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.DeployerPostRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "failed to parse deploy payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - response, err := agent.GetClient().DeployerAppInstall( - ctx, - &agentpb.ApplicationInstallRequest{ - PluginName: req.PluginName, - RepoName: req.RepoName, - RepoUrl: req.RepoUrl, - ChartName: req.ChartName, - Namespace: req.Namespace, - ReleaseName: req.ReleaseName, - Timeout: uint32(req.Timeout), - }, - ) - if err != nil { - a.setFailedResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: toString(response)}) - - a.log.Debug("deployed application successfully") -} - -func (a *APIHandler) PutAgentDeploy(c *gin.Context) { - a.PostAgentDeploy(c) -} - -func (a *APIHandler) DeleteAgentDeploy(c *gin.Context) { - a.log.Debug("deleting application") - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.DeployerDeleteRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "failed to parse deploy payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - response, err := agent.GetClient().DeployerAppDelete( - ctx, - &agentpb.ApplicationDeleteRequest{ - PluginName: req.PluginName, - Namespace: req.Namespace, - ReleaseName: req.ReleaseName, - Timeout: uint32(req.Timeout), - }, - ) - if err != nil { - a.setFailedResponse(c, "failed to submit job", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: toString(response)}) - - a.log.Debug("application deleted successfully") -} - -func (a *APIHandler) sendResponse(c *gin.Context, msg string, err error) { - c.IndentedJSON(http.StatusInternalServerError, &api.Response{ - Status: "FAILED", - Message: fmt.Sprintf("%s, %v", msg, err), - }) -} - -func toString(resp *agentpb.JobResponse) string { - return fmt.Sprintf("Workflow details, ID: %v, RUN-ID: %v, NAME: %v", resp.Id, resp.RunID, resp.WorkflowName) -} diff --git a/server/pkg/handler/handle_storage.go b/server/pkg/handler/handle_storage.go deleted file mode 100644 index c28207c0..00000000 --- a/server/pkg/handler/handle_storage.go +++ /dev/null @@ -1,60 +0,0 @@ -package handler - -import ( - "context" - "errors" - "fmt" - "net/http" - "time" - - "github.com/gin-gonic/gin" - "github.com/intelops/go-common/credentials" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/pb/agentpb" -) - -func (a *APIHandler) PostAgentSecret(c *gin.Context) { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - var req api.StoreCredRequest - if err := c.BindJSON(&req); err != nil { - a.setFailedResponse(c, "failed to parse store-cred payload", err) - return - } - - agent, err := a.agentHandler.GetAgent("") - if err != nil { - a.setFailedResponse(c, fmt.Sprintf("unregistered customer %v", "1"), errors.New("")) - return - } - - serviceCred := credentials.ServiceCredential{ - UserName: *req.Username, - Password: *req.Password, - } - serviceCredMap := credentials.PrepareServiceCredentialMap(serviceCred) - response, err := agent.GetClient().StoreCredential(ctx, - &agentpb.StoreCredentialRequest{ - CredentialType: credentials.ServiceUserCredentialType, - CredEntityName: *req.Credname, - CredIdentifier: *req.Username, - Credential: serviceCredMap, - }, - ) - if err != nil { - a.setFailedResponse(c, "failed to store credentials", err) - return - } - - if response.Status != agentpb.StatusCode_OK { - a.setFailedResponse(c, "failed to store credentials", err) - return - } - - c.IndentedJSON(http.StatusOK, &api.Response{ - Status: "SUCCESS", - Message: "stored credentials"}) - - a.log.Debug("credentials is stored successfully") -} diff --git a/server/pkg/handler/handler.go b/server/pkg/handler/handler.go deleted file mode 100644 index 381735cc..00000000 --- a/server/pkg/handler/handler.go +++ /dev/null @@ -1,49 +0,0 @@ -package handler - -import ( - "net/http" - "sync" - - "github.com/gin-gonic/gin" - - "github.com/intelops/go-common/logging" - "github.com/kube-tarian/kad/server/api" - "github.com/kube-tarian/kad/server/pkg/agent" - "github.com/kube-tarian/kad/server/pkg/config" - oryclient "github.com/kube-tarian/kad/server/pkg/ory-client" - "github.com/kube-tarian/kad/server/pkg/store" -) - -type APIHandler struct { - agentHandler *agent.AgentHandler - serverStore store.ServerStore - log logging.Logger -} - -var ( - agentMutex sync.RWMutex -) - -func NewAPIHandler(log logging.Logger, serverStore store.ServerStore, oryClient oryclient.OryClient) (*APIHandler, error) { - return &APIHandler{ - log: log, - agentHandler: agent.NewAgentHandler(log, config.ServiceConfig{}, serverStore, oryClient), - }, nil -} - -func (a *APIHandler) GetApiDocs(c *gin.Context) { - swagger, err := api.GetSwagger() - if err != nil { - c.String(http.StatusInternalServerError, err.Error()) - } - - c.IndentedJSON(http.StatusOK, swagger) -} - -func (a *APIHandler) GetStatus(c *gin.Context) { - c.String(http.StatusOK, "") -} - -func (a *APIHandler) Close() { - a.agentHandler.Close() -} diff --git a/server/pkg/handler/util.go b/server/pkg/handler/util.go deleted file mode 100644 index 220ceb71..00000000 --- a/server/pkg/handler/util.go +++ /dev/null @@ -1,46 +0,0 @@ -package handler - -import ( - "fmt" - "github.com/gin-gonic/gin" - "github.com/kube-tarian/kad/server/api" - "io" - "net/http" -) - -func (a *APIHandler) setFailedResponse(c *gin.Context, msg string, err error) { - c.IndentedJSON(http.StatusInternalServerError, &api.Response{ - Status: "FAILED", - Message: fmt.Sprintf("%s, %v", msg, err), - }) -} - -func (a *APIHandler) getFileContent(c *gin.Context, fileInfo map[string]string) (map[string]string, error) { - fileContentMap := make(map[string]string) - // 10 << 20 to have 10 mb max as file size - if err := c.Request.ParseMultipartForm(10 << 20); err != nil { - return nil, fmt.Errorf("file contents is greater than 10mb, err: %v", err) - } - - for fileKey, fileName := range fileInfo { - // Get handler for filename, size and headers - file, handler, err := c.Request.FormFile(fileKey) - if err != nil { - return nil, fmt.Errorf("failed to download file %s, err %v", fileName, err) - } - - if fileName != handler.Filename { - return nil, fmt.Errorf("faile name doesnt match expected: %s, got %s", fileName, handler.Filename) - } - - fileContents, err := io.ReadAll(file) - if err != nil { - return nil, fmt.Errorf("failed to read content of file %s, err %v", handler.Filename, err) - } - - fileContentMap[handler.Filename] = string(fileContents) - file.Close() - } - - return fileContentMap, nil -} diff --git a/server/pkg/pb/agentpb/agent.pb.go b/server/pkg/pb/agentpb/agent.pb.go index f3ef2596..e7ff5d73 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" ) @@ -284,394 +284,6 @@ func (x *StoreCredentialResponse) GetStatusMessage() string { return "" } -type ClimonInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonInstallRequest) Reset() { - *x = ClimonInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonInstallRequest) ProtoMessage() {} - -func (x *ClimonInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClimonInstallRequest.ProtoReflect.Descriptor instead. -func (*ClimonInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{4} -} - -func (x *ClimonInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ClimonInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ClimonInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ClimonInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ClimonInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ClimonDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ClimonDeleteRequest) Reset() { - *x = ClimonDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClimonDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClimonDeleteRequest) ProtoMessage() {} - -func (x *ClimonDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[5] - 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 ClimonDeleteRequest.ProtoReflect.Descriptor instead. -func (*ClimonDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{5} -} - -func (x *ClimonDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ClimonDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ClimonDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ClimonDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ClimonDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -type ApplicationInstallRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` - RepoUrl string `protobuf:"bytes,3,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - ChartName string `protobuf:"bytes,4,opt,name=chart_name,json=chartName,proto3" json:"chart_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,6,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,7,opt,name=timeout,proto3" json:"timeout,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - ClusterName string `protobuf:"bytes,9,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` - ValuesYaml string `protobuf:"bytes,10,opt,name=values_yaml,json=valuesYaml,proto3" json:"values_yaml,omitempty"` -} - -func (x *ApplicationInstallRequest) Reset() { - *x = ApplicationInstallRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationInstallRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationInstallRequest) ProtoMessage() {} - -func (x *ApplicationInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[6] - 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 ApplicationInstallRequest.ProtoReflect.Descriptor instead. -func (*ApplicationInstallRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{6} -} - -func (x *ApplicationInstallRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -func (x *ApplicationInstallRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *ApplicationInstallRequest) GetChartName() string { - if x != nil { - return x.ChartName - } - return "" -} - -func (x *ApplicationInstallRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationInstallRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationInstallRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationInstallRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *ApplicationInstallRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - -func (x *ApplicationInstallRequest) GetValuesYaml() string { - if x != nil { - return x.ValuesYaml - } - return "" -} - -type ApplicationDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PluginName string `protobuf:"bytes,1,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - ReleaseName string `protobuf:"bytes,3,opt,name=release_name,json=releaseName,proto3" json:"release_name,omitempty"` - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - ClusterName string `protobuf:"bytes,5,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` -} - -func (x *ApplicationDeleteRequest) Reset() { - *x = ApplicationDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ApplicationDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ApplicationDeleteRequest) ProtoMessage() {} - -func (x *ApplicationDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[7] - 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 ApplicationDeleteRequest.ProtoReflect.Descriptor instead. -func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{7} -} - -func (x *ApplicationDeleteRequest) GetPluginName() string { - if x != nil { - return x.PluginName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ApplicationDeleteRequest) GetReleaseName() string { - if x != nil { - return x.ReleaseName - } - return "" -} - -func (x *ApplicationDeleteRequest) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ApplicationDeleteRequest) GetClusterName() string { - if x != nil { - return x.ClusterName - } - return "" -} - type ClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -684,7 +296,7 @@ type ClusterRequest struct { func (x *ClusterRequest) Reset() { *x = ClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -697,7 +309,7 @@ func (x *ClusterRequest) String() string { func (*ClusterRequest) ProtoMessage() {} func (x *ClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[8] + mi := &file_agent_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -710,7 +322,7 @@ func (x *ClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterRequest.ProtoReflect.Descriptor instead. func (*ClusterRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{8} + return file_agent_proto_rawDescGZIP(), []int{4} } func (x *ClusterRequest) GetPluginName() string { @@ -740,7 +352,7 @@ type RepositoryAddRequest struct { func (x *RepositoryAddRequest) Reset() { *x = RepositoryAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +365,7 @@ func (x *RepositoryAddRequest) String() string { func (*RepositoryAddRequest) ProtoMessage() {} func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[9] + mi := &file_agent_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +378,7 @@ func (x *RepositoryAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryAddRequest.ProtoReflect.Descriptor instead. func (*RepositoryAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{9} + return file_agent_proto_rawDescGZIP(), []int{5} } func (x *RepositoryAddRequest) GetPluginName() string { @@ -802,7 +414,7 @@ type RepositoryDeleteRequest struct { func (x *RepositoryDeleteRequest) Reset() { *x = RepositoryDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -815,7 +427,7 @@ func (x *RepositoryDeleteRequest) String() string { func (*RepositoryDeleteRequest) ProtoMessage() {} func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[10] + mi := &file_agent_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -828,7 +440,7 @@ func (x *RepositoryDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryDeleteRequest.ProtoReflect.Descriptor instead. func (*RepositoryDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{10} + return file_agent_proto_rawDescGZIP(), []int{6} } func (x *RepositoryDeleteRequest) GetPluginName() string { @@ -857,7 +469,7 @@ type ProjectAddRequest struct { func (x *ProjectAddRequest) Reset() { *x = ProjectAddRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -870,7 +482,7 @@ func (x *ProjectAddRequest) String() string { func (*ProjectAddRequest) ProtoMessage() {} func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[11] + mi := &file_agent_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -883,7 +495,7 @@ func (x *ProjectAddRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectAddRequest.ProtoReflect.Descriptor instead. func (*ProjectAddRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{11} + return file_agent_proto_rawDescGZIP(), []int{7} } func (x *ProjectAddRequest) GetPluginName() string { @@ -912,7 +524,7 @@ type ProjectDeleteRequest struct { func (x *ProjectDeleteRequest) Reset() { *x = ProjectDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -925,7 +537,7 @@ func (x *ProjectDeleteRequest) String() string { func (*ProjectDeleteRequest) ProtoMessage() {} func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[12] + mi := &file_agent_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -938,7 +550,7 @@ func (x *ProjectDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDeleteRequest.ProtoReflect.Descriptor instead. func (*ProjectDeleteRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{12} + return file_agent_proto_rawDescGZIP(), []int{8} } func (x *ProjectDeleteRequest) GetPluginName() string { @@ -960,14 +572,14 @@ 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() { *x = JobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +592,7 @@ func (x *JobRequest) String() string { func (*JobRequest) ProtoMessage() {} func (x *JobRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[13] + mi := &file_agent_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +605,7 @@ func (x *JobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JobRequest.ProtoReflect.Descriptor instead. func (*JobRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{13} + return file_agent_proto_rawDescGZIP(), []int{9} } func (x *JobRequest) GetOperation() string { @@ -1003,7 +615,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 } @@ -1023,7 +635,7 @@ type JobResponse struct { func (x *JobResponse) Reset() { *x = JobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1036,7 +648,7 @@ func (x *JobResponse) String() string { func (*JobResponse) ProtoMessage() {} func (x *JobResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[14] + mi := &file_agent_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1049,7 +661,7 @@ func (x *JobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JobResponse.ProtoReflect.Descriptor instead. func (*JobResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{14} + return file_agent_proto_rawDescGZIP(), []int{10} } func (x *JobResponse) GetId() string { @@ -1084,7 +696,7 @@ type SyncAppRequest struct { func (x *SyncAppRequest) Reset() { *x = SyncAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1097,7 +709,7 @@ func (x *SyncAppRequest) String() string { func (*SyncAppRequest) ProtoMessage() {} func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[15] + mi := &file_agent_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1110,7 +722,7 @@ func (x *SyncAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppRequest.ProtoReflect.Descriptor instead. func (*SyncAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{15} + return file_agent_proto_rawDescGZIP(), []int{11} } func (x *SyncAppRequest) GetData() *SyncAppData { @@ -1132,7 +744,7 @@ type SyncAppResponse struct { func (x *SyncAppResponse) Reset() { *x = SyncAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1145,7 +757,7 @@ func (x *SyncAppResponse) String() string { func (*SyncAppResponse) ProtoMessage() {} func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[16] + mi := &file_agent_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1158,7 +770,7 @@ func (x *SyncAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppResponse.ProtoReflect.Descriptor instead. func (*SyncAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{16} + return file_agent_proto_rawDescGZIP(), []int{12} } func (x *SyncAppResponse) GetStatus() StatusCode { @@ -1184,7 +796,7 @@ type GetClusterAppsRequest struct { func (x *GetClusterAppsRequest) Reset() { *x = GetClusterAppsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +809,7 @@ func (x *GetClusterAppsRequest) String() string { func (*GetClusterAppsRequest) ProtoMessage() {} func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[17] + mi := &file_agent_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +822,7 @@ func (x *GetClusterAppsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppsRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{17} + return file_agent_proto_rawDescGZIP(), []int{13} } type GetClusterAppsResponse struct { @@ -1226,7 +838,7 @@ type GetClusterAppsResponse struct { func (x *GetClusterAppsResponse) Reset() { *x = GetClusterAppsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +851,7 @@ func (x *GetClusterAppsResponse) String() string { func (*GetClusterAppsResponse) ProtoMessage() {} func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[18] + mi := &file_agent_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +864,7 @@ func (x *GetClusterAppsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppsResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppsResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{18} + return file_agent_proto_rawDescGZIP(), []int{14} } func (x *GetClusterAppsResponse) GetStatus() StatusCode { @@ -1285,7 +897,7 @@ type GetClusterAppLaunchesRequest struct { func (x *GetClusterAppLaunchesRequest) Reset() { *x = GetClusterAppLaunchesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1298,7 +910,7 @@ func (x *GetClusterAppLaunchesRequest) String() string { func (*GetClusterAppLaunchesRequest) ProtoMessage() {} func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[19] + mi := &file_agent_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1311,7 +923,7 @@ func (x *GetClusterAppLaunchesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{19} + return file_agent_proto_rawDescGZIP(), []int{15} } type GetClusterAppLaunchesResponse struct { @@ -1327,7 +939,7 @@ type GetClusterAppLaunchesResponse struct { func (x *GetClusterAppLaunchesResponse) Reset() { *x = GetClusterAppLaunchesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +952,7 @@ func (x *GetClusterAppLaunchesResponse) String() string { func (*GetClusterAppLaunchesResponse) ProtoMessage() {} func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[20] + mi := &file_agent_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +965,7 @@ func (x *GetClusterAppLaunchesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppLaunchesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppLaunchesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{20} + return file_agent_proto_rawDescGZIP(), []int{16} } func (x *GetClusterAppLaunchesResponse) GetStatus() StatusCode { @@ -1391,7 +1003,7 @@ type ConfigureAppSSORequest struct { func (x *ConfigureAppSSORequest) Reset() { *x = ConfigureAppSSORequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1016,7 @@ func (x *ConfigureAppSSORequest) String() string { func (*ConfigureAppSSORequest) ProtoMessage() {} func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[21] + mi := &file_agent_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1029,7 @@ func (x *ConfigureAppSSORequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSORequest.ProtoReflect.Descriptor instead. func (*ConfigureAppSSORequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{21} + return file_agent_proto_rawDescGZIP(), []int{17} } func (x *ConfigureAppSSORequest) GetReleaseName() string { @@ -1460,7 +1072,7 @@ type ConfigureAppSSOResponse struct { func (x *ConfigureAppSSOResponse) Reset() { *x = ConfigureAppSSOResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1473,7 +1085,7 @@ func (x *ConfigureAppSSOResponse) String() string { func (*ConfigureAppSSOResponse) ProtoMessage() {} func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[22] + mi := &file_agent_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,7 +1098,7 @@ func (x *ConfigureAppSSOResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureAppSSOResponse.ProtoReflect.Descriptor instead. func (*ConfigureAppSSOResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{22} + return file_agent_proto_rawDescGZIP(), []int{18} } func (x *ConfigureAppSSOResponse) GetStatus() StatusCode { @@ -1514,7 +1126,7 @@ type GetClusterAppConfigRequest struct { func (x *GetClusterAppConfigRequest) Reset() { *x = GetClusterAppConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1139,7 @@ func (x *GetClusterAppConfigRequest) String() string { func (*GetClusterAppConfigRequest) ProtoMessage() {} func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[23] + mi := &file_agent_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1152,7 @@ func (x *GetClusterAppConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{23} + return file_agent_proto_rawDescGZIP(), []int{19} } func (x *GetClusterAppConfigRequest) GetReleaseName() string { @@ -1563,7 +1175,7 @@ type GetClusterAppConfigResponse struct { func (x *GetClusterAppConfigResponse) Reset() { *x = GetClusterAppConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1188,7 @@ func (x *GetClusterAppConfigResponse) String() string { func (*GetClusterAppConfigResponse) ProtoMessage() {} func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[24] + mi := &file_agent_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1201,7 @@ func (x *GetClusterAppConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppConfigResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppConfigResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{24} + return file_agent_proto_rawDescGZIP(), []int{20} } func (x *GetClusterAppConfigResponse) GetStatus() StatusCode { @@ -1624,7 +1236,7 @@ type GetClusterAppValuesRequest struct { func (x *GetClusterAppValuesRequest) Reset() { *x = GetClusterAppValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1637,7 +1249,7 @@ func (x *GetClusterAppValuesRequest) String() string { func (*GetClusterAppValuesRequest) ProtoMessage() {} func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[25] + mi := &file_agent_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1650,7 +1262,7 @@ func (x *GetClusterAppValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesRequest.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{25} + return file_agent_proto_rawDescGZIP(), []int{21} } func (x *GetClusterAppValuesRequest) GetReleaseName() string { @@ -1673,7 +1285,7 @@ type GetClusterAppValuesResponse struct { func (x *GetClusterAppValuesResponse) Reset() { *x = GetClusterAppValuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1686,7 +1298,7 @@ func (x *GetClusterAppValuesResponse) String() string { func (*GetClusterAppValuesResponse) ProtoMessage() {} func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[26] + mi := &file_agent_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1699,7 +1311,7 @@ func (x *GetClusterAppValuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterAppValuesResponse.ProtoReflect.Descriptor instead. func (*GetClusterAppValuesResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{26} + return file_agent_proto_rawDescGZIP(), []int{22} } func (x *GetClusterAppValuesResponse) GetStatus() StatusCode { @@ -1735,7 +1347,7 @@ type InstallAppRequest struct { func (x *InstallAppRequest) Reset() { *x = InstallAppRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1748,7 +1360,7 @@ func (x *InstallAppRequest) String() string { func (*InstallAppRequest) ProtoMessage() {} func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[27] + mi := &file_agent_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1373,7 @@ func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppRequest.ProtoReflect.Descriptor instead. func (*InstallAppRequest) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{27} + return file_agent_proto_rawDescGZIP(), []int{23} } func (x *InstallAppRequest) GetAppConfig() *AppConfig { @@ -1783,15 +1395,14 @@ type InstallAppResponse struct { 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"` + 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"` } func (x *InstallAppResponse) Reset() { *x = InstallAppResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1804,7 +1415,7 @@ func (x *InstallAppResponse) String() string { func (*InstallAppResponse) ProtoMessage() {} func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[28] + mi := &file_agent_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1817,7 +1428,7 @@ func (x *InstallAppResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallAppResponse.ProtoReflect.Descriptor instead. func (*InstallAppResponse) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{28} + return file_agent_proto_rawDescGZIP(), []int{24} } func (x *InstallAppResponse) GetStatus() StatusCode { @@ -1834,13 +1445,6 @@ func (x *InstallAppResponse) GetStatusMessage() string { return "" } -func (x *InstallAppResponse) GetJobResponse() *JobResponse { - if x != nil { - return x.JobResponse - } - return nil -} - type SyncAppData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1853,7 +1457,7 @@ type SyncAppData struct { func (x *SyncAppData) Reset() { *x = SyncAppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1866,7 +1470,7 @@ func (x *SyncAppData) String() string { func (*SyncAppData) ProtoMessage() {} func (x *SyncAppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[29] + mi := &file_agent_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1879,7 +1483,7 @@ func (x *SyncAppData) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncAppData.ProtoReflect.Descriptor instead. func (*SyncAppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{29} + return file_agent_proto_rawDescGZIP(), []int{25} } func (x *SyncAppData) GetConfig() *AppConfig { @@ -1908,7 +1512,7 @@ type AppData struct { func (x *AppData) Reset() { *x = AppData{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1921,7 +1525,7 @@ func (x *AppData) String() string { func (*AppData) ProtoMessage() {} func (x *AppData) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[30] + mi := &file_agent_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1934,7 +1538,7 @@ func (x *AppData) ProtoReflect() protoreflect.Message { // Deprecated: Use AppData.ProtoReflect.Descriptor instead. func (*AppData) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{30} + return file_agent_proto_rawDescGZIP(), []int{26} } func (x *AppData) GetConfig() *AppConfig { @@ -1962,7 +1566,7 @@ type AppStatus struct { func (x *AppStatus) Reset() { *x = AppStatus{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1975,7 +1579,7 @@ func (x *AppStatus) String() string { func (*AppStatus) ProtoMessage() {} func (x *AppStatus) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[31] + mi := &file_agent_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1988,7 +1592,7 @@ func (x *AppStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AppStatus.ProtoReflect.Descriptor instead. func (*AppStatus) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{31} + return file_agent_proto_rawDescGZIP(), []int{27} } func (x *AppStatus) GetRuntimeStatus() string { @@ -2020,12 +1624,13 @@ type AppConfig struct { InstallStatus string `protobuf:"bytes,15,opt,name=installStatus,proto3" json:"installStatus,omitempty"` RuntimeStatus string `protobuf:"bytes,16,opt,name=runtimeStatus,proto3" json:"runtimeStatus,omitempty"` DefualtApp bool `protobuf:"varint,17,opt,name=defualtApp,proto3" json:"defualtApp,omitempty"` + LastUpdateTime string `protobuf:"bytes,18,opt,name=lastUpdateTime,proto3" json:"lastUpdateTime,omitempty"` } func (x *AppConfig) Reset() { *x = AppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2038,7 +1643,7 @@ func (x *AppConfig) String() string { func (*AppConfig) ProtoMessage() {} func (x *AppConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[32] + mi := &file_agent_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2051,7 +1656,7 @@ func (x *AppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppConfig.ProtoReflect.Descriptor instead. func (*AppConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{32} + return file_agent_proto_rawDescGZIP(), []int{28} } func (x *AppConfig) GetReleaseName() string { @@ -2173,6 +1778,13 @@ func (x *AppConfig) GetDefualtApp() bool { return false } +func (x *AppConfig) GetLastUpdateTime() string { + if x != nil { + return x.LastUpdateTime + } + return "" +} + type AppValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2180,12 +1792,13 @@ type AppValues struct { OverrideValues []byte `protobuf:"bytes,1,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` LaunchUIValues []byte `protobuf:"bytes,2,opt,name=launchUIValues,proto3" json:"launchUIValues,omitempty"` + TemplateValues []byte `protobuf:"bytes,3,opt,name=templateValues,proto3" json:"templateValues,omitempty"` } func (x *AppValues) Reset() { *x = AppValues{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +1811,7 @@ func (x *AppValues) String() string { func (*AppValues) ProtoMessage() {} func (x *AppValues) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[33] + mi := &file_agent_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +1824,7 @@ func (x *AppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use AppValues.ProtoReflect.Descriptor instead. func (*AppValues) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{33} + return file_agent_proto_rawDescGZIP(), []int{29} } func (x *AppValues) GetOverrideValues() []byte { @@ -2228,6 +1841,13 @@ func (x *AppValues) GetLaunchUIValues() []byte { return nil } +func (x *AppValues) GetTemplateValues() []byte { + if x != nil { + return x.TemplateValues + } + return nil +} + type AppLaunchConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2244,7 +1864,7 @@ type AppLaunchConfig struct { func (x *AppLaunchConfig) Reset() { *x = AppLaunchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2257,7 +1877,7 @@ func (x *AppLaunchConfig) String() string { func (*AppLaunchConfig) ProtoMessage() {} func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { - mi := &file_agent_proto_msgTypes[34] + mi := &file_agent_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2270,7 +1890,7 @@ func (x *AppLaunchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLaunchConfig.ProtoReflect.Descriptor instead. func (*AppLaunchConfig) Descriptor() ([]byte, []int) { - return file_agent_proto_rawDescGZIP(), []int{34} + return file_agent_proto_rawDescGZIP(), []int{30} } func (x *AppLaunchConfig) GetReleaseName() string { @@ -2350,383 +1970,302 @@ var file_agent_proto_rawDesc = []byte{ 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, 0x22, 0xa6, - 0x02, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x6d, - 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcc, - 0x02, 0x0a, 0x19, 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, 0x12, 0x1f, 0x0a, 0x0b, + 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x54, + 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0xb9, 0x01, - 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x0e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x6f, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x64, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, - 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x11, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, - 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x57, 0x0a, 0x0b, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, - 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, - 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x73, 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, 0x2a, 0x0a, 0x07, - 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, 0x1c, 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, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 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, 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, 0x44, 0x0a, - 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, - 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x22, 0x57, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, + 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x57, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x75, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x64, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 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, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 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, 0x2a, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, + 0x1c, 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, 0x22, 0xb8, 0x01, + 0x0a, 0x1d, 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, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, - 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, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, + 0x67, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 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, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, + 0x73, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x41, 0x75, + 0x74, 0x68, 0x42, 0x61, 0x73, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 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, 0x22, 0x3e, 0x0a, 0x1a, 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, 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, 0x22, 0x9c, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, + 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 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, 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, 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, 0x77, 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, 0x12, 0x30, 0x0a, - 0x09, 0x61, 0x70, 0x70, 0x56, 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, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 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, + 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 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, 0x3e, 0x0a, 0x1a, + 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, 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, 0x22, 0x9c, 0x01, 0x0a, + 0x1b, 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, 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, + 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, 0x77, 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, 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, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 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, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x22, 0x67, 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, 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, 0xe5, 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, 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, + 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, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x83, 0x01, 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, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 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, 0xd9, 0x09, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 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, 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, + 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, 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, + 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, 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, + 0x6e, 0x73, 0x65, 0x22, 0x00, 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, 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, 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, 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, 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, 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, + 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 ( @@ -2742,116 +2281,103 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest (*PingResponse)(nil), // 2: agentpb.PingResponse (*StoreCredentialRequest)(nil), // 3: agentpb.StoreCredentialRequest (*StoreCredentialResponse)(nil), // 4: agentpb.StoreCredentialResponse - (*ClimonInstallRequest)(nil), // 5: agentpb.ClimonInstallRequest - (*ClimonDeleteRequest)(nil), // 6: agentpb.ClimonDeleteRequest - (*ApplicationInstallRequest)(nil), // 7: agentpb.ApplicationInstallRequest - (*ApplicationDeleteRequest)(nil), // 8: agentpb.ApplicationDeleteRequest - (*ClusterRequest)(nil), // 9: agentpb.ClusterRequest - (*RepositoryAddRequest)(nil), // 10: agentpb.RepositoryAddRequest - (*RepositoryDeleteRequest)(nil), // 11: agentpb.RepositoryDeleteRequest - (*ProjectAddRequest)(nil), // 12: agentpb.ProjectAddRequest - (*ProjectDeleteRequest)(nil), // 13: agentpb.ProjectDeleteRequest - (*JobRequest)(nil), // 14: agentpb.JobRequest - (*JobResponse)(nil), // 15: agentpb.JobResponse - (*SyncAppRequest)(nil), // 16: agentpb.SyncAppRequest - (*SyncAppResponse)(nil), // 17: agentpb.SyncAppResponse - (*GetClusterAppsRequest)(nil), // 18: agentpb.GetClusterAppsRequest - (*GetClusterAppsResponse)(nil), // 19: agentpb.GetClusterAppsResponse - (*GetClusterAppLaunchesRequest)(nil), // 20: agentpb.GetClusterAppLaunchesRequest - (*GetClusterAppLaunchesResponse)(nil), // 21: agentpb.GetClusterAppLaunchesResponse - (*ConfigureAppSSORequest)(nil), // 22: agentpb.ConfigureAppSSORequest - (*ConfigureAppSSOResponse)(nil), // 23: agentpb.ConfigureAppSSOResponse - (*GetClusterAppConfigRequest)(nil), // 24: agentpb.GetClusterAppConfigRequest - (*GetClusterAppConfigResponse)(nil), // 25: agentpb.GetClusterAppConfigResponse - (*GetClusterAppValuesRequest)(nil), // 26: agentpb.GetClusterAppValuesRequest - (*GetClusterAppValuesResponse)(nil), // 27: agentpb.GetClusterAppValuesResponse - (*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 - (*anypb.Any)(nil), // 37: google.protobuf.Any + (*ClusterRequest)(nil), // 5: agentpb.ClusterRequest + (*RepositoryAddRequest)(nil), // 6: agentpb.RepositoryAddRequest + (*RepositoryDeleteRequest)(nil), // 7: agentpb.RepositoryDeleteRequest + (*ProjectAddRequest)(nil), // 8: agentpb.ProjectAddRequest + (*ProjectDeleteRequest)(nil), // 9: agentpb.ProjectDeleteRequest + (*JobRequest)(nil), // 10: agentpb.JobRequest + (*JobResponse)(nil), // 11: agentpb.JobResponse + (*SyncAppRequest)(nil), // 12: agentpb.SyncAppRequest + (*SyncAppResponse)(nil), // 13: agentpb.SyncAppResponse + (*GetClusterAppsRequest)(nil), // 14: agentpb.GetClusterAppsRequest + (*GetClusterAppsResponse)(nil), // 15: agentpb.GetClusterAppsResponse + (*GetClusterAppLaunchesRequest)(nil), // 16: agentpb.GetClusterAppLaunchesRequest + (*GetClusterAppLaunchesResponse)(nil), // 17: agentpb.GetClusterAppLaunchesResponse + (*ConfigureAppSSORequest)(nil), // 18: agentpb.ConfigureAppSSORequest + (*ConfigureAppSSOResponse)(nil), // 19: agentpb.ConfigureAppSSOResponse + (*GetClusterAppConfigRequest)(nil), // 20: agentpb.GetClusterAppConfigRequest + (*GetClusterAppConfigResponse)(nil), // 21: agentpb.GetClusterAppConfigResponse + (*GetClusterAppValuesRequest)(nil), // 22: agentpb.GetClusterAppValuesRequest + (*GetClusterAppValuesResponse)(nil), // 23: agentpb.GetClusterAppValuesResponse + (*InstallAppRequest)(nil), // 24: agentpb.InstallAppRequest + (*InstallAppResponse)(nil), // 25: agentpb.InstallAppResponse + (*SyncAppData)(nil), // 26: agentpb.SyncAppData + (*AppData)(nil), // 27: agentpb.AppData + (*AppStatus)(nil), // 28: agentpb.AppStatus + (*AppConfig)(nil), // 29: agentpb.AppConfig + (*AppValues)(nil), // 30: agentpb.AppValues + (*AppLaunchConfig)(nil), // 31: agentpb.AppLaunchConfig + nil, // 32: agentpb.StoreCredentialRequest.CredentialEntry + (*any1.Any)(nil), // 33: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 36, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 32, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 37, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any - 30, // 4: agentpb.SyncAppRequest.data:type_name -> agentpb.SyncAppData + 33, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 26, // 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 - 31, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData + 27, // 7: agentpb.GetClusterAppsResponse.appData:type_name -> agentpb.AppData 0, // 8: agentpb.GetClusterAppLaunchesResponse.status:type_name -> agentpb.StatusCode - 35, // 9: agentpb.GetClusterAppLaunchesResponse.launchConfigList:type_name -> agentpb.AppLaunchConfig + 31, // 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 - 33, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig + 29, // 12: agentpb.GetClusterAppConfigResponse.appConfig:type_name -> agentpb.AppConfig 0, // 13: agentpb.GetClusterAppValuesResponse.status:type_name -> agentpb.StatusCode - 34, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues - 33, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig - 34, // 16: agentpb.InstallAppRequest.appValues:type_name -> agentpb.AppValues + 30, // 14: agentpb.GetClusterAppValuesResponse.values:type_name -> agentpb.AppValues + 29, // 15: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 30, // 16: agentpb.InstallAppRequest.appValues:type_name -> agentpb.AppValues 0, // 17: agentpb.InstallAppResponse.status:type_name -> agentpb.StatusCode - 15, // 18: agentpb.InstallAppResponse.jobResponse:type_name -> agentpb.JobResponse - 33, // 19: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig - 34, // 20: agentpb.SyncAppData.values:type_name -> agentpb.AppValues - 33, // 21: agentpb.AppData.config:type_name -> agentpb.AppConfig - 32, // 22: agentpb.AppData.status:type_name -> agentpb.AppStatus - 1, // 23: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 24: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 25: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 26: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 27: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 28: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 29: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 30: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 31: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 32: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 33: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 34: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 35: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 36: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 37: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 38: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 39: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 40: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 41: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 28, // 42: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest - 2, // 43: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 44: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 45: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 46: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 51: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 52: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 53: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 54: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 55: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 56: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 57: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 58: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 59: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 60: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 61: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 29, // 62: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse - 43, // [43:63] is the sub-list for method output_type - 23, // [23:43] is the sub-list for method input_type - 23, // [23:23] is the sub-list for extension type_name - 23, // [23:23] is the sub-list for extension extendee - 0, // [0:23] is the sub-list for field type_name + 29, // 18: agentpb.SyncAppData.config:type_name -> agentpb.AppConfig + 30, // 19: agentpb.SyncAppData.values:type_name -> agentpb.AppValues + 29, // 20: agentpb.AppData.config:type_name -> agentpb.AppConfig + 28, // 21: agentpb.AppData.status:type_name -> agentpb.AppStatus + 10, // 22: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 5, // 23: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 5, // 24: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 6, // 25: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 7, // 26: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 8, // 27: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 9, // 28: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 1, // 29: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 3, // 30: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 12, // 31: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 14, // 32: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 16, // 33: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 18, // 34: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 20, // 35: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 22, // 36: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 24, // 37: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 11, // 38: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 11, // 39: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 11, // 40: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 11, // 41: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 11, // 42: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 11, // 43: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 11, // 44: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 2, // 45: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 4, // 46: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 13, // 47: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 15, // 48: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 17, // 49: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 19, // 50: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 21, // 51: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 23, // 52: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 25, // 53: agentpb.Agent.InstallApp:output_type -> agentpb.InstallAppResponse + 38, // [38:54] is the sub-list for method output_type + 22, // [22:38] 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() } @@ -2909,54 +2435,6 @@ func file_agent_proto_init() { } } file_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClimonDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationInstallRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterRequest); i { case 0: return &v.state @@ -2968,7 +2446,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryAddRequest); i { case 0: return &v.state @@ -2980,7 +2458,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryDeleteRequest); i { case 0: return &v.state @@ -2992,7 +2470,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectAddRequest); i { case 0: return &v.state @@ -3004,7 +2482,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProjectDeleteRequest); i { case 0: return &v.state @@ -3016,7 +2494,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobRequest); i { case 0: return &v.state @@ -3028,7 +2506,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobResponse); i { case 0: return &v.state @@ -3040,7 +2518,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppRequest); i { case 0: return &v.state @@ -3052,7 +2530,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppResponse); i { case 0: return &v.state @@ -3064,7 +2542,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsRequest); i { case 0: return &v.state @@ -3076,7 +2554,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppsResponse); i { case 0: return &v.state @@ -3088,7 +2566,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesRequest); i { case 0: return &v.state @@ -3100,7 +2578,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppLaunchesResponse); i { case 0: return &v.state @@ -3112,7 +2590,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSORequest); i { case 0: return &v.state @@ -3124,7 +2602,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureAppSSOResponse); i { case 0: return &v.state @@ -3136,7 +2614,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigRequest); i { case 0: return &v.state @@ -3148,7 +2626,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppConfigResponse); i { case 0: return &v.state @@ -3160,7 +2638,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesRequest); i { case 0: return &v.state @@ -3172,7 +2650,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAppValuesResponse); i { case 0: return &v.state @@ -3184,7 +2662,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppRequest); i { case 0: return &v.state @@ -3196,7 +2674,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstallAppResponse); i { case 0: return &v.state @@ -3208,7 +2686,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncAppData); i { case 0: return &v.state @@ -3220,7 +2698,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppData); i { case 0: return &v.state @@ -3232,7 +2710,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppStatus); i { case 0: return &v.state @@ -3244,7 +2722,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppConfig); i { case 0: return &v.state @@ -3256,7 +2734,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppValues); i { case 0: return &v.state @@ -3268,7 +2746,7 @@ func file_agent_proto_init() { return nil } } - file_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AppLaunchConfig); i { case 0: return &v.state @@ -3287,7 +2765,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 36, + NumMessages: 32, 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 d102f8ac..6afca910 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 @@ -19,19 +19,15 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" Agent_SubmitJob_FullMethodName = "/agentpb.Agent/SubmitJob" - Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" - Agent_ClimonAppInstall_FullMethodName = "/agentpb.Agent/ClimonAppInstall" - Agent_ClimonAppDelete_FullMethodName = "/agentpb.Agent/ClimonAppDelete" - Agent_DeployerAppInstall_FullMethodName = "/agentpb.Agent/DeployerAppInstall" - Agent_DeployerAppDelete_FullMethodName = "/agentpb.Agent/DeployerAppDelete" Agent_ClusterAdd_FullMethodName = "/agentpb.Agent/ClusterAdd" Agent_ClusterDelete_FullMethodName = "/agentpb.Agent/ClusterDelete" Agent_RepositoryAdd_FullMethodName = "/agentpb.Agent/RepositoryAdd" Agent_RepositoryDelete_FullMethodName = "/agentpb.Agent/RepositoryDelete" Agent_ProjectAdd_FullMethodName = "/agentpb.Agent/ProjectAdd" Agent_ProjectDelete_FullMethodName = "/agentpb.Agent/ProjectDelete" + Agent_Ping_FullMethodName = "/agentpb.Agent/Ping" + Agent_StoreCredential_FullMethodName = "/agentpb.Agent/StoreCredential" Agent_SyncApp_FullMethodName = "/agentpb.Agent/SyncApp" Agent_GetClusterApps_FullMethodName = "/agentpb.Agent/GetClusterApps" Agent_GetClusterAppLaunches_FullMethodName = "/agentpb.Agent/GetClusterAppLaunches" @@ -45,19 +41,15 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AgentClient interface { - Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) - StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) - ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) - DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) ClusterDelete(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryAdd(ctx context.Context, in *RepositoryAddRequest, opts ...grpc.CallOption) (*JobResponse, error) RepositoryDelete(ctx context.Context, in *RepositoryDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectAdd(ctx context.Context, in *ProjectAddRequest, opts ...grpc.CallOption) (*JobResponse, error) ProjectDelete(ctx context.Context, in *ProjectDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) + StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) GetClusterApps(ctx context.Context, in *GetClusterAppsRequest, opts ...grpc.CallOption) (*GetClusterAppsResponse, error) GetClusterAppLaunches(ctx context.Context, in *GetClusterAppLaunchesRequest, opts ...grpc.CallOption) (*GetClusterAppLaunchesResponse, error) @@ -75,15 +67,6 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { return &agentClient{cc} } -func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { - out := new(PingResponse) - err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_SubmitJob_FullMethodName, in, out, opts...) @@ -93,51 +76,6 @@ func (c *agentClient) SubmitJob(ctx context.Context, in *JobRequest, opts ...grp return out, nil } -func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { - out := new(StoreCredentialResponse) - err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppInstall(ctx context.Context, in *ClimonInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) ClimonAppDelete(ctx context.Context, in *ClimonDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_ClimonAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppInstall(ctx context.Context, in *ApplicationInstallRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppInstall_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentClient) DeployerAppDelete(ctx context.Context, in *ApplicationDeleteRequest, opts ...grpc.CallOption) (*JobResponse, error) { - out := new(JobResponse) - err := c.cc.Invoke(ctx, Agent_DeployerAppDelete_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentClient) ClusterAdd(ctx context.Context, in *ClusterRequest, opts ...grpc.CallOption) (*JobResponse, error) { out := new(JobResponse) err := c.cc.Invoke(ctx, Agent_ClusterAdd_FullMethodName, in, out, opts...) @@ -192,6 +130,24 @@ func (c *agentClient) ProjectDelete(ctx context.Context, in *ProjectDeleteReques return out, nil } +func (c *agentClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *agentClient) StoreCredential(ctx context.Context, in *StoreCredentialRequest, opts ...grpc.CallOption) (*StoreCredentialResponse, error) { + out := new(StoreCredentialResponse) + err := c.cc.Invoke(ctx, Agent_StoreCredential_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *agentClient) SyncApp(ctx context.Context, in *SyncAppRequest, opts ...grpc.CallOption) (*SyncAppResponse, error) { out := new(SyncAppResponse) err := c.cc.Invoke(ctx, Agent_SyncApp_FullMethodName, in, out, opts...) @@ -259,19 +215,15 @@ func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opt // All implementations must embed UnimplementedAgentServer // for forward compatibility type AgentServer interface { - Ping(context.Context, *PingRequest) (*PingResponse, error) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) - StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) - ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) - ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) - DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) - DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) ClusterDelete(context.Context, *ClusterRequest) (*JobResponse, error) RepositoryAdd(context.Context, *RepositoryAddRequest) (*JobResponse, error) RepositoryDelete(context.Context, *RepositoryDeleteRequest) (*JobResponse, error) ProjectAdd(context.Context, *ProjectAddRequest) (*JobResponse, error) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) + Ping(context.Context, *PingRequest) (*PingResponse, error) + StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) GetClusterApps(context.Context, *GetClusterAppsRequest) (*GetClusterAppsResponse, error) GetClusterAppLaunches(context.Context, *GetClusterAppLaunchesRequest) (*GetClusterAppLaunchesResponse, error) @@ -286,27 +238,9 @@ type AgentServer interface { type UnimplementedAgentServer struct { } -func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") -} func (UnimplementedAgentServer) SubmitJob(context.Context, *JobRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubmitJob not implemented") } -func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") -} -func (UnimplementedAgentServer) ClimonAppInstall(context.Context, *ClimonInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppInstall not implemented") -} -func (UnimplementedAgentServer) ClimonAppDelete(context.Context, *ClimonDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClimonAppDelete not implemented") -} -func (UnimplementedAgentServer) DeployerAppInstall(context.Context, *ApplicationInstallRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppInstall not implemented") -} -func (UnimplementedAgentServer) DeployerAppDelete(context.Context, *ApplicationDeleteRequest) (*JobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployerAppDelete not implemented") -} func (UnimplementedAgentServer) ClusterAdd(context.Context, *ClusterRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClusterAdd not implemented") } @@ -325,6 +259,12 @@ func (UnimplementedAgentServer) ProjectAdd(context.Context, *ProjectAddRequest) func (UnimplementedAgentServer) ProjectDelete(context.Context, *ProjectDeleteRequest) (*JobResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ProjectDelete not implemented") } +func (UnimplementedAgentServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedAgentServer) StoreCredential(context.Context, *StoreCredentialRequest) (*StoreCredentialResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StoreCredential not implemented") +} func (UnimplementedAgentServer) SyncApp(context.Context, *SyncAppRequest) (*SyncAppResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncApp not implemented") } @@ -359,24 +299,6 @@ func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { s.RegisterService(&Agent_ServiceDesc, srv) } -func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).Ping(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_Ping_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(JobRequest) if err := dec(in); err != nil { @@ -395,96 +317,6 @@ func _Agent_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StoreCredentialRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).StoreCredential(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_StoreCredential_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppInstall(ctx, req.(*ClimonInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_ClimonAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClimonDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).ClimonAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_ClimonAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).ClimonAppDelete(ctx, req.(*ClimonDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppInstall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationInstallRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppInstall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppInstall_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppInstall(ctx, req.(*ApplicationInstallRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agent_DeployerAppDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationDeleteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServer).DeployerAppDelete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Agent_DeployerAppDelete_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServer).DeployerAppDelete(ctx, req.(*ApplicationDeleteRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Agent_ClusterAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ClusterRequest) if err := dec(in); err != nil { @@ -593,6 +425,42 @@ func _Agent_ProjectDelete_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Agent_StoreCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreCredentialRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).StoreCredential(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_StoreCredential_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).StoreCredential(ctx, req.(*StoreCredentialRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Agent_SyncApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SyncAppRequest) if err := dec(in); err != nil { @@ -726,34 +594,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ ServiceName: "agentpb.Agent", HandlerType: (*AgentServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "Ping", - Handler: _Agent_Ping_Handler, - }, { MethodName: "SubmitJob", Handler: _Agent_SubmitJob_Handler, }, - { - MethodName: "StoreCredential", - Handler: _Agent_StoreCredential_Handler, - }, - { - MethodName: "ClimonAppInstall", - Handler: _Agent_ClimonAppInstall_Handler, - }, - { - MethodName: "ClimonAppDelete", - Handler: _Agent_ClimonAppDelete_Handler, - }, - { - MethodName: "DeployerAppInstall", - Handler: _Agent_DeployerAppInstall_Handler, - }, - { - MethodName: "DeployerAppDelete", - Handler: _Agent_DeployerAppDelete_Handler, - }, { MethodName: "ClusterAdd", Handler: _Agent_ClusterAdd_Handler, @@ -778,6 +622,14 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "ProjectDelete", Handler: _Agent_ProjectDelete_Handler, }, + { + MethodName: "Ping", + Handler: _Agent_Ping_Handler, + }, + { + MethodName: "StoreCredential", + Handler: _Agent_StoreCredential_Handler, + }, { MethodName: "SyncApp", Handler: _Agent_SyncApp_Handler, diff --git a/server/pkg/pb/serverpb/server.pb.go b/server/pkg/pb/serverpb/server.pb.go index 9a0db154..331337f1 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 @@ -1400,8 +1400,8 @@ type AddStoreAppRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` + AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` + AppValues *StoreAppAllValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` } func (x *AddStoreAppRequest) Reset() { @@ -1443,7 +1443,7 @@ func (x *AddStoreAppRequest) GetAppConfig() *StoreAppConfig { return nil } -func (x *AddStoreAppRequest) GetAppValues() *StoreAppValues { +func (x *AddStoreAppRequest) GetAppValues() *StoreAppAllValues { if x != nil { return x.AppValues } @@ -1510,8 +1510,8 @@ type UpdateStoreAppRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` + AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` + AppValues *StoreAppAllValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` } func (x *UpdateStoreAppRequest) Reset() { @@ -1553,7 +1553,7 @@ func (x *UpdateStoreAppRequest) GetAppConfig() *StoreAppConfig { return nil } -func (x *UpdateStoreAppRequest) GetAppValues() *StoreAppValues { +func (x *UpdateStoreAppRequest) GetAppValues() *StoreAppAllValues { if x != nil { return x.AppValues } @@ -1788,7 +1788,6 @@ type GetStoreAppResponse struct { Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=serverpb.StatusCode" json:"status,omitempty"` StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` AppConfig *StoreAppConfig `protobuf:"bytes,3,opt,name=appConfig,proto3" json:"appConfig,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,4,opt,name=appValues,proto3" json:"appValues,omitempty"` } func (x *GetStoreAppResponse) Reset() { @@ -1844,13 +1843,6 @@ func (x *GetStoreAppResponse) GetAppConfig() *StoreAppConfig { return nil } -func (x *GetStoreAppResponse) GetAppValues() *StoreAppValues { - if x != nil { - return x.AppValues - } - return nil -} - type GetStoreAppsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1957,8 +1949,8 @@ type StoreAppsData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppConfigs *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfigs,proto3" json:"appConfigs,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` + AppConfigs *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfigs,proto3" json:"appConfigs,omitempty"` + OverrideValues []byte `protobuf:"bytes,2,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` } func (x *StoreAppsData) Reset() { @@ -2000,9 +1992,9 @@ func (x *StoreAppsData) GetAppConfigs() *StoreAppConfig { return nil } -func (x *StoreAppsData) GetAppValues() *StoreAppValues { +func (x *StoreAppsData) GetOverrideValues() []byte { if x != nil { - return x.AppValues + return x.OverrideValues } return nil } @@ -2067,10 +2059,10 @@ type GetStoreAppValuesResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=serverpb.StatusCode" json:"status,omitempty"` - StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` - AppConfig *StoreAppConfig `protobuf:"bytes,3,opt,name=appConfig,proto3" json:"appConfig,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,4,opt,name=appValues,proto3" json:"appValues,omitempty"` + Status StatusCode `protobuf:"varint,1,opt,name=status,proto3,enum=serverpb.StatusCode" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,2,opt,name=statusMessage,proto3" json:"statusMessage,omitempty"` + AppConfig *StoreAppConfig `protobuf:"bytes,3,opt,name=appConfig,proto3" json:"appConfig,omitempty"` + OverrideValues []byte `protobuf:"bytes,4,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` } func (x *GetStoreAppValuesResponse) Reset() { @@ -2126,9 +2118,9 @@ func (x *GetStoreAppValuesResponse) GetAppConfig() *StoreAppConfig { return nil } -func (x *GetStoreAppValuesResponse) GetAppValues() *StoreAppValues { +func (x *GetStoreAppValuesResponse) GetOverrideValues() []byte { if x != nil { - return x.AppValues + return x.OverrideValues } return nil } @@ -2138,8 +2130,9 @@ type DeployStoreAppRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` - AppValues *StoreAppValues `protobuf:"bytes,2,opt,name=appValues,proto3" json:"appValues,omitempty"` + AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + OverrideValues []byte `protobuf:"bytes,3,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` } func (x *DeployStoreAppRequest) Reset() { @@ -2174,16 +2167,23 @@ func (*DeployStoreAppRequest) Descriptor() ([]byte, []int) { return file_server_proto_rawDescGZIP(), []int{33} } -func (x *DeployStoreAppRequest) GetAppConfig() *StoreAppConfig { +func (x *DeployStoreAppRequest) GetAppName() string { if x != nil { - return x.AppConfig + return x.AppName } - return nil + return "" } -func (x *DeployStoreAppRequest) GetAppValues() *StoreAppValues { +func (x *DeployStoreAppRequest) GetVersion() string { if x != nil { - return x.AppValues + return x.Version + } + return "" +} + +func (x *DeployStoreAppRequest) GetOverrideValues() []byte { + if x != nil { + return x.OverrideValues } return nil } @@ -2402,17 +2402,18 @@ func (x *StoreAppConfig) GetDefualtApp() bool { return false } -type StoreAppValues struct { +type StoreAppAllValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OverrideValues []byte `protobuf:"bytes,1,opt,name=overrideValues,proto3" json:"overrideValues,omitempty"` LaunchUIValues []byte `protobuf:"bytes,2,opt,name=launchUIValues,proto3" json:"launchUIValues,omitempty"` + TemplateValues []byte `protobuf:"bytes,3,opt,name=templateValues,proto3" json:"templateValues,omitempty"` } -func (x *StoreAppValues) Reset() { - *x = StoreAppValues{} +func (x *StoreAppAllValues) Reset() { + *x = StoreAppAllValues{} if protoimpl.UnsafeEnabled { mi := &file_server_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2420,13 +2421,13 @@ func (x *StoreAppValues) Reset() { } } -func (x *StoreAppValues) String() string { +func (x *StoreAppAllValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StoreAppValues) ProtoMessage() {} +func (*StoreAppAllValues) ProtoMessage() {} -func (x *StoreAppValues) ProtoReflect() protoreflect.Message { +func (x *StoreAppAllValues) ProtoReflect() protoreflect.Message { mi := &file_server_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2438,25 +2439,32 @@ func (x *StoreAppValues) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StoreAppValues.ProtoReflect.Descriptor instead. -func (*StoreAppValues) Descriptor() ([]byte, []int) { +// Deprecated: Use StoreAppAllValues.ProtoReflect.Descriptor instead. +func (*StoreAppAllValues) Descriptor() ([]byte, []int) { return file_server_proto_rawDescGZIP(), []int{36} } -func (x *StoreAppValues) GetOverrideValues() []byte { +func (x *StoreAppAllValues) GetOverrideValues() []byte { if x != nil { return x.OverrideValues } return nil } -func (x *StoreAppValues) GetLaunchUIValues() []byte { +func (x *StoreAppAllValues) GetLaunchUIValues() []byte { if x != nil { return x.LaunchUIValues } return nil } +func (x *StoreAppAllValues) GetTemplateValues() []byte { + if x != nil { + return x.TemplateValues + } + return nil +} + var File_server_proto protoreflect.FileDescriptor var file_server_proto_rawDesc = []byte{ @@ -2658,253 +2666,249 @@ var file_server_proto_rawDesc = []byte{ 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, 0x84, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, + 0x70, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x12, 0x39, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x13, 0x41, + 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x09, 0x61, - 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, - 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x6b, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x22, 0x4b, 0x0a, 0x15, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x22, 0x48, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0xd9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, + 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, + 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x41, + 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0x6b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 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, + 0x22, 0x4b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, + 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, + 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x09, 0x61, - 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, - 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, + 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, + 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x97, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 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, 0x2b, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x71, 0x0a, 0x0d, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0a, 0x61, + 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4e, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcf, 0x01, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, - 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, - 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 0x01, 0x0a, - 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, - 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x61, 0x70, - 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x22, 0x4e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0xdf, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, + 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, + 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, + 0x73, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x22, 0x6c, 0x0a, 0x16, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, - 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, - 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x09, 0x61, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x6c, 0x0a, 0x16, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 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, - 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, 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, 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, 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, 0xf7, 0x0a, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x6d, 0x0a, 0x16, 0x4e, 0x65, 0x77, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x4e, - 0x65, 0x77, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x76, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x73, + 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, 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, 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, 0x8b, 0x01, 0x0a, 0x11, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x41, 0x6c, 0x6c, 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, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 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, 0xf7, 0x0a, 0x0a, 0x06, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x6d, 0x0a, 0x16, 0x4e, 0x65, 0x77, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x19, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 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, 0x20, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 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, - 0x79, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x2b, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x12, 0x1e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, - 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, + 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x79, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x12, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x12, + 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, + 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x22, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x54, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, + 0x70, 0x70, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, + 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, + 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x0b, 0x5a, 0x09, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x12, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x0b, 0x5a, 0x09, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2959,7 +2963,7 @@ var file_server_proto_goTypes = []interface{}{ (*DeployStoreAppRequest)(nil), // 34: serverpb.DeployStoreAppRequest (*DeployStoreAppResponse)(nil), // 35: serverpb.DeployStoreAppResponse (*StoreAppConfig)(nil), // 36: serverpb.StoreAppConfig - (*StoreAppValues)(nil), // 37: serverpb.StoreAppValues + (*StoreAppAllValues)(nil), // 37: serverpb.StoreAppAllValues } var file_server_proto_depIdxs = []int32{ 0, // 0: serverpb.NewClusterRegistrationResponse.status:type_name -> serverpb.StatusCode @@ -2978,60 +2982,55 @@ var file_server_proto_depIdxs = []int32{ 19, // 13: serverpb.ClusterInfo.attributes:type_name -> serverpb.ClusterAttribute 18, // 14: serverpb.ClusterInfo.appLaunchConfigs:type_name -> serverpb.AppLaunchConfig 36, // 15: serverpb.AddStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig - 37, // 16: serverpb.AddStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues + 37, // 16: serverpb.AddStoreAppRequest.appValues:type_name -> serverpb.StoreAppAllValues 0, // 17: serverpb.AddStoreAppResponse.status:type_name -> serverpb.StatusCode 36, // 18: serverpb.UpdateStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig - 37, // 19: serverpb.UpdateStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues + 37, // 19: serverpb.UpdateStoreAppRequest.appValues:type_name -> serverpb.StoreAppAllValues 0, // 20: serverpb.UpdateStoreAppRsponse.status:type_name -> serverpb.StatusCode 0, // 21: serverpb.DeleteStoreAppResponse.status:type_name -> serverpb.StatusCode 0, // 22: serverpb.GetStoreAppResponse.status:type_name -> serverpb.StatusCode 36, // 23: serverpb.GetStoreAppResponse.appConfig:type_name -> serverpb.StoreAppConfig - 37, // 24: serverpb.GetStoreAppResponse.appValues:type_name -> serverpb.StoreAppValues - 0, // 25: serverpb.GetStoreAppsResponse.status:type_name -> serverpb.StatusCode - 31, // 26: serverpb.GetStoreAppsResponse.data:type_name -> serverpb.StoreAppsData - 36, // 27: serverpb.StoreAppsData.appConfigs:type_name -> serverpb.StoreAppConfig - 37, // 28: serverpb.StoreAppsData.appValues:type_name -> serverpb.StoreAppValues - 0, // 29: serverpb.GetStoreAppValuesResponse.status:type_name -> serverpb.StatusCode - 36, // 30: serverpb.GetStoreAppValuesResponse.appConfig:type_name -> serverpb.StoreAppConfig - 37, // 31: serverpb.GetStoreAppValuesResponse.appValues:type_name -> serverpb.StoreAppValues - 36, // 32: serverpb.DeployStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig - 37, // 33: serverpb.DeployStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues - 0, // 34: serverpb.DeployStoreAppResponse.status:type_name -> serverpb.StatusCode - 1, // 35: serverpb.Server.NewClusterRegistration:input_type -> serverpb.NewClusterRegistrationRequest - 3, // 36: serverpb.Server.UpdateClusterRegistration:input_type -> serverpb.UpdateClusterRegistrationRequest - 5, // 37: serverpb.Server.DeleteClusterRegistration:input_type -> serverpb.DeleteClusterRegistrationRequest - 7, // 38: serverpb.Server.GetClusters:input_type -> serverpb.GetClustersRequest - 9, // 39: serverpb.Server.GetCluster:input_type -> serverpb.GetClusterRequest - 11, // 40: serverpb.Server.GetClusterApps:input_type -> serverpb.GetClusterAppsRequest - 15, // 41: serverpb.Server.GetClusterAppLaunchConfigs:input_type -> serverpb.GetClusterAppLaunchConfigsRequest - 13, // 42: serverpb.Server.GetClusterApp:input_type -> serverpb.GetClusterAppRequest - 21, // 43: serverpb.Server.AddStoreApp:input_type -> serverpb.AddStoreAppRequest - 23, // 44: serverpb.Server.UpdateStoreApp:input_type -> serverpb.UpdateStoreAppRequest - 25, // 45: serverpb.Server.DeleteStoreApp:input_type -> serverpb.DeleteStoreAppRequest - 27, // 46: serverpb.Server.GetStoreApp:input_type -> serverpb.GetStoreAppRequest - 29, // 47: serverpb.Server.GetStoreApps:input_type -> serverpb.GetStoreAppsRequest - 32, // 48: serverpb.Server.GetStoreAppValues:input_type -> serverpb.GetStoreAppValuesRequest - 34, // 49: serverpb.Server.DeployStoreApp:input_type -> serverpb.DeployStoreAppRequest - 2, // 50: serverpb.Server.NewClusterRegistration:output_type -> serverpb.NewClusterRegistrationResponse - 4, // 51: serverpb.Server.UpdateClusterRegistration:output_type -> serverpb.UpdateClusterRegistrationResponse - 6, // 52: serverpb.Server.DeleteClusterRegistration:output_type -> serverpb.DeleteClusterRegistrationResponse - 8, // 53: serverpb.Server.GetClusters:output_type -> serverpb.GetClustersResponse - 10, // 54: serverpb.Server.GetCluster:output_type -> serverpb.GetClusterResponse - 12, // 55: serverpb.Server.GetClusterApps:output_type -> serverpb.GetClusterAppsResponse - 16, // 56: serverpb.Server.GetClusterAppLaunchConfigs:output_type -> serverpb.GetClusterAppLaunchConfigsResponse - 14, // 57: serverpb.Server.GetClusterApp:output_type -> serverpb.GetClusterAppResponse - 22, // 58: serverpb.Server.AddStoreApp:output_type -> serverpb.AddStoreAppResponse - 24, // 59: serverpb.Server.UpdateStoreApp:output_type -> serverpb.UpdateStoreAppRsponse - 26, // 60: serverpb.Server.DeleteStoreApp:output_type -> serverpb.DeleteStoreAppResponse - 28, // 61: serverpb.Server.GetStoreApp:output_type -> serverpb.GetStoreAppResponse - 30, // 62: serverpb.Server.GetStoreApps:output_type -> serverpb.GetStoreAppsResponse - 33, // 63: serverpb.Server.GetStoreAppValues:output_type -> serverpb.GetStoreAppValuesResponse - 35, // 64: serverpb.Server.DeployStoreApp:output_type -> serverpb.DeployStoreAppResponse - 50, // [50:65] is the sub-list for method output_type - 35, // [35:50] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 0, // 24: serverpb.GetStoreAppsResponse.status:type_name -> serverpb.StatusCode + 31, // 25: serverpb.GetStoreAppsResponse.data:type_name -> serverpb.StoreAppsData + 36, // 26: serverpb.StoreAppsData.appConfigs:type_name -> serverpb.StoreAppConfig + 0, // 27: serverpb.GetStoreAppValuesResponse.status:type_name -> serverpb.StatusCode + 36, // 28: serverpb.GetStoreAppValuesResponse.appConfig:type_name -> serverpb.StoreAppConfig + 0, // 29: serverpb.DeployStoreAppResponse.status:type_name -> serverpb.StatusCode + 1, // 30: serverpb.Server.NewClusterRegistration:input_type -> serverpb.NewClusterRegistrationRequest + 3, // 31: serverpb.Server.UpdateClusterRegistration:input_type -> serverpb.UpdateClusterRegistrationRequest + 5, // 32: serverpb.Server.DeleteClusterRegistration:input_type -> serverpb.DeleteClusterRegistrationRequest + 7, // 33: serverpb.Server.GetClusters:input_type -> serverpb.GetClustersRequest + 9, // 34: serverpb.Server.GetCluster:input_type -> serverpb.GetClusterRequest + 11, // 35: serverpb.Server.GetClusterApps:input_type -> serverpb.GetClusterAppsRequest + 15, // 36: serverpb.Server.GetClusterAppLaunchConfigs:input_type -> serverpb.GetClusterAppLaunchConfigsRequest + 13, // 37: serverpb.Server.GetClusterApp:input_type -> serverpb.GetClusterAppRequest + 21, // 38: serverpb.Server.AddStoreApp:input_type -> serverpb.AddStoreAppRequest + 23, // 39: serverpb.Server.UpdateStoreApp:input_type -> serverpb.UpdateStoreAppRequest + 25, // 40: serverpb.Server.DeleteStoreApp:input_type -> serverpb.DeleteStoreAppRequest + 27, // 41: serverpb.Server.GetStoreApp:input_type -> serverpb.GetStoreAppRequest + 29, // 42: serverpb.Server.GetStoreApps:input_type -> serverpb.GetStoreAppsRequest + 32, // 43: serverpb.Server.GetStoreAppValues:input_type -> serverpb.GetStoreAppValuesRequest + 34, // 44: serverpb.Server.DeployStoreApp:input_type -> serverpb.DeployStoreAppRequest + 2, // 45: serverpb.Server.NewClusterRegistration:output_type -> serverpb.NewClusterRegistrationResponse + 4, // 46: serverpb.Server.UpdateClusterRegistration:output_type -> serverpb.UpdateClusterRegistrationResponse + 6, // 47: serverpb.Server.DeleteClusterRegistration:output_type -> serverpb.DeleteClusterRegistrationResponse + 8, // 48: serverpb.Server.GetClusters:output_type -> serverpb.GetClustersResponse + 10, // 49: serverpb.Server.GetCluster:output_type -> serverpb.GetClusterResponse + 12, // 50: serverpb.Server.GetClusterApps:output_type -> serverpb.GetClusterAppsResponse + 16, // 51: serverpb.Server.GetClusterAppLaunchConfigs:output_type -> serverpb.GetClusterAppLaunchConfigsResponse + 14, // 52: serverpb.Server.GetClusterApp:output_type -> serverpb.GetClusterAppResponse + 22, // 53: serverpb.Server.AddStoreApp:output_type -> serverpb.AddStoreAppResponse + 24, // 54: serverpb.Server.UpdateStoreApp:output_type -> serverpb.UpdateStoreAppRsponse + 26, // 55: serverpb.Server.DeleteStoreApp:output_type -> serverpb.DeleteStoreAppResponse + 28, // 56: serverpb.Server.GetStoreApp:output_type -> serverpb.GetStoreAppResponse + 30, // 57: serverpb.Server.GetStoreApps:output_type -> serverpb.GetStoreAppsResponse + 33, // 58: serverpb.Server.GetStoreAppValues:output_type -> serverpb.GetStoreAppValuesResponse + 35, // 59: serverpb.Server.DeployStoreApp:output_type -> serverpb.DeployStoreAppResponse + 45, // [45:60] is the sub-list for method output_type + 30, // [30:45] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_server_proto_init() } @@ -3473,7 +3472,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StoreAppValues); i { + switch v := v.(*StoreAppAllValues); i { case 0: return &v.state case 1: 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 index 5db3e16a..081a1449 100644 --- a/server/pkg/store-apps/sync_store_apps.go +++ b/server/pkg/store-apps/sync_store_apps.go @@ -73,8 +73,9 @@ func SyncStoreApps(log logging.Logger, appStore store.ServerStore) error { CreateNamespace: appConfig.CreateNamespace, PrivilegedNamespace: appConfig.PrivilegedNamespace, Icon: appConfig.Icon, - LaunchURL: appConfig.LaunchUIURL, + LaunchURL: appConfig.LaunchURL, LaunchUIDescription: appConfig.LaunchUIDescription, + LaunchUIValues: appConfig.LaunchUIValues, } overrideValuesJSON, err := json.Marshal(appConfig.OverrideValues) @@ -89,7 +90,7 @@ func SyncStoreApps(log logging.Logger, appStore store.ServerStore) error { } storeAppConfig.LaunchUIValues = string(launchUIValues) - if err := appStore.AddOrUpdateApp(storeAppConfig); err != nil { + if err := appStore.AddOrUpdateStoreApp(storeAppConfig); err != nil { return errors.WithMessagef(err, "failed to store app config for %s", appName) } } diff --git a/server/pkg/store/astra/app_store.go b/server/pkg/store/astra/app_store.go index 686e11f5..a54bac87 100644 --- a/server/pkg/store/astra/app_store.go +++ b/server/pkg/store/astra/app_store.go @@ -11,15 +11,15 @@ import ( ) const ( - createAppConfigQuery string = "INSERT INTO %s.app_config (name, chart_name, repo_name,release_name, repo_url, namespace, version, create_namespace, privileged_namespace, launch_ui_url, launch_ui_redirect_url, category, icon, description, launch_ui_values, override_values, created_time, id) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', %t, %t, '%s', '%s', '%s', '%s', '%s', '%s', '%s','%v', '%s' );" - updateAppConfigQuery string = "UPDATE %s.app_config SET chart_name = '%s', repo_name = '%s', repo_url = '%s', namespace = '%s', create_namespace = %t, privileged_namespace = %t, launch_ui_url = '%s', launch_ui_redirect_url = '%s', category = '%s', icon = '%s', description = '%s', launch_ui_values = '%s', override_values = '%s',last_updated_time='%v' WHERE name = '%s' AND version = '%s';" - deleteAppConfigQuery string = "DELETE FROM %s.app_config WHERE name='%s' AND version='%s';" - getAppConfigQuery string = "SELECT name,chart_name,repo_name,repo_url,namespace,version,create_namespace,privileged_namespace,launch_ui_url,launch_ui_redirect_url,category,icon,description,launch_ui_values,override_values, release_name FROM %s.app_config WHERE name='%s' AND version='%s';" - getAllAppConfigsQuery string = "SELECT name,chart_name,repo_name,repo_url,namespace,version,create_namespace,privileged_namespace,launch_ui_url,launch_ui_redirect_url,category,icon,description,launch_ui_values,override_values, release_name FROM %s.app_config;" - appConfigExistanceCheckQuery string = "SELECT name, version FROM %s.app_config WHERE name='%s' AND version ='%s';" + createAppConfigQuery string = "INSERT INTO %s.store_app_config (name, chart_name, repo_name,release_name, repo_url, namespace, version, create_namespace, privileged_namespace, launch_ui_url, launch_ui_redirect_url, category, icon, description, launch_ui_values, override_values, template_values, created_time, id) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', %t, %t, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%v', '%s' );" + updateAppConfigQuery string = "UPDATE %s.store_app_config SET chart_name = '%s', repo_name = '%s', repo_url = '%s', namespace = '%s', create_namespace = %t, privileged_namespace = %t, launch_ui_url = '%s', launch_ui_redirect_url = '%s', category = '%s', icon = '%s', description = '%s', launch_ui_values = '%s', override_values = '%s', template_values = '%s', last_updated_time='%v' WHERE name = '%s' AND version = '%s';" + deleteAppConfigQuery string = "DELETE FROM %s.store_app_config WHERE name='%s' AND version='%s';" + getAppConfigQuery string = "SELECT name,chart_name,repo_name,repo_url,namespace,version,create_namespace,privileged_namespace,launch_ui_url,launch_ui_redirect_url,category,icon,description,launch_ui_values,override_values, release_name FROM %s.store_app_config WHERE name='%s' AND version='%s';" + getAllAppConfigsQuery string = "SELECT name,chart_name,repo_name,repo_url,namespace,version,create_namespace,privileged_namespace,launch_ui_url,launch_ui_redirect_url,category,icon,description,launch_ui_values,override_values, template_values, release_name FROM %s.store_app_config;" + appConfigExistanceCheckQuery string = "SELECT name, version FROM %s.store_app_config WHERE name='%s' AND version ='%s';" ) -func (a *AstraServerStore) AddOrUpdateApp(config *types.StoreAppConfig) error { +func (a *AstraServerStore) AddOrUpdateStoreApp(config *types.StoreAppConfig) error { appExists, err := a.isAppExistsInStore(config.AppName, config.Version) if err != nil { return fmt.Errorf("failed to check app config existance : %w", err) @@ -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.LaunchUIDescription, 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, config.TemplateValues, time.Now().Format(time.RFC3339), 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.LaunchUIDescription, 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, config.TemplateValues, time.Now().Format(time.RFC3339), uuid.New().String()), } } @@ -42,7 +42,6 @@ func (a *AstraServerStore) AddOrUpdateApp(config *types.StoreAppConfig) error { if err != nil { return fmt.Errorf("failed to insert/update the app config into the app_config table : %w", err) } - return nil } @@ -63,7 +62,6 @@ func (a *AstraServerStore) DeleteAppInStore(name, version string) error { } func (a *AstraServerStore) GetAppFromStore(name, version string) (*types.AppConfig, error) { - selectQuery := &pb.Query{ Cql: fmt.Sprintf(getAppConfigQuery, a.keyspace, name, version), @@ -89,7 +87,6 @@ func (a *AstraServerStore) GetAppFromStore(name, version string) (*types.AppConf } func (a *AstraServerStore) GetAppsFromStore() (*[]types.AppConfig, error) { - selectQuery := &pb.Query{ Cql: fmt.Sprintf(getAllAppConfigsQuery, a.keyspace), @@ -119,7 +116,6 @@ func (a *AstraServerStore) GetAppsFromStore() (*[]types.AppConfig, error) { } func toAppConfig(row *pb.Row) (*types.AppConfig, error) { - cqlAppName, err := client.ToString(row.Values[0]) if err != nil { return nil, fmt.Errorf("failed to get app name: %w", err) @@ -180,7 +176,11 @@ func toAppConfig(row *pb.Row) (*types.AppConfig, error) { if err != nil { return nil, fmt.Errorf("failed to get override values: %w", err) } - cqlReleaseNameValues, err := client.ToString(row.Values[15]) + cqlTemplateValues, err := client.ToString(row.Values[15]) + if err != nil { + return nil, fmt.Errorf("failed to get override values: %w", err) + } + cqlReleaseNameValues, err := client.ToString(row.Values[16]) if err != nil { return nil, fmt.Errorf("failed to get override values: %w", err) } @@ -194,13 +194,14 @@ func toAppConfig(row *pb.Row) (*types.AppConfig, error) { Version: cqlVersion, CreateNamespace: cqlCreateNamespace, PrivilegedNamespace: cqlPrivilegedNamespace, - LaunchUIURL: cqlLaunchUiUrl, + LaunchURL: cqlLaunchUiUrl, LaunchUIDescription: cqlLaunchUiDescription, Category: cqlCategory, Icon: cqlIcon, Description: cqlDescription, LaunchUIValues: cqlLaunchUiValues, OverrideValues: cqlOverrideValues, + TemplateValues: cqlTemplateValues, ReleaseName: cqlReleaseNameValues, } return config, nil diff --git a/server/pkg/store/astra/type.go b/server/pkg/store/astra/type.go index da0c5ec6..375954b3 100644 --- a/server/pkg/store/astra/type.go +++ b/server/pkg/store/astra/type.go @@ -7,7 +7,7 @@ import ( const ( createKeyspaceQuery = "CREATE KEYSPACE IF NOT EXISTS %s WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1};" createClusterEndpointTableQuery = "CREATE TABLE IF NOT EXISTS %s.capten_clusters (cluster_id uuid, org_id uuid, cluster_name text, endpoint text, PRIMARY KEY (cluster_id, org_id));" - createAppConfigTableQuery = "CREATE TABLE IF NOT EXISTS %s.app_config(id TEXT, created_time timestamp, last_updated_time timestamp, last_updated_user TEXT, name TEXT, chart_name TEXT, repo_name TEXT, release_name TEXT, repo_url TEXT, namespace TEXT, version TEXT, create_namespace BOOLEAN, privileged_namespace BOOLEAN, launch_ui_url TEXT, launch_ui_redirect_url TEXT, category TEXT, icon TEXT, description TEXT, launch_ui_values TEXT, override_values TEXT, PRIMARY KEY (name, version));" + createAppConfigTableQuery = "CREATE TABLE IF NOT EXISTS %s.store_app_config(id TEXT, created_time timestamp, last_updated_time timestamp, last_updated_user TEXT, name TEXT, chart_name TEXT, repo_name TEXT, release_name TEXT, repo_url TEXT, namespace TEXT, version TEXT, create_namespace BOOLEAN, privileged_namespace BOOLEAN, launch_ui_url TEXT, launch_ui_redirect_url TEXT, category TEXT, icon TEXT, description TEXT, launch_ui_values TEXT, override_values TEXT, template_values TEXT, PRIMARY KEY (name, version));" ) const ( diff --git a/server/pkg/store/store.go b/server/pkg/store/store.go index ed1a944b..dacda4c9 100644 --- a/server/pkg/store/store.go +++ b/server/pkg/store/store.go @@ -15,7 +15,7 @@ type ServerStore interface { AddCluster(orgID, clusterID, clusterName, endpoint string) error UpdateCluster(orgID, clusterID, clusterName, endpoint string) error DeleteCluster(orgID, clusterID string) error - AddOrUpdateApp(config *types.StoreAppConfig) error + AddOrUpdateStoreApp(config *types.StoreAppConfig) error DeleteAppInStore(name, version string) error GetAppFromStore(name, version string) (*types.AppConfig, error) GetAppsFromStore() (*[]types.AppConfig, error) diff --git a/server/pkg/types/type.go b/server/pkg/types/type.go index 9f7b1efe..933a5796 100644 --- a/server/pkg/types/type.go +++ b/server/pkg/types/type.go @@ -42,6 +42,7 @@ type StoreAppConfig struct { LaunchUIDescription string `yaml:"LaunchUIDescription,omitempty"` OverrideValues string `json:"overrideValues,omitempty"` LaunchUIValues string `json:"launchUIValues,omitempty"` + TemplateValues string `json:"templateValues,omitempty"` } type AppConfig struct { @@ -58,13 +59,14 @@ type AppConfig struct { Version string `cql:"version" json:"version"` 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"` + LaunchURL string `cql:"launch_ui_url" json:"launch_ui_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"` LaunchUIValues string `cql:"launch_ui_values" json:"launch_ui_values"` OverrideValues string `cql:"override_values" json:"override_values"` + TemplateValues string `cql:"template_values" json:"template_values"` } type AppInstallRequest struct {