diff --git a/capten/agent/pkg/agent/agent_climon.go b/capten/agent/pkg/agent/agent_climon.go index cf697513..2fd1c42e 100644 --- a/capten/agent/pkg/agent/agent_climon.go +++ b/capten/agent/pkg/agent/agent_climon.go @@ -4,6 +4,7 @@ import ( "context" "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" ) @@ -36,3 +37,32 @@ func (a *Agent) ClimonAppDelete(ctx context.Context, request *agentpb.ClimonDele return prepareJobResponse(run, worker.GetWorkflowName()), err } + +func (a *Agent) InstallApp(ctx context.Context, request *agentpb.InstallAppRequest) (*agentpb.JobResponse, error) { + a.log.Infof("Recieved App Install event %+v", request) + worker := workers.NewClimon(a.tc, a.log) + + config := &model.AppConfig{ + ReleaseName: request.AppConfig.ReleaseName, + AppName: request.AppConfig.AppName, + Version: request.AppConfig.Version, + 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: string(request.AppConfig.Icon), + LaunchURL: request.AppConfig.LaunchURL, + // LaunchRedirectURL: request.AppConfig.LaunchRedirectURL, + ClusterName: "inbuilt", + } + run, err := worker.SendInstallAppEvent(ctx, "install", config) + 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 9be18cf0..21da42b3 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.30.0 -// protoc v3.12.4 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: agent.proto package agentpb import ( - any1 "github.com/golang/protobuf/ptypes/any" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" ) @@ -960,8 +960,8 @@ type JobRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - Payload *any1.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + 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"` } func (x *JobRequest) Reset() { @@ -1003,7 +1003,7 @@ func (x *JobRequest) GetOperation() string { return "" } -func (x *JobRequest) GetPayload() *any1.Any { +func (x *JobRequest) GetPayload() *anypb.Any { if x != nil { return x.Payload } @@ -2115,12 +2115,12 @@ type AppLaunchConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` - LaunchUIDescription string `protobuf:"bytes,6,opt,name=launchUIDescription,proto3" json:"launchUIDescription,omitempty"` + ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` + Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` + LaunchRedirectURL string `protobuf:"bytes,6,opt,name=launchRedirectURL,proto3" json:"launchRedirectURL,omitempty"` } func (x *AppLaunchConfig) Reset() { @@ -2190,13 +2190,60 @@ func (x *AppLaunchConfig) GetLaunchURL() string { return "" } -func (x *AppLaunchConfig) GetLaunchUIDescription() string { +func (x *AppLaunchConfig) GetLaunchRedirectURL() string { if x != nil { - return x.LaunchUIDescription + return x.LaunchRedirectURL } return "" } +type InstallAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *InstallAppRequest) Reset() { + *x = InstallAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppRequest) ProtoMessage() {} + +func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallAppRequest.ProtoReflect.Descriptor instead. +func (*InstallAppRequest) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{33} +} + +func (x *InstallAppRequest) GetAppConfig() *AppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + var File_agent_proto protoreflect.FileDescriptor var file_agent_proto_rawDesc = []byte{ @@ -2474,7 +2521,7 @@ var file_agent_proto_rawDesc = []byte{ 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, + 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, @@ -2484,109 +2531,117 @@ var file_agent_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, - 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, - 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0xc6, 0x0b, 0x0a, 0x05, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, - 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, - 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x55, 0x52, 0x4c, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, + 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, + 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0x88, 0x0c, 0x0a, 0x05, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 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, + 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, 0x3e, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, - 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, + 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, 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, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, + 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2602,7 +2657,7 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest @@ -2638,14 +2693,15 @@ var file_agent_proto_goTypes = []interface{}{ (*AppConfig)(nil), // 31: agentpb.AppConfig (*AppValues)(nil), // 32: agentpb.AppValues (*AppLaunchConfig)(nil), // 33: agentpb.AppLaunchConfig - nil, // 34: agentpb.StoreCredentialRequest.CredentialEntry - (*any1.Any)(nil), // 35: google.protobuf.Any + (*InstallAppRequest)(nil), // 34: agentpb.InstallAppRequest + nil, // 35: agentpb.StoreCredentialRequest.CredentialEntry + (*anypb.Any)(nil), // 36: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 34, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 35, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 35, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 36, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any 28, // 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 @@ -2661,49 +2717,52 @@ var file_agent_proto_depIdxs = []int32{ 32, // 16: agentpb.SyncAppData.values:type_name -> agentpb.AppValues 31, // 17: agentpb.AppData.config:type_name -> agentpb.AppConfig 30, // 18: agentpb.AppData.status:type_name -> agentpb.AppStatus - 1, // 19: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 20: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 21: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 22: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 23: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 24: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 25: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 26: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 27: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 28: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 29: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 30: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 31: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 32: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 33: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 34: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 35: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 36: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 37: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 2, // 38: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 39: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 40: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 41: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 42: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 43: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 44: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 45: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 46: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 51: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 52: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 53: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 54: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 55: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 56: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 38, // [38:57] is the sub-list for method output_type - 19, // [19:38] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 31, // 19: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 1, // 20: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 14, // 21: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 3, // 22: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 5, // 23: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest + 6, // 24: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest + 7, // 25: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest + 8, // 26: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest + 9, // 27: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 9, // 28: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 10, // 29: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 11, // 30: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 12, // 31: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 13, // 32: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 16, // 33: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 18, // 34: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 20, // 35: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 22, // 36: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 24, // 37: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 26, // 38: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 34, // 39: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 2, // 40: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 15, // 41: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 4, // 42: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 15, // 43: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse + 15, // 44: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse + 15, // 45: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse + 15, // 46: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse + 15, // 47: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 15, // 48: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 15, // 49: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 15, // 50: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 15, // 51: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 15, // 52: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 17, // 53: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 19, // 54: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 21, // 55: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 23, // 56: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 25, // 57: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 27, // 58: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 15, // 59: agentpb.Agent.InstallApp:output_type -> agentpb.JobResponse + 40, // [40:60] is the sub-list for method output_type + 20, // [20:40] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_agent_proto_init() } @@ -3108,6 +3167,18 @@ func file_agent_proto_init() { return nil } } + file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstallAppRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3115,7 +3186,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 34, + NumMessages: 35, 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 e1a50d99..ecc3b8f4 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 v3.12.4 +// - protoc v4.23.4 // source: agent.proto package agentpb @@ -38,6 +38,7 @@ const ( Agent_ConfigureAppSSO_FullMethodName = "/agentpb.Agent/ConfigureAppSSO" Agent_GetClusterAppConfig_FullMethodName = "/agentpb.Agent/GetClusterAppConfig" Agent_GetClusterAppValues_FullMethodName = "/agentpb.Agent/GetClusterAppValues" + Agent_InstallApp_FullMethodName = "/agentpb.Agent/InstallApp" ) // AgentClient is the client API for Agent service. @@ -63,6 +64,7 @@ type AgentClient interface { ConfigureAppSSO(ctx context.Context, in *ConfigureAppSSORequest, opts ...grpc.CallOption) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(ctx context.Context, in *GetClusterAppConfigRequest, opts ...grpc.CallOption) (*GetClusterAppConfigResponse, error) GetClusterAppValues(ctx context.Context, in *GetClusterAppValuesRequest, opts ...grpc.CallOption) (*GetClusterAppValuesResponse, error) + InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) } type agentClient struct { @@ -244,6 +246,15 @@ func (c *agentClient) GetClusterAppValues(ctx context.Context, in *GetClusterApp return out, nil } +func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) { + out := new(JobResponse) + err := c.cc.Invoke(ctx, Agent_InstallApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer // for forward compatibility @@ -267,6 +278,7 @@ type AgentServer interface { ConfigureAppSSO(context.Context, *ConfigureAppSSORequest) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(context.Context, *GetClusterAppConfigRequest) (*GetClusterAppConfigResponse, error) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) + InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) mustEmbedUnimplementedAgentServer() } @@ -331,6 +343,9 @@ func (UnimplementedAgentServer) GetClusterAppConfig(context.Context, *GetCluster func (UnimplementedAgentServer) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterAppValues not implemented") } +func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InstallApp not implemented") +} func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} // UnsafeAgentServer may be embedded to opt out of forward compatibility for this service. @@ -686,6 +701,24 @@ func _Agent_GetClusterAppValues_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Agent_InstallApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InstallAppRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).InstallApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_InstallApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).InstallApp(ctx, req.(*InstallAppRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Agent_ServiceDesc is the grpc.ServiceDesc for Agent service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -769,6 +802,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetClusterAppValues", Handler: _Agent_GetClusterAppValues_Handler, }, + { + MethodName: "InstallApp", + Handler: _Agent_InstallApp_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "agent.proto", diff --git a/capten/agent/pkg/model/payload.go b/capten/agent/pkg/model/payload.go index ada46c17..eddaf637 100644 --- a/capten/agent/pkg/model/payload.go +++ b/capten/agent/pkg/model/payload.go @@ -30,3 +30,21 @@ type Request struct { Timeout int `json:"timeout" required:"true"` Version string `json:"version" required:"true"` } + +type AppConfig struct { + ClusterName string `json:"ClusterName,omitempty"` + AppName string `json:"AppName,omitempty"` + Version string `json:"Version,omitempty"` + Category string `json:"Category,omitempty"` + Description string `json:"Description,omitempty"` + ChartName string `json:"ChartName,omitempty"` + RepoName string `json:"RepoName,omitempty"` + ReleaseName string `json:"ReleaseName,omitempty"` + RepoURL string `json:"RepoURL,omitempty"` + Namespace string `json:"Namespace,omitempty"` + CreateNamespace bool `json:"CreateNamespace"` + PrivilegedNamespace bool `json:"PrivilegedNamespace"` + Icon string `json:"Icon,omitempty"` + LaunchURL string `json:"LaunchURL,omitempty"` + LaunchRedirectURL string `json:"LaunchRedirectURL,omitempty"` +} diff --git a/capten/agent/pkg/workers/climon.go b/capten/agent/pkg/workers/climon.go index 71183d78..b8bb5df3 100644 --- a/capten/agent/pkg/workers/climon.go +++ b/capten/agent/pkg/workers/climon.go @@ -127,3 +127,35 @@ func (c *Climon) getWorkflowInformation(run client.WorkflowRun) error { 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/dockerfiles/server/Dockerfile b/dockerfiles/server/Dockerfile index ec7e8ece..724995d5 100644 --- a/dockerfiles/server/Dockerfile +++ b/dockerfiles/server/Dockerfile @@ -8,6 +8,7 @@ RUN CGO_ENABLED=0 go build -o ./build/server cmd/server/main.go FROM alpine:3.16 RUN apk add --no-cache libc6-compat +COPY --from=builder ./storeconfig storeconfig COPY --from=builder ./build/server server USER 65532:65532 diff --git a/proto/agent.proto b/proto/agent.proto index 2a88c6e8..94c0b0fe 100644 --- a/proto/agent.proto +++ b/proto/agent.proto @@ -37,6 +37,9 @@ service Agent { rpc GetClusterAppConfig (GetClusterAppConfigRequest) returns (GetClusterAppConfigResponse) {} rpc GetClusterAppValues (GetClusterAppValuesRequest) returns (GetClusterAppValuesResponse) {} + + rpc InstallApp (InstallAppRequest) returns (JobResponse) {} + } enum StatusCode { @@ -245,5 +248,9 @@ message AppLaunchConfig { string description = 3; bytes icon = 4; string launchURL = 5; - string launchUIDescription = 6; + string launchRedirectURL = 6; +} + +message InstallAppRequest{ + AppConfig appConfig =1; } diff --git a/proto/server.proto b/proto/server.proto index 68e3bb54..edd02a57 100644 --- a/proto/server.proto +++ b/proto/server.proto @@ -21,6 +21,9 @@ service Server { rpc DeleteStoreApp (DeleteStoreAppRequest) returns (DeleteStoreAppResponse){} rpc GetStoreApp (GetStoreAppRequest) returns (GetStoreAppResponse) {} rpc GetStoreApps (GetStoreAppsRequest) returns (GetStoreAppsResponse) {} + rpc GetStoreAppValues(GetStoreAppValuesRequest) returns (GetStoreAppValuesResponse) {} + rpc DeployStoreApp(DeployStoreAppRequest) returns (DeployStoreAppResponse) {} + } enum StatusCode { @@ -209,6 +212,26 @@ message GetStoreAppsResponse { repeated StoreAppConfig appConfigs = 3; } +message GetStoreAppValuesRequest { + string appName = 1; + string version = 2; +} + +message GetStoreAppValuesResponse{ + StatusCode status = 1; + string statusMessage = 2; + StoreAppConfig appConfig = 3; +} + +message DeployStoreAppRequest{ + StoreAppConfig appConfig = 1; +} + +message DeployStoreAppResponse{ + StatusCode status = 1; + string statusMessage = 2; +} + message StoreAppConfig { string releaseName = 1; string appName = 2; @@ -230,3 +253,4 @@ message StoreAppValues { string overrideValues = 1; string launchUIValues = 2; } + diff --git a/server/.DS_Store b/server/.DS_Store new file mode 100644 index 00000000..5138c564 Binary files /dev/null and b/server/.DS_Store differ diff --git a/server/pkg/api/server.go b/server/pkg/api/server.go index 836a0d5b..a0c4c956 100644 --- a/server/pkg/api/server.go +++ b/server/pkg/api/server.go @@ -13,6 +13,7 @@ import ( const ( organizationIDAttribute = "organizationid" + clusterIDAttribute = "clusterid" ) type Server struct { diff --git a/server/pkg/api/store_apps.go b/server/pkg/api/store_apps.go index c890530c..f68b712e 100644 --- a/server/pkg/api/store_apps.go +++ b/server/pkg/api/store_apps.go @@ -3,6 +3,8 @@ package api import ( "context" + "github.com/kube-tarian/kad/server/pkg/agent" + "github.com/kube-tarian/kad/server/pkg/pb/agentpb" "github.com/kube-tarian/kad/server/pkg/pb/serverpb" "github.com/kube-tarian/kad/server/pkg/types" ) @@ -196,3 +198,118 @@ func (s *Server) GetStoreApps(ctx context.Context, request *serverpb.GetStoreApp AppConfigs: appConfigs, }, nil } + +func (s *Server) GetStoreAppValues(ctx context.Context, request *serverpb.GetStoreAppValuesRequest) ( + *serverpb.GetStoreAppValuesResponse, error) { + if request.AppName == "" || request.Version == "" { + s.log.Errorf("failed to get store app values, %v", "App name/version is missing") + return &serverpb.GetStoreAppValuesResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to get store app values, app name/version is missing", + }, 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.GetStoreAppValuesResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to get store app values", + }, nil + } + + appConfig := &serverpb.StoreAppConfig{ + AppName: config.Name, + Version: config.Version, + 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: config.Icon, + LaunchURL: config.LaunchUIURL, + ReleaseName: config.ReleaseName, + } + + return &serverpb.GetStoreAppValuesResponse{ + Status: serverpb.StatusCode_OK, + StatusMessage: "store app values sucessfuly fetched", + AppConfig: appConfig, + }, nil + +} + +func (s *Server) DeployStoreApp(ctx context.Context, request *serverpb.DeployStoreAppRequest) ( + *serverpb.DeployStoreAppResponse, error) { + if request.AppConfig.AppName == "" || request.AppConfig.Version == "" { + s.log.Errorf("failed to get store app values, %v", "App name/version is missing") + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to get store app values, app name/version is missing", + }, nil + } + + metadataMap := metadataContextToMap(ctx) + orgId := metadataMap[organizationIDAttribute] + if orgId == "" { + s.log.Errorf("organization ID is missing in the request") + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "Organization Id is missing", + }, nil + } + clusterId := metadataMap[clusterIDAttribute] + if orgId == "" { + s.log.Errorf("cluster Id is missing in the request") + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "cluster Id is missing", + }, nil + + } + + agnetHandler := agent.NewAgentHandler(s.log, s.serverStore, s.oryClient) + agent, err := agnetHandler.GetAgent(orgId, clusterId) + if err != nil { + s.log.Errorf("failed to initialize agent, %v", err) + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to deploy the app", + }, nil + } + + 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: []byte(request.AppConfig.Icon), + LaunchURL: request.AppConfig.LaunchURL, + }, + } + + _, err = agent.GetClient().InstallApp(ctx, req) + if err != nil { + s.log.Errorf("failed to deploy app, %v", err) + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_INTERNRAL_ERROR, + StatusMessage: "failed to deploy the app", + }, nil + } + + return &serverpb.DeployStoreAppResponse{ + Status: serverpb.StatusCode_OK, + StatusMessage: "app is successfully deployed", + }, nil + +} diff --git a/server/pkg/config/config.go b/server/pkg/config/config.go index a9d8ca2f..4876a2ca 100644 --- a/server/pkg/config/config.go +++ b/server/pkg/config/config.go @@ -5,12 +5,14 @@ import ( ) type ServiceConfig struct { - ServerHost string `envconfig:"SERVER_HOST" default:"0.0.0.0"` - ServerPort int `envconfig:"SERVER_PORT" default:"8080"` - ServerGRPCHost string `envconfig:"SERVER_GRPC_HOST" default:"0.0.0.0"` - ServerGRPCPort int `envconfig:"SERVER_GRPC_PORT" default:"8081"` - Database string `envconfig:"DATABASE" default:"astra"` - ServiceRegister bool `envconfig:"SERVICE_REGISTER" default:"false"` + ServerHost string `envconfig:"SERVER_HOST" default:"0.0.0.0"` + ServerPort int `envconfig:"SERVER_PORT" default:"8080"` + ServerGRPCHost string `envconfig:"SERVER_GRPC_HOST" default:"0.0.0.0"` + ServerGRPCPort int `envconfig:"SERVER_GRPC_PORT" default:"8081"` + Database string `envconfig:"DATABASE" default:"astra"` + AppStorConfig string `envconfig:"APP_STORE_CONFIG" default:"./storeconfig"` + ReadAppStoreConfig bool `envconfig:"READ_APP_STORE_CONFIG" default:"true"` + ServiceRegister bool `envconfig:"SERVICE_REGISTER" default:"false"` } func GetServiceConfig() (ServiceConfig, error) { diff --git a/server/pkg/pb/agentpb/agent.pb.go b/server/pkg/pb/agentpb/agent.pb.go index 9be18cf0..21da42b3 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.30.0 -// protoc v3.12.4 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: agent.proto package agentpb import ( - any1 "github.com/golang/protobuf/ptypes/any" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" reflect "reflect" sync "sync" ) @@ -960,8 +960,8 @@ type JobRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - Payload *any1.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + 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"` } func (x *JobRequest) Reset() { @@ -1003,7 +1003,7 @@ func (x *JobRequest) GetOperation() string { return "" } -func (x *JobRequest) GetPayload() *any1.Any { +func (x *JobRequest) GetPayload() *anypb.Any { if x != nil { return x.Payload } @@ -2115,12 +2115,12 @@ type AppLaunchConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` - Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` - LaunchUIDescription string `protobuf:"bytes,6,opt,name=launchUIDescription,proto3" json:"launchUIDescription,omitempty"` + ReleaseName string `protobuf:"bytes,1,opt,name=releaseName,proto3" json:"releaseName,omitempty"` + Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Icon []byte `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + LaunchURL string `protobuf:"bytes,5,opt,name=launchURL,proto3" json:"launchURL,omitempty"` + LaunchRedirectURL string `protobuf:"bytes,6,opt,name=launchRedirectURL,proto3" json:"launchRedirectURL,omitempty"` } func (x *AppLaunchConfig) Reset() { @@ -2190,13 +2190,60 @@ func (x *AppLaunchConfig) GetLaunchURL() string { return "" } -func (x *AppLaunchConfig) GetLaunchUIDescription() string { +func (x *AppLaunchConfig) GetLaunchRedirectURL() string { if x != nil { - return x.LaunchUIDescription + return x.LaunchRedirectURL } return "" } +type InstallAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *AppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *InstallAppRequest) Reset() { + *x = InstallAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_agent_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InstallAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InstallAppRequest) ProtoMessage() {} + +func (x *InstallAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_agent_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InstallAppRequest.ProtoReflect.Descriptor instead. +func (*InstallAppRequest) Descriptor() ([]byte, []int) { + return file_agent_proto_rawDescGZIP(), []int{33} +} + +func (x *InstallAppRequest) GetAppConfig() *AppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + var File_agent_proto protoreflect.FileDescriptor var file_agent_proto_rawDesc = []byte{ @@ -2474,7 +2521,7 @@ var file_agent_proto_rawDesc = []byte{ 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, + 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, @@ -2484,109 +2531,117 @@ var file_agent_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x55, 0x49, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, - 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, - 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0xc6, 0x0b, 0x0a, 0x05, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x43, - 0x6c, 0x69, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, - 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x6d, 0x6f, 0x6e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x6e, 0x63, 0x68, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x55, 0x52, 0x4c, 0x22, 0x45, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, + 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x61, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x4e, 0x0a, 0x0a, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x52, 0x41, 0x4c, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, + 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x32, 0x88, 0x0c, 0x0a, 0x05, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 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, + 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, 0x3e, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x12, 0x17, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x12, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, - 0x70, 0x53, 0x53, 0x4f, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x53, 0x53, 0x4f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, + 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, 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, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, + 0x70, 0x70, 0x12, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2602,7 +2657,7 @@ func file_agent_proto_rawDescGZIP() []byte { } var file_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_agent_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: agentpb.StatusCode (*PingRequest)(nil), // 1: agentpb.PingRequest @@ -2638,14 +2693,15 @@ var file_agent_proto_goTypes = []interface{}{ (*AppConfig)(nil), // 31: agentpb.AppConfig (*AppValues)(nil), // 32: agentpb.AppValues (*AppLaunchConfig)(nil), // 33: agentpb.AppLaunchConfig - nil, // 34: agentpb.StoreCredentialRequest.CredentialEntry - (*any1.Any)(nil), // 35: google.protobuf.Any + (*InstallAppRequest)(nil), // 34: agentpb.InstallAppRequest + nil, // 35: agentpb.StoreCredentialRequest.CredentialEntry + (*anypb.Any)(nil), // 36: google.protobuf.Any } var file_agent_proto_depIdxs = []int32{ 0, // 0: agentpb.PingResponse.status:type_name -> agentpb.StatusCode - 34, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry + 35, // 1: agentpb.StoreCredentialRequest.credential:type_name -> agentpb.StoreCredentialRequest.CredentialEntry 0, // 2: agentpb.StoreCredentialResponse.status:type_name -> agentpb.StatusCode - 35, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any + 36, // 3: agentpb.JobRequest.payload:type_name -> google.protobuf.Any 28, // 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 @@ -2661,49 +2717,52 @@ var file_agent_proto_depIdxs = []int32{ 32, // 16: agentpb.SyncAppData.values:type_name -> agentpb.AppValues 31, // 17: agentpb.AppData.config:type_name -> agentpb.AppConfig 30, // 18: agentpb.AppData.status:type_name -> agentpb.AppStatus - 1, // 19: agentpb.Agent.Ping:input_type -> agentpb.PingRequest - 14, // 20: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest - 3, // 21: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest - 5, // 22: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest - 6, // 23: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest - 7, // 24: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest - 8, // 25: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest - 9, // 26: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest - 9, // 27: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest - 10, // 28: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest - 11, // 29: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest - 12, // 30: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest - 13, // 31: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest - 16, // 32: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest - 18, // 33: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest - 20, // 34: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest - 22, // 35: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest - 24, // 36: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest - 26, // 37: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest - 2, // 38: agentpb.Agent.Ping:output_type -> agentpb.PingResponse - 15, // 39: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse - 4, // 40: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse - 15, // 41: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse - 15, // 42: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse - 15, // 43: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse - 15, // 44: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse - 15, // 45: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse - 15, // 46: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse - 15, // 47: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse - 15, // 48: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse - 15, // 49: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse - 15, // 50: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse - 17, // 51: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse - 19, // 52: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse - 21, // 53: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse - 23, // 54: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse - 25, // 55: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse - 27, // 56: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse - 38, // [38:57] is the sub-list for method output_type - 19, // [19:38] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 31, // 19: agentpb.InstallAppRequest.appConfig:type_name -> agentpb.AppConfig + 1, // 20: agentpb.Agent.Ping:input_type -> agentpb.PingRequest + 14, // 21: agentpb.Agent.SubmitJob:input_type -> agentpb.JobRequest + 3, // 22: agentpb.Agent.StoreCredential:input_type -> agentpb.StoreCredentialRequest + 5, // 23: agentpb.Agent.ClimonAppInstall:input_type -> agentpb.ClimonInstallRequest + 6, // 24: agentpb.Agent.ClimonAppDelete:input_type -> agentpb.ClimonDeleteRequest + 7, // 25: agentpb.Agent.DeployerAppInstall:input_type -> agentpb.ApplicationInstallRequest + 8, // 26: agentpb.Agent.DeployerAppDelete:input_type -> agentpb.ApplicationDeleteRequest + 9, // 27: agentpb.Agent.ClusterAdd:input_type -> agentpb.ClusterRequest + 9, // 28: agentpb.Agent.ClusterDelete:input_type -> agentpb.ClusterRequest + 10, // 29: agentpb.Agent.RepositoryAdd:input_type -> agentpb.RepositoryAddRequest + 11, // 30: agentpb.Agent.RepositoryDelete:input_type -> agentpb.RepositoryDeleteRequest + 12, // 31: agentpb.Agent.ProjectAdd:input_type -> agentpb.ProjectAddRequest + 13, // 32: agentpb.Agent.ProjectDelete:input_type -> agentpb.ProjectDeleteRequest + 16, // 33: agentpb.Agent.SyncApp:input_type -> agentpb.SyncAppRequest + 18, // 34: agentpb.Agent.GetClusterApps:input_type -> agentpb.GetClusterAppsRequest + 20, // 35: agentpb.Agent.GetClusterAppLaunches:input_type -> agentpb.GetClusterAppLaunchesRequest + 22, // 36: agentpb.Agent.ConfigureAppSSO:input_type -> agentpb.ConfigureAppSSORequest + 24, // 37: agentpb.Agent.GetClusterAppConfig:input_type -> agentpb.GetClusterAppConfigRequest + 26, // 38: agentpb.Agent.GetClusterAppValues:input_type -> agentpb.GetClusterAppValuesRequest + 34, // 39: agentpb.Agent.InstallApp:input_type -> agentpb.InstallAppRequest + 2, // 40: agentpb.Agent.Ping:output_type -> agentpb.PingResponse + 15, // 41: agentpb.Agent.SubmitJob:output_type -> agentpb.JobResponse + 4, // 42: agentpb.Agent.StoreCredential:output_type -> agentpb.StoreCredentialResponse + 15, // 43: agentpb.Agent.ClimonAppInstall:output_type -> agentpb.JobResponse + 15, // 44: agentpb.Agent.ClimonAppDelete:output_type -> agentpb.JobResponse + 15, // 45: agentpb.Agent.DeployerAppInstall:output_type -> agentpb.JobResponse + 15, // 46: agentpb.Agent.DeployerAppDelete:output_type -> agentpb.JobResponse + 15, // 47: agentpb.Agent.ClusterAdd:output_type -> agentpb.JobResponse + 15, // 48: agentpb.Agent.ClusterDelete:output_type -> agentpb.JobResponse + 15, // 49: agentpb.Agent.RepositoryAdd:output_type -> agentpb.JobResponse + 15, // 50: agentpb.Agent.RepositoryDelete:output_type -> agentpb.JobResponse + 15, // 51: agentpb.Agent.ProjectAdd:output_type -> agentpb.JobResponse + 15, // 52: agentpb.Agent.ProjectDelete:output_type -> agentpb.JobResponse + 17, // 53: agentpb.Agent.SyncApp:output_type -> agentpb.SyncAppResponse + 19, // 54: agentpb.Agent.GetClusterApps:output_type -> agentpb.GetClusterAppsResponse + 21, // 55: agentpb.Agent.GetClusterAppLaunches:output_type -> agentpb.GetClusterAppLaunchesResponse + 23, // 56: agentpb.Agent.ConfigureAppSSO:output_type -> agentpb.ConfigureAppSSOResponse + 25, // 57: agentpb.Agent.GetClusterAppConfig:output_type -> agentpb.GetClusterAppConfigResponse + 27, // 58: agentpb.Agent.GetClusterAppValues:output_type -> agentpb.GetClusterAppValuesResponse + 15, // 59: agentpb.Agent.InstallApp:output_type -> agentpb.JobResponse + 40, // [40:60] is the sub-list for method output_type + 20, // [20:40] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_agent_proto_init() } @@ -3108,6 +3167,18 @@ func file_agent_proto_init() { return nil } } + file_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InstallAppRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3115,7 +3186,7 @@ func file_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 34, + NumMessages: 35, 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 e1a50d99..ecc3b8f4 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 v3.12.4 +// - protoc v4.23.4 // source: agent.proto package agentpb @@ -38,6 +38,7 @@ const ( Agent_ConfigureAppSSO_FullMethodName = "/agentpb.Agent/ConfigureAppSSO" Agent_GetClusterAppConfig_FullMethodName = "/agentpb.Agent/GetClusterAppConfig" Agent_GetClusterAppValues_FullMethodName = "/agentpb.Agent/GetClusterAppValues" + Agent_InstallApp_FullMethodName = "/agentpb.Agent/InstallApp" ) // AgentClient is the client API for Agent service. @@ -63,6 +64,7 @@ type AgentClient interface { ConfigureAppSSO(ctx context.Context, in *ConfigureAppSSORequest, opts ...grpc.CallOption) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(ctx context.Context, in *GetClusterAppConfigRequest, opts ...grpc.CallOption) (*GetClusterAppConfigResponse, error) GetClusterAppValues(ctx context.Context, in *GetClusterAppValuesRequest, opts ...grpc.CallOption) (*GetClusterAppValuesResponse, error) + InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) } type agentClient struct { @@ -244,6 +246,15 @@ func (c *agentClient) GetClusterAppValues(ctx context.Context, in *GetClusterApp return out, nil } +func (c *agentClient) InstallApp(ctx context.Context, in *InstallAppRequest, opts ...grpc.CallOption) (*JobResponse, error) { + out := new(JobResponse) + err := c.cc.Invoke(ctx, Agent_InstallApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer // for forward compatibility @@ -267,6 +278,7 @@ type AgentServer interface { ConfigureAppSSO(context.Context, *ConfigureAppSSORequest) (*ConfigureAppSSOResponse, error) GetClusterAppConfig(context.Context, *GetClusterAppConfigRequest) (*GetClusterAppConfigResponse, error) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) + InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) mustEmbedUnimplementedAgentServer() } @@ -331,6 +343,9 @@ func (UnimplementedAgentServer) GetClusterAppConfig(context.Context, *GetCluster func (UnimplementedAgentServer) GetClusterAppValues(context.Context, *GetClusterAppValuesRequest) (*GetClusterAppValuesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterAppValues not implemented") } +func (UnimplementedAgentServer) InstallApp(context.Context, *InstallAppRequest) (*JobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InstallApp not implemented") +} func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} // UnsafeAgentServer may be embedded to opt out of forward compatibility for this service. @@ -686,6 +701,24 @@ func _Agent_GetClusterAppValues_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Agent_InstallApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InstallAppRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServer).InstallApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Agent_InstallApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServer).InstallApp(ctx, req.(*InstallAppRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Agent_ServiceDesc is the grpc.ServiceDesc for Agent service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -769,6 +802,10 @@ var Agent_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetClusterAppValues", Handler: _Agent_GetClusterAppValues_Handler, }, + { + MethodName: "InstallApp", + Handler: _Agent_InstallApp_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "agent.proto", diff --git a/server/pkg/pb/serverpb/server.pb.go b/server/pkg/pb/serverpb/server.pb.go index 636e4059..1064aa99 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.30.0 -// protoc v3.12.4 +// protoc-gen-go v1.31.0 +// protoc v4.23.4 // source: server.proto package serverpb @@ -1944,6 +1944,226 @@ func (x *GetStoreAppsResponse) GetAppConfigs() []*StoreAppConfig { return nil } +type GetStoreAppValuesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppName string `protobuf:"bytes,1,opt,name=appName,proto3" json:"appName,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *GetStoreAppValuesRequest) Reset() { + *x = GetStoreAppValuesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStoreAppValuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStoreAppValuesRequest) ProtoMessage() {} + +func (x *GetStoreAppValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[30] + 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 GetStoreAppValuesRequest.ProtoReflect.Descriptor instead. +func (*GetStoreAppValuesRequest) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{30} +} + +func (x *GetStoreAppValuesRequest) GetAppName() string { + if x != nil { + return x.AppName + } + return "" +} + +func (x *GetStoreAppValuesRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type GetStoreAppValuesResponse struct { + state protoimpl.MessageState + 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"` +} + +func (x *GetStoreAppValuesResponse) Reset() { + *x = GetStoreAppValuesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStoreAppValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStoreAppValuesResponse) ProtoMessage() {} + +func (x *GetStoreAppValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[31] + 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 GetStoreAppValuesResponse.ProtoReflect.Descriptor instead. +func (*GetStoreAppValuesResponse) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{31} +} + +func (x *GetStoreAppValuesResponse) GetStatus() StatusCode { + if x != nil { + return x.Status + } + return StatusCode_OK +} + +func (x *GetStoreAppValuesResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + +func (x *GetStoreAppValuesResponse) GetAppConfig() *StoreAppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + +type DeployStoreAppRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppConfig *StoreAppConfig `protobuf:"bytes,1,opt,name=appConfig,proto3" json:"appConfig,omitempty"` +} + +func (x *DeployStoreAppRequest) Reset() { + *x = DeployStoreAppRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployStoreAppRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployStoreAppRequest) ProtoMessage() {} + +func (x *DeployStoreAppRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[32] + 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 DeployStoreAppRequest.ProtoReflect.Descriptor instead. +func (*DeployStoreAppRequest) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{32} +} + +func (x *DeployStoreAppRequest) GetAppConfig() *StoreAppConfig { + if x != nil { + return x.AppConfig + } + return nil +} + +type DeployStoreAppResponse struct { + state protoimpl.MessageState + 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"` +} + +func (x *DeployStoreAppResponse) Reset() { + *x = DeployStoreAppResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployStoreAppResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployStoreAppResponse) ProtoMessage() {} + +func (x *DeployStoreAppResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeployStoreAppResponse.ProtoReflect.Descriptor instead. +func (*DeployStoreAppResponse) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{33} +} + +func (x *DeployStoreAppResponse) GetStatus() StatusCode { + if x != nil { + return x.Status + } + return StatusCode_OK +} + +func (x *DeployStoreAppResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + type StoreAppConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1968,7 +2188,7 @@ type StoreAppConfig struct { func (x *StoreAppConfig) Reset() { *x = StoreAppConfig{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1981,7 +2201,7 @@ func (x *StoreAppConfig) String() string { func (*StoreAppConfig) ProtoMessage() {} func (x *StoreAppConfig) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1994,7 +2214,7 @@ func (x *StoreAppConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use StoreAppConfig.ProtoReflect.Descriptor instead. func (*StoreAppConfig) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{30} + return file_server_proto_rawDescGZIP(), []int{34} } func (x *StoreAppConfig) GetReleaseName() string { @@ -2107,7 +2327,7 @@ type StoreAppValues struct { func (x *StoreAppValues) Reset() { *x = StoreAppValues{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2120,7 +2340,7 @@ func (x *StoreAppValues) String() string { func (*StoreAppValues) ProtoMessage() {} func (x *StoreAppValues) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2133,7 +2353,7 @@ func (x *StoreAppValues) ProtoReflect() protoreflect.Message { // Deprecated: Use StoreAppValues.ProtoReflect.Descriptor instead. func (*StoreAppValues) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{31} + return file_server_proto_rawDescGZIP(), []int{35} } func (x *StoreAppValues) GetOverrideValues() string { @@ -2420,123 +2640,162 @@ var file_server_proto_rawDesc = []byte{ 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 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, 0x22, 0xd6, 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, 0x09, 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, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, - 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 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, 0xc0, 0x09, 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, + 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, 0xa7, 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, 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, 0x4f, 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, 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, 0xd6, 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, 0x09, 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, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x70, 0x70, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 0x0a, + 0x0e, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x55, 0x49, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 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, 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, + 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, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, 0x42, + 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, + 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, } @@ -2554,7 +2813,7 @@ func file_server_proto_rawDescGZIP() []byte { } var file_server_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_server_proto_goTypes = []interface{}{ (StatusCode)(0), // 0: serverpb.StatusCode (*NewClusterRegistrationRequest)(nil), // 1: serverpb.NewClusterRegistrationRequest @@ -2587,8 +2846,12 @@ var file_server_proto_goTypes = []interface{}{ (*GetStoreAppResponse)(nil), // 28: serverpb.GetStoreAppResponse (*GetStoreAppsRequest)(nil), // 29: serverpb.GetStoreAppsRequest (*GetStoreAppsResponse)(nil), // 30: serverpb.GetStoreAppsResponse - (*StoreAppConfig)(nil), // 31: serverpb.StoreAppConfig - (*StoreAppValues)(nil), // 32: serverpb.StoreAppValues + (*GetStoreAppValuesRequest)(nil), // 31: serverpb.GetStoreAppValuesRequest + (*GetStoreAppValuesResponse)(nil), // 32: serverpb.GetStoreAppValuesResponse + (*DeployStoreAppRequest)(nil), // 33: serverpb.DeployStoreAppRequest + (*DeployStoreAppResponse)(nil), // 34: serverpb.DeployStoreAppResponse + (*StoreAppConfig)(nil), // 35: serverpb.StoreAppConfig + (*StoreAppValues)(nil), // 36: serverpb.StoreAppValues } var file_server_proto_depIdxs = []int32{ 0, // 0: serverpb.NewClusterRegistrationResponse.status:type_name -> serverpb.StatusCode @@ -2606,48 +2869,56 @@ var file_server_proto_depIdxs = []int32{ 18, // 12: serverpb.GetClusterAppLaunchConfigsResponse.appLaunchConfig:type_name -> serverpb.AppLaunchConfig 19, // 13: serverpb.ClusterInfo.attributes:type_name -> serverpb.ClusterAttribute 18, // 14: serverpb.ClusterInfo.appLaunchConfigs:type_name -> serverpb.AppLaunchConfig - 31, // 15: serverpb.AddStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig - 32, // 16: serverpb.AddStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues + 35, // 15: serverpb.AddStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig + 36, // 16: serverpb.AddStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues 0, // 17: serverpb.AddStoreAppResponse.status:type_name -> serverpb.StatusCode - 31, // 18: serverpb.UpdateStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig - 32, // 19: serverpb.UpdateStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues + 35, // 18: serverpb.UpdateStoreAppRequest.appConfig:type_name -> serverpb.StoreAppConfig + 36, // 19: serverpb.UpdateStoreAppRequest.appValues:type_name -> serverpb.StoreAppValues 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 - 31, // 23: serverpb.GetStoreAppResponse.appConfig:type_name -> serverpb.StoreAppConfig + 35, // 23: serverpb.GetStoreAppResponse.appConfig:type_name -> serverpb.StoreAppConfig 0, // 24: serverpb.GetStoreAppsResponse.status:type_name -> serverpb.StatusCode - 31, // 25: serverpb.GetStoreAppsResponse.appConfigs:type_name -> serverpb.StoreAppConfig - 1, // 26: serverpb.Server.NewClusterRegistration:input_type -> serverpb.NewClusterRegistrationRequest - 3, // 27: serverpb.Server.UpdateClusterRegistration:input_type -> serverpb.UpdateClusterRegistrationRequest - 5, // 28: serverpb.Server.DeleteClusterRegistration:input_type -> serverpb.DeleteClusterRegistrationRequest - 7, // 29: serverpb.Server.GetClusters:input_type -> serverpb.GetClustersRequest - 9, // 30: serverpb.Server.GetCluster:input_type -> serverpb.GetClusterRequest - 11, // 31: serverpb.Server.GetClusterApps:input_type -> serverpb.GetClusterAppsRequest - 15, // 32: serverpb.Server.GetClusterAppLaunchConfigs:input_type -> serverpb.GetClusterAppLaunchConfigsRequest - 13, // 33: serverpb.Server.GetClusterApp:input_type -> serverpb.GetClusterAppRequest - 21, // 34: serverpb.Server.AddStoreApp:input_type -> serverpb.AddStoreAppRequest - 23, // 35: serverpb.Server.UpdateStoreApp:input_type -> serverpb.UpdateStoreAppRequest - 25, // 36: serverpb.Server.DeleteStoreApp:input_type -> serverpb.DeleteStoreAppRequest - 27, // 37: serverpb.Server.GetStoreApp:input_type -> serverpb.GetStoreAppRequest - 29, // 38: serverpb.Server.GetStoreApps:input_type -> serverpb.GetStoreAppsRequest - 2, // 39: serverpb.Server.NewClusterRegistration:output_type -> serverpb.NewClusterRegistrationResponse - 4, // 40: serverpb.Server.UpdateClusterRegistration:output_type -> serverpb.UpdateClusterRegistrationResponse - 6, // 41: serverpb.Server.DeleteClusterRegistration:output_type -> serverpb.DeleteClusterRegistrationResponse - 8, // 42: serverpb.Server.GetClusters:output_type -> serverpb.GetClustersResponse - 10, // 43: serverpb.Server.GetCluster:output_type -> serverpb.GetClusterResponse - 12, // 44: serverpb.Server.GetClusterApps:output_type -> serverpb.GetClusterAppsResponse - 16, // 45: serverpb.Server.GetClusterAppLaunchConfigs:output_type -> serverpb.GetClusterAppLaunchConfigsResponse - 14, // 46: serverpb.Server.GetClusterApp:output_type -> serverpb.GetClusterAppResponse - 22, // 47: serverpb.Server.AddStoreApp:output_type -> serverpb.AddStoreAppResponse - 24, // 48: serverpb.Server.UpdateStoreApp:output_type -> serverpb.UpdateStoreAppRsponse - 26, // 49: serverpb.Server.DeleteStoreApp:output_type -> serverpb.DeleteStoreAppResponse - 28, // 50: serverpb.Server.GetStoreApp:output_type -> serverpb.GetStoreAppResponse - 30, // 51: serverpb.Server.GetStoreApps:output_type -> serverpb.GetStoreAppsResponse - 39, // [39:52] is the sub-list for method output_type - 26, // [26:39] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 35, // 25: serverpb.GetStoreAppsResponse.appConfigs:type_name -> serverpb.StoreAppConfig + 0, // 26: serverpb.GetStoreAppValuesResponse.status:type_name -> serverpb.StatusCode + 35, // 27: serverpb.GetStoreAppValuesResponse.appConfig:type_name -> serverpb.StoreAppConfig + 35, // 28: serverpb.DeployStoreAppRequest.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 + 31, // 43: serverpb.Server.GetStoreAppValues:input_type -> serverpb.GetStoreAppValuesRequest + 33, // 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 + 32, // 58: serverpb.Server.GetStoreAppValues:output_type -> serverpb.GetStoreAppValuesResponse + 34, // 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() } @@ -3017,7 +3288,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StoreAppConfig); i { + switch v := v.(*GetStoreAppValuesRequest); i { case 0: return &v.state case 1: @@ -3029,6 +3300,54 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStoreAppValuesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeployStoreAppRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeployStoreAppResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StoreAppConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreAppValues); i { case 0: return &v.state @@ -3047,7 +3366,7 @@ func file_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_proto_rawDesc, NumEnums: 1, - NumMessages: 32, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/server/pkg/pb/serverpb/server_grpc.pb.go b/server/pkg/pb/serverpb/server_grpc.pb.go index e2428c65..6ca95c98 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 v3.12.4 +// - protoc v4.23.4 // source: server.proto package serverpb @@ -32,6 +32,8 @@ const ( Server_DeleteStoreApp_FullMethodName = "/serverpb.Server/DeleteStoreApp" Server_GetStoreApp_FullMethodName = "/serverpb.Server/GetStoreApp" Server_GetStoreApps_FullMethodName = "/serverpb.Server/GetStoreApps" + Server_GetStoreAppValues_FullMethodName = "/serverpb.Server/GetStoreAppValues" + Server_DeployStoreApp_FullMethodName = "/serverpb.Server/DeployStoreApp" ) // ServerClient is the client API for Server service. @@ -51,6 +53,8 @@ type ServerClient interface { DeleteStoreApp(ctx context.Context, in *DeleteStoreAppRequest, opts ...grpc.CallOption) (*DeleteStoreAppResponse, error) GetStoreApp(ctx context.Context, in *GetStoreAppRequest, opts ...grpc.CallOption) (*GetStoreAppResponse, error) GetStoreApps(ctx context.Context, in *GetStoreAppsRequest, opts ...grpc.CallOption) (*GetStoreAppsResponse, error) + GetStoreAppValues(ctx context.Context, in *GetStoreAppValuesRequest, opts ...grpc.CallOption) (*GetStoreAppValuesResponse, error) + DeployStoreApp(ctx context.Context, in *DeployStoreAppRequest, opts ...grpc.CallOption) (*DeployStoreAppResponse, error) } type serverClient struct { @@ -178,6 +182,24 @@ func (c *serverClient) GetStoreApps(ctx context.Context, in *GetStoreAppsRequest return out, nil } +func (c *serverClient) GetStoreAppValues(ctx context.Context, in *GetStoreAppValuesRequest, opts ...grpc.CallOption) (*GetStoreAppValuesResponse, error) { + out := new(GetStoreAppValuesResponse) + err := c.cc.Invoke(ctx, Server_GetStoreAppValues_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serverClient) DeployStoreApp(ctx context.Context, in *DeployStoreAppRequest, opts ...grpc.CallOption) (*DeployStoreAppResponse, error) { + out := new(DeployStoreAppResponse) + err := c.cc.Invoke(ctx, Server_DeployStoreApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ServerServer is the server API for Server service. // All implementations must embed UnimplementedServerServer // for forward compatibility @@ -195,6 +217,8 @@ type ServerServer interface { DeleteStoreApp(context.Context, *DeleteStoreAppRequest) (*DeleteStoreAppResponse, error) GetStoreApp(context.Context, *GetStoreAppRequest) (*GetStoreAppResponse, error) GetStoreApps(context.Context, *GetStoreAppsRequest) (*GetStoreAppsResponse, error) + GetStoreAppValues(context.Context, *GetStoreAppValuesRequest) (*GetStoreAppValuesResponse, error) + DeployStoreApp(context.Context, *DeployStoreAppRequest) (*DeployStoreAppResponse, error) mustEmbedUnimplementedServerServer() } @@ -241,6 +265,12 @@ func (UnimplementedServerServer) GetStoreApp(context.Context, *GetStoreAppReques func (UnimplementedServerServer) GetStoreApps(context.Context, *GetStoreAppsRequest) (*GetStoreAppsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetStoreApps not implemented") } +func (UnimplementedServerServer) GetStoreAppValues(context.Context, *GetStoreAppValuesRequest) (*GetStoreAppValuesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStoreAppValues not implemented") +} +func (UnimplementedServerServer) DeployStoreApp(context.Context, *DeployStoreAppRequest) (*DeployStoreAppResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeployStoreApp not implemented") +} func (UnimplementedServerServer) mustEmbedUnimplementedServerServer() {} // UnsafeServerServer may be embedded to opt out of forward compatibility for this service. @@ -488,6 +518,42 @@ func _Server_GetStoreApps_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Server_GetStoreAppValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStoreAppValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServerServer).GetStoreAppValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Server_GetStoreAppValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServerServer).GetStoreAppValues(ctx, req.(*GetStoreAppValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Server_DeployStoreApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeployStoreAppRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServerServer).DeployStoreApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Server_DeployStoreApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServerServer).DeployStoreApp(ctx, req.(*DeployStoreAppRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Server_ServiceDesc is the grpc.ServiceDesc for Server service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -547,6 +613,14 @@ var Server_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetStoreApps", Handler: _Server_GetStoreApps_Handler, }, + { + MethodName: "GetStoreAppValues", + Handler: _Server_GetStoreAppValues_Handler, + }, + { + MethodName: "DeployStoreApp", + Handler: _Server_DeployStoreApp_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "server.proto", diff --git a/server/pkg/store/astra/app_store.go b/server/pkg/store/astra/app_store.go index a4dba753..96fe1654 100644 --- a/server/pkg/store/astra/app_store.go +++ b/server/pkg/store/astra/app_store.go @@ -224,3 +224,29 @@ func (a *AstraServerStore) isAppExistsInStore(name, version string) (bool, error return false, nil } + +func (a *AstraServerStore) GetStoreAppValues(name, version string) (*types.AppConfig, error) { + + selectQuery := &pb.Query{ + Cql: fmt.Sprintf(getAppConfigQuery, + a.keyspace, name, version), + } + + response, err := a.c.Session().ExecuteQuery(selectQuery) + if err != nil { + return nil, fmt.Errorf("failed to fetch app store values: %w", err) + } + + result := response.GetResultSet() + + if len(result.Rows) == 0 { + return nil, fmt.Errorf("app: %s not found", name) + } + + config, err := toAppConfig(result.Rows[0]) + if err != nil { + return nil, err + } + + return config, nil +} diff --git a/server/pkg/store/astra/store.go b/server/pkg/store/astra/store.go index eb3466b5..b155e963 100644 --- a/server/pkg/store/astra/store.go +++ b/server/pkg/store/astra/store.go @@ -1,10 +1,16 @@ package astra import ( + "encoding/json" "fmt" + "os" astraclient "github.com/kube-tarian/kad/server/pkg/astra-client" + "github.com/kube-tarian/kad/server/pkg/config" + "github.com/kube-tarian/kad/server/pkg/types" + "github.com/stargate/stargate-grpc-go-client/stargate/pkg/client" pb "github.com/stargate/stargate-grpc-go-client/stargate/pkg/proto" + "gopkg.in/yaml.v3" ) type AstraServerStore struct { @@ -31,6 +37,7 @@ func (a *AstraServerStore) initClient() error { func (a *AstraServerStore) InitializeDb() error { initDbQueries := []string{ fmt.Sprintf(createClusterEndpointTableQuery, a.keyspace), + fmt.Sprintf(createAppConfigTableQuery, a.keyspace), } for _, query := range initDbQueries { @@ -44,5 +51,80 @@ func (a *AstraServerStore) InitializeDb() error { } } + if err := appStoreConfig(a, a.c.Session()); err != nil { + return err + } + + return nil +} + +func appStoreConfig(handler *AstraServerStore, session *client.StargateClient) error { + + cfg, err := config.GetServiceConfig() + if err != nil { + return fmt.Errorf("failed to load service config: %w", err) + } + + if cfg.ReadAppStoreConfig { + configData, err := os.ReadFile(cfg.AppStorConfig + "/" + appStoreConfigFileName) + if err != nil { + return fmt.Errorf("failed to read store config file: %w", err) + } + + var config AppStoreConfig + if err := yaml.Unmarshal(configData, &config); err != nil { + return fmt.Errorf("failed to unmarshall store config file: %w", err) + } + + for _, v := range append(config.CreateStoreApps, config.UpdateStoreApps...) { + appData, err := os.ReadFile(cfg.AppStorConfig + "/" + v + ".yaml") + if err != nil { + return fmt.Errorf("failed to read app store config file: %w. App name - %s", err, v) + } + + var appConfig AppConfig + if err := yaml.Unmarshal(appData, &appConfig); err != nil { + return fmt.Errorf("failed to unmarshall app store config file: %w. App name - %s", err, v) + } + + if appConfig.Name == "" || appConfig.Version == "" { + return fmt.Errorf("failed to add app config to store, %v", "App name/version is missing") + } + + storeAppConfig := &types.StoreAppConfig{ + AppName: appConfig.Name, + Version: appConfig.Version, + Category: appConfig.Category, + Description: appConfig.Description, + ChartName: appConfig.ChartName, + RepoName: appConfig.RepoName, + ReleaseName: appConfig.ReleaseName, + RepoURL: appConfig.RepoURL, + Namespace: appConfig.Namespace, + CreateNamespace: appConfig.CreateNamespace, + PrivilegedNamespace: appConfig.PrivilegedNamespace, + Icon: appConfig.Icon, + LaunchURL: appConfig.LaunchURL, + LaunchRedirectURL: appConfig.LaunchRedirectURL, + } + + overrideValuesJSON, err := json.Marshal(appConfig.OverrideValues) + if err != nil { + return fmt.Errorf("failed to marshall app store config file: %w. App name - %s", err, v) + } + storeAppConfig.OverrideValues = string(overrideValuesJSON) + launchUIValues, err := json.Marshal(appConfig.LaunchUIValues) + if err != nil { + return fmt.Errorf("failed to marshall app store config file: %w. App name - %s", err, v) + } + storeAppConfig.LaunchUIValues = string(launchUIValues) + + if err := handler.AddOrUpdateApp(storeAppConfig); err != nil { + return fmt.Errorf("failed to add app config to store, %v", err) + } + + } + } + return nil } diff --git a/server/pkg/store/astra/type.go b/server/pkg/store/astra/type.go index df60c7a4..9057502e 100644 --- a/server/pkg/store/astra/type.go +++ b/server/pkg/store/astra/type.go @@ -1,6 +1,8 @@ package astra -import pb "github.com/stargate/stargate-grpc-go-client/stargate/pkg/proto" +import ( + pb "github.com/stargate/stargate-grpc-go-client/stargate/pkg/proto" +) const ( createKeyspaceQuery = "CREATE KEYSPACE IF NOT EXISTS %s WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1};" @@ -8,6 +10,10 @@ const ( 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));" ) +const ( + appStoreConfigFileName string = "storeconfig.yaml" +) + var ( UuidSetSpec = &pb.TypeSpec{ Spec: &pb.TypeSpec_Set_{ @@ -21,3 +27,27 @@ var ( }, } ) + +type AppStoreConfig struct { + CreateStoreApps []string `yaml:"CreateStoreApps"` + UpdateStoreApps []string `yaml:"UpdateStoreApps"` +} + +type AppConfig struct { + Name string `yaml:"Name"` + ChartName string `yaml:"ChartName"` + Category string `yaml:"Category"` + Description string `yaml:"Description"` + RepoName string `yaml:"RepoName"` + RepoURL string `yaml:"RepoURL"` + Namespace string `yaml:"Namespace"` + ReleaseName string `yaml:"ReleaseName"` + Version string `yaml:"Version"` + Icon string `yaml:"Icon"` + CreateNamespace bool `yaml:"CreateNamespace"` + PrivilegedNamespace bool `yaml:"PrivilegedNamespace"` + OverrideValues map[string]interface{} `yaml:"OverrideValues"` + LaunchUIValues map[string]interface{} `yaml:"LaunchUIValues"` + LaunchURL string `yaml:"LaunchURL"` + LaunchRedirectURL string `yaml:"LaunchRedirectURL"` +} diff --git a/server/pkg/store/store.go b/server/pkg/store/store.go index a18182cd..ac01eab9 100644 --- a/server/pkg/store/store.go +++ b/server/pkg/store/store.go @@ -19,6 +19,7 @@ type ServerStore interface { DeleteAppInStore(name, version string) error GetAppFromStore(name, version string) (*types.AppConfig, error) GetAppsFromStore() (*[]types.AppConfig, error) + GetStoreAppValues(name, version string) (*types.AppConfig, error) } func NewStore(db string) (ServerStore, error) { diff --git a/server/pkg/types/type.go b/server/pkg/types/type.go index c669763c..1232b7e1 100644 --- a/server/pkg/types/type.go +++ b/server/pkg/types/type.go @@ -70,3 +70,13 @@ type AppConfig struct { LaunchUIValues string `cql:"launch_ui_values" json:"launch_ui_values"` OverrideValues string `cql:"override_values" json:"override_values"` } + +type AppInstallRequest struct { + PluginName string `json:"plugin_name"` + RepoName string `json:"repo_name"` + RepoUrl string `json:"repo_url"` + ChartName string `json:"chart_name"` + Namespace string `json:"namespace"` + ReleaseName string `json:"release_name"` + Timeout int `json:"timeout"` +} diff --git a/server/storeconfig/falco.yaml b/server/storeconfig/falco.yaml new file mode 100644 index 00000000..f650d30b --- /dev/null +++ b/server/storeconfig/falco.yaml @@ -0,0 +1,13 @@ +Name: "falco" +ChartName: "tools/falco" +Category: "Security" +Description: "" +RepoName: "tools" +RepoURL: "https://kube-tarian.github.io/helmrepo-supporting-tools" +Namespace: "falco" +ReleaseName: "falco" +Version: "0.0.1" +CreateNamespace: true +OverrideValues: + driver: + kind: ebpf diff --git a/server/storeconfig/loki.yaml b/server/storeconfig/loki.yaml new file mode 100644 index 00000000..e73e25cd --- /dev/null +++ b/server/storeconfig/loki.yaml @@ -0,0 +1,35 @@ +Name: "loki" +ChartName: "tools/loki-stack" +Category: "Observability" +Description: "" +RepoName: "tools" +RepoURL: "https://kube-tarian.github.io/helmrepo-supporting-tools" +Namespace: "observability" +ReleaseName: "loki" +Version: "0.0.1" +CreateNamespace: true +OverrideValues: + loki: + ingress: + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod-cluster + kubernetes.io/force-ssl-redirect: "true" + kubernetes.io/ssl-redirect: "true" + kubernetes.io/tls-acme: "true" + enabled: true + hosts: + - host: "loki.{{.DomainName}}" + paths: + - "/" + tls: + - hosts: + - "loki.{{.DomainName}}" + secretName: cert-loki + promtail: + config: + clients: + - url: http://localhost:3100/loki/api/v1/push + external_labels: + cluster_name: capten-controlplane + + diff --git a/server/storeconfig/signoz.yaml b/server/storeconfig/signoz.yaml new file mode 100644 index 00000000..7af8b47a --- /dev/null +++ b/server/storeconfig/signoz.yaml @@ -0,0 +1,33 @@ +Name: "signoz" +ChartName: "tools/signoz" +Category: "Observability" +Description: "" +RepoName: "tools" +RepoURL: "https://kube-tarian.github.io/helmrepo-supporting-tools" +Namespace: "observability" +ReleaseName: "signoz" +Version: "0.0.1" +CreateNamespace: true +OverrideValues: + frontend: + ingress: + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod-cluster + kubernetes.io/force-ssl-redirect: "true" + kubernetes.io/ssl-redirect: "true" + kubernetes.io/tls-acme: "true" + enabled": true + hosts: + - host: "signoz.{{.DomainName}}" + paths: + - path: / + pathType: ImplementationSpecific + port: 3301 + tls: + - hosts: + - "signoz.{{.DomainName}}" + secretName: cert-signoz + otelCollector: + ingressRoute: + enabled: true + host: "otelcollector.{{.DomainName}}" diff --git a/server/storeconfig/storeconfig.yaml b/server/storeconfig/storeconfig.yaml new file mode 100644 index 00000000..82f20083 --- /dev/null +++ b/server/storeconfig/storeconfig.yaml @@ -0,0 +1,11 @@ +# On server start, the below apps config file will read and added to the store. +CreateStoreApps: +- falco +- loki +- signoz + +# On server start, the below apps config will be read and updated in the store. +UpdateStoreApps: +- signoz +- loki +- signoz \ No newline at end of file