diff --git a/Makefile b/Makefile index 4494f06a..d007ca2c 100644 --- a/Makefile +++ b/Makefile @@ -45,7 +45,7 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust .PHONY: generate generate: controller-gen openapi-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..." - # $(OPENAPI_GEN) --go-header-file="hack/boilerplate.go.txt" --input-dirs="./..." --output-package="$(PROJECT_DIR)/pkg/apis/openapi" + # $(OPENAPI_GEN) --go-header-file="hack/boilerplate.go.txt" --input-dirs="./pkg/apis/core/..." --output-package="centaurusinfra.io/fornax-serverless/pkg/apis/openapi" .PHONY: fmt fmt: ## Run go fmt against code. @@ -118,6 +118,25 @@ OPENAPI_GEN = $(shell pwd)/bin/openapi-gen openapi-gen: ## Download openapi-gen locally if necessary. $(call go-get-tool,$(OPENAPI_GEN),k8s.io/kube-openapi/cmd/openapi-gen@v0.0.0-20211115234752-e816edb12b65) +PROTOC_GEN = $(shell pwd)/bin/protoc-gen-go +PROTOC_GEN_GRPC = $(shell pwd)/bin/protoc-gen-go-grpc +PROTOC = $(HOME)/.local/bin/protoc +.PHONY: protoc-gen +protoc-gen: ## Download protc-gen locally if necessary. + $(call go-get-tool,$(PROTOC_GEN),google.golang.org/protobuf/cmd/protoc-gen-go@v1.28) + $(call go-get-tool,$(PROTOC_GEN_GRPC),google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2) + $(call get-protoc,$(PROTOC)) + $(PROTOC) -I=./ -I=./vendor \ + --go_out=../.. \ + --go-grpc_out=../../ \ + --go_opt=Mk8s.io/api/core/v1/generated.proto=k8s.io/api/core/v1 \ + --go_opt=Mk8s.io/apimachinery/pkg/api/resource/generated.proto=k8s.io/apimachinery/pkg/api/resource \ + --go_opt=Mk8s.io/apimachinery/pkg/apis/meta/v1/generated.proto=k8s.io/apimachinery/pkg/apis/meta/v1 \ + --go_opt=Mk8s.io/apimachinery/pkg/runtime/generated.proto=k8s.io/apimachinery/pkg/runtime \ + --go_opt=Mk8s.io/apimachinery/pkg/runtime/schema/generated.proto=k8s.io/apimachinery/pkg/runtime/schema \ + --go_opt=Mk8s.io/apimachinery/pkg/util/intstr/generated.proto=k8s.io/apimachinery/pkg/util/intstr \ + pkg/fornaxcore/fornaxcore.proto + KUSTOMIZE = $(shell pwd)/bin/kustomize .PHONY: kustomize kustomize: ## Download kustomize locally if necessary. @@ -141,3 +160,16 @@ GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\ rm -rf $$TMP_DIR ;\ } endef + +define get-protoc +@[ -f $(1) ] || { \ +set -e ;\ +TMP_DIR=$$(mktemp -d) ;\ +cd $$TMP_DIR ;\ +PB_REL="https://github.com/protocolbuffers/protobuf/releases" ;\ +curl -LO $$PB_REL/download/v3.12.1/protoc-3.12.1-linux-x86_64.zip ;\ +echo "get protoc" ;\ +unzip $$TMP_DIR/protoc-3.12.1-linux-x86_64.zip -d $$HOME/.local ;\ +rm -rf $$TMP_DIR ;\ +} +endef diff --git a/go.mod b/go.mod index 3d56cffe..af017a92 100644 --- a/go.mod +++ b/go.mod @@ -3,24 +3,35 @@ module centaurusinfra.io/fornax-serverless go 1.17 require ( + google.golang.org/grpc v1.40.0 + google.golang.org/protobuf v1.27.1 + github.com/golang/protobuf v1.5.2 k8s.io/api v0.23.1 k8s.io/apimachinery v0.23.1 + k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 sigs.k8s.io/apiserver-runtime v1.1.1 ) require ( + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/emicklei/go-restful v2.9.5+incompatible // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/go-logr/logr v1.2.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.19.5 // indirect + github.com/go-openapi/swag v0.19.14 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/go-cmp v0.5.5 // indirect + github.com/google/go-cmp v0.5.6 // indirect github.com/google/gofuzz v1.1.0 // indirect github.com/google/uuid v1.1.2 // indirect github.com/imdario/mergo v0.3.12 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/mailru/easyjson v0.7.6 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -33,7 +44,7 @@ require ( golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect golang.org/x/sys v0.0.0-20211029165221-6e7872819dc8 // indirect golang.org/x/text v0.3.7 // indirect - google.golang.org/protobuf v1.27.1 // indirect + google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/apiserver v0.23.1 // indirect diff --git a/go.sum b/go.sum index 3a792d05..3d849710 100644 --- a/go.sum +++ b/go.sum @@ -398,8 +398,9 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= diff --git a/pkg/fornaxcore/fornaxcore.proto b/pkg/fornaxcore/fornaxcore.proto new file mode 100644 index 00000000..da020811 --- /dev/null +++ b/pkg/fornaxcore/fornaxcore.proto @@ -0,0 +1,160 @@ +syntax = "proto2"; +package centaurusinfra.io.fornaxcore.service; + +option go_package = "centaurusinfra.io/fornax-serverless/pkg/fornaxcore/grpc"; + +import "google/protobuf/empty.proto"; +import "k8s.io/api/core/v1/generated.proto"; + +service FornaxCoreService { + rpc getMessage(google.protobuf.Empty) returns (stream FornaxCoreMessage); + rpc putMessage(FornaxCoreMessage) returns (google.protobuf.Empty); +} + +enum MessageType { + UNSPECIFIED = 0; + FORNAX_CORE_CONFIGURATION = 100; + NODE_CONFIGURATION = 200; + NODE_REGISTER = 201; + NODE_READY = 202; + NODE_STATE = 203; + POD_CREATE = 300; + POD_TERMINATE = 301; + POD_ACTIVE = 302; + POD_STATE = 303; + SESSION_START = 400; + SESSION_CLOSE = 401; + SESSION_STATE = 402; +} + +message FornaxCoreMessage { + required string messageIdentifier = 1; + required string nodeIdentifier = 2; + required MessageType messageType = 3; + oneof MessageBody { + FornaxCoreConfiguration fornaxCoreConfiguration = 100; + NodeConfiguration nodeConfiguration = 200; + NodeRegistry nodeRegistry = 201; + NodeReady nodeReady = 202; + NodeState nodeState= 203; + PodCreate podCreate = 300; + PodTerminate podTerminate = 301; + PodActive podActive = 302; + PodState podState = 303; + SessionStart sessionStart = 400; + SessionClose sessionClose = 401; + SessionState sessionState = 402; + } +} + +message FornaxCore { + required string ip = 1; + required string identifier = 2; +} + +message FornaxCoreConfiguration { + required FornaxCore primary = 1; + repeated FornaxCore standbys = 2; +} + +message NodeConfiguration { + required k8s.io.api.core.v1.NodeSpec nodeSpec = 1; +} + +message NodeRegistry { + required string nodeIp = 1; + required NodeResource resourceLimit = 2; +} + +message NodeResource { + required k8s.io.api.core.v1.NodeStatus status = 1; +} + +message NodeReady { + required string nodeIp = 1; + required NodeResource resourceLimit = 2; +} + +message NodeState { + required string nodeIp = 1; + enum State { + Available = 0; + Problemtic = 10; + ReachResourceLimit = 20; + } + required State state = 2; + required NodeResource nodeResource = 3; + repeated PodState podStates = 4; + repeated SessionState sessionStates = 5; +} + +message PodState { + required string podIdentifier = 1; + required string appIdentifier = 2; + enum State { + Creating = 0; + Standby = 10; + Activating = 20; + Running = 30; + Evacuating = 40; + Terminating = 50; + Terminated = 60; + } + required State state = 3; + required k8s.io.api.core.v1.PodStatus podStatus = 4; + optional PodResource resource = 5; +} + +message PodResource { + optional k8s.io.api.core.v1.ResourceQuotaStatus resourceQuotaStatus = 1; + repeated k8s.io.api.core.v1.AttachedVolume volumes = 2; +} + +message PodCreate { + required string podIdentifier = 1; + required string appIdentifier = 2; + enum CreateMode { + Active = 0; + Standby = 10; + } + required CreateMode mode = 3; + required k8s.io.api.core.v1.PodSpec podSpec = 4; + optional k8s.io.api.core.v1.ConfigMap configMapSpec = 5; +} + +message PodTerminate { + required string podIdentifier = 1; + required string appIdentifier = 2; +} + +message PodActive { + required string podIdentifier = 1; + required string appIdentifier = 2; +} + +message SessionState { + required string sessionIdentifier = 1; + required string podIdentifier = 2; + required string appIdentifier = 3; + enum State { + Starting = 0; + Ready = 10; + Live = 20; + Evacuating = 30; + Terminating = 40; + Terminated = 50; + } + required State state = 4; +} + +message SessionStart { + required string sessionIdentifier = 1; + required string podIdentifier = 2; + required string appIdentifier = 3; +} + +message SessionClose { + required string sessionIdentifier = 1; + required string podIdentifier = 2; + required string appIdentifier = 3; +} diff --git a/pkg/fornaxcore/grpc/fornaxcore.pb.go b/pkg/fornaxcore/grpc/fornaxcore.pb.go new file mode 100644 index 00000000..d54b6c7b --- /dev/null +++ b/pkg/fornaxcore/grpc/fornaxcore.pb.go @@ -0,0 +1,2149 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.12.1 +// source: pkg/fornaxcore/fornaxcore.proto + +package grpc + +import ( + empty "github.com/golang/protobuf/ptypes/empty" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + v1 "k8s.io/api/core/v1" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MessageType int32 + +const ( + MessageType_UNSPECIFIED MessageType = 0 + MessageType_FORNAX_CORE_CONFIGURATION MessageType = 100 + MessageType_NODE_CONFIGURATION MessageType = 200 + MessageType_NODE_REGISTER MessageType = 201 + MessageType_NODE_READY MessageType = 202 + MessageType_NODE_STATE MessageType = 203 + MessageType_POD_CREATE MessageType = 300 + MessageType_POD_TERMINATE MessageType = 301 + MessageType_POD_ACTIVE MessageType = 302 + MessageType_POD_STATE MessageType = 303 + MessageType_SESSION_START MessageType = 400 + MessageType_SESSION_CLOSE MessageType = 401 + MessageType_SESSION_STATE MessageType = 402 +) + +// Enum value maps for MessageType. +var ( + MessageType_name = map[int32]string{ + 0: "UNSPECIFIED", + 100: "FORNAX_CORE_CONFIGURATION", + 200: "NODE_CONFIGURATION", + 201: "NODE_REGISTER", + 202: "NODE_READY", + 203: "NODE_STATE", + 300: "POD_CREATE", + 301: "POD_TERMINATE", + 302: "POD_ACTIVE", + 303: "POD_STATE", + 400: "SESSION_START", + 401: "SESSION_CLOSE", + 402: "SESSION_STATE", + } + MessageType_value = map[string]int32{ + "UNSPECIFIED": 0, + "FORNAX_CORE_CONFIGURATION": 100, + "NODE_CONFIGURATION": 200, + "NODE_REGISTER": 201, + "NODE_READY": 202, + "NODE_STATE": 203, + "POD_CREATE": 300, + "POD_TERMINATE": 301, + "POD_ACTIVE": 302, + "POD_STATE": 303, + "SESSION_START": 400, + "SESSION_CLOSE": 401, + "SESSION_STATE": 402, + } +) + +func (x MessageType) Enum() *MessageType { + p := new(MessageType) + *p = x + return p +} + +func (x MessageType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MessageType) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_fornaxcore_fornaxcore_proto_enumTypes[0].Descriptor() +} + +func (MessageType) Type() protoreflect.EnumType { + return &file_pkg_fornaxcore_fornaxcore_proto_enumTypes[0] +} + +func (x MessageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *MessageType) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = MessageType(num) + return nil +} + +// Deprecated: Use MessageType.Descriptor instead. +func (MessageType) EnumDescriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{0} +} + +type NodeState_State int32 + +const ( + NodeState_Available NodeState_State = 0 + NodeState_Problemtic NodeState_State = 10 + NodeState_ReachResourceLimit NodeState_State = 20 +) + +// Enum value maps for NodeState_State. +var ( + NodeState_State_name = map[int32]string{ + 0: "Available", + 10: "Problemtic", + 20: "ReachResourceLimit", + } + NodeState_State_value = map[string]int32{ + "Available": 0, + "Problemtic": 10, + "ReachResourceLimit": 20, + } +) + +func (x NodeState_State) Enum() *NodeState_State { + p := new(NodeState_State) + *p = x + return p +} + +func (x NodeState_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NodeState_State) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_fornaxcore_fornaxcore_proto_enumTypes[1].Descriptor() +} + +func (NodeState_State) Type() protoreflect.EnumType { + return &file_pkg_fornaxcore_fornaxcore_proto_enumTypes[1] +} + +func (x NodeState_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *NodeState_State) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = NodeState_State(num) + return nil +} + +// Deprecated: Use NodeState_State.Descriptor instead. +func (NodeState_State) EnumDescriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{7, 0} +} + +type PodState_State int32 + +const ( + PodState_Creating PodState_State = 0 + PodState_Standby PodState_State = 10 + PodState_Activating PodState_State = 20 + PodState_Running PodState_State = 30 + PodState_Evacuating PodState_State = 40 + PodState_Terminating PodState_State = 50 + PodState_Terminated PodState_State = 60 +) + +// Enum value maps for PodState_State. +var ( + PodState_State_name = map[int32]string{ + 0: "Creating", + 10: "Standby", + 20: "Activating", + 30: "Running", + 40: "Evacuating", + 50: "Terminating", + 60: "Terminated", + } + PodState_State_value = map[string]int32{ + "Creating": 0, + "Standby": 10, + "Activating": 20, + "Running": 30, + "Evacuating": 40, + "Terminating": 50, + "Terminated": 60, + } +) + +func (x PodState_State) Enum() *PodState_State { + p := new(PodState_State) + *p = x + return p +} + +func (x PodState_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PodState_State) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_fornaxcore_fornaxcore_proto_enumTypes[2].Descriptor() +} + +func (PodState_State) Type() protoreflect.EnumType { + return &file_pkg_fornaxcore_fornaxcore_proto_enumTypes[2] +} + +func (x PodState_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *PodState_State) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = PodState_State(num) + return nil +} + +// Deprecated: Use PodState_State.Descriptor instead. +func (PodState_State) EnumDescriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{8, 0} +} + +type PodCreate_CreateMode int32 + +const ( + PodCreate_Active PodCreate_CreateMode = 0 + PodCreate_Standby PodCreate_CreateMode = 10 +) + +// Enum value maps for PodCreate_CreateMode. +var ( + PodCreate_CreateMode_name = map[int32]string{ + 0: "Active", + 10: "Standby", + } + PodCreate_CreateMode_value = map[string]int32{ + "Active": 0, + "Standby": 10, + } +) + +func (x PodCreate_CreateMode) Enum() *PodCreate_CreateMode { + p := new(PodCreate_CreateMode) + *p = x + return p +} + +func (x PodCreate_CreateMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PodCreate_CreateMode) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_fornaxcore_fornaxcore_proto_enumTypes[3].Descriptor() +} + +func (PodCreate_CreateMode) Type() protoreflect.EnumType { + return &file_pkg_fornaxcore_fornaxcore_proto_enumTypes[3] +} + +func (x PodCreate_CreateMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *PodCreate_CreateMode) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = PodCreate_CreateMode(num) + return nil +} + +// Deprecated: Use PodCreate_CreateMode.Descriptor instead. +func (PodCreate_CreateMode) EnumDescriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{10, 0} +} + +type SessionState_State int32 + +const ( + SessionState_Starting SessionState_State = 0 + SessionState_Ready SessionState_State = 10 + SessionState_Live SessionState_State = 20 + SessionState_Evacuating SessionState_State = 30 + SessionState_Terminating SessionState_State = 40 + SessionState_Terminated SessionState_State = 50 +) + +// Enum value maps for SessionState_State. +var ( + SessionState_State_name = map[int32]string{ + 0: "Starting", + 10: "Ready", + 20: "Live", + 30: "Evacuating", + 40: "Terminating", + 50: "Terminated", + } + SessionState_State_value = map[string]int32{ + "Starting": 0, + "Ready": 10, + "Live": 20, + "Evacuating": 30, + "Terminating": 40, + "Terminated": 50, + } +) + +func (x SessionState_State) Enum() *SessionState_State { + p := new(SessionState_State) + *p = x + return p +} + +func (x SessionState_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SessionState_State) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_fornaxcore_fornaxcore_proto_enumTypes[4].Descriptor() +} + +func (SessionState_State) Type() protoreflect.EnumType { + return &file_pkg_fornaxcore_fornaxcore_proto_enumTypes[4] +} + +func (x SessionState_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *SessionState_State) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = SessionState_State(num) + return nil +} + +// Deprecated: Use SessionState_State.Descriptor instead. +func (SessionState_State) EnumDescriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{13, 0} +} + +type FornaxCoreMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageIdentifier *string `protobuf:"bytes,1,req,name=messageIdentifier" json:"messageIdentifier,omitempty"` + NodeIdentifier *string `protobuf:"bytes,2,req,name=nodeIdentifier" json:"nodeIdentifier,omitempty"` + MessageType *MessageType `protobuf:"varint,3,req,name=messageType,enum=centaurusinfra.io.fornaxcore.service.MessageType" json:"messageType,omitempty"` + // Types that are assignable to MessageBody: + // *FornaxCoreMessage_FornaxCoreConfiguration + // *FornaxCoreMessage_NodeConfiguration + // *FornaxCoreMessage_NodeRegistry + // *FornaxCoreMessage_NodeReady + // *FornaxCoreMessage_NodeState + // *FornaxCoreMessage_PodCreate + // *FornaxCoreMessage_PodTerminate + // *FornaxCoreMessage_PodActive + // *FornaxCoreMessage_PodState + // *FornaxCoreMessage_SessionStart + // *FornaxCoreMessage_SessionClose + // *FornaxCoreMessage_SessionState + MessageBody isFornaxCoreMessage_MessageBody `protobuf_oneof:"MessageBody"` +} + +func (x *FornaxCoreMessage) Reset() { + *x = FornaxCoreMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FornaxCoreMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FornaxCoreMessage) ProtoMessage() {} + +func (x *FornaxCoreMessage) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[0] + 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 FornaxCoreMessage.ProtoReflect.Descriptor instead. +func (*FornaxCoreMessage) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{0} +} + +func (x *FornaxCoreMessage) GetMessageIdentifier() string { + if x != nil && x.MessageIdentifier != nil { + return *x.MessageIdentifier + } + return "" +} + +func (x *FornaxCoreMessage) GetNodeIdentifier() string { + if x != nil && x.NodeIdentifier != nil { + return *x.NodeIdentifier + } + return "" +} + +func (x *FornaxCoreMessage) GetMessageType() MessageType { + if x != nil && x.MessageType != nil { + return *x.MessageType + } + return MessageType_UNSPECIFIED +} + +func (m *FornaxCoreMessage) GetMessageBody() isFornaxCoreMessage_MessageBody { + if m != nil { + return m.MessageBody + } + return nil +} + +func (x *FornaxCoreMessage) GetFornaxCoreConfiguration() *FornaxCoreConfiguration { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_FornaxCoreConfiguration); ok { + return x.FornaxCoreConfiguration + } + return nil +} + +func (x *FornaxCoreMessage) GetNodeConfiguration() *NodeConfiguration { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_NodeConfiguration); ok { + return x.NodeConfiguration + } + return nil +} + +func (x *FornaxCoreMessage) GetNodeRegistry() *NodeRegistry { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_NodeRegistry); ok { + return x.NodeRegistry + } + return nil +} + +func (x *FornaxCoreMessage) GetNodeReady() *NodeReady { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_NodeReady); ok { + return x.NodeReady + } + return nil +} + +func (x *FornaxCoreMessage) GetNodeState() *NodeState { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_NodeState); ok { + return x.NodeState + } + return nil +} + +func (x *FornaxCoreMessage) GetPodCreate() *PodCreate { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_PodCreate); ok { + return x.PodCreate + } + return nil +} + +func (x *FornaxCoreMessage) GetPodTerminate() *PodTerminate { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_PodTerminate); ok { + return x.PodTerminate + } + return nil +} + +func (x *FornaxCoreMessage) GetPodActive() *PodActive { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_PodActive); ok { + return x.PodActive + } + return nil +} + +func (x *FornaxCoreMessage) GetPodState() *PodState { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_PodState); ok { + return x.PodState + } + return nil +} + +func (x *FornaxCoreMessage) GetSessionStart() *SessionStart { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_SessionStart); ok { + return x.SessionStart + } + return nil +} + +func (x *FornaxCoreMessage) GetSessionClose() *SessionClose { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_SessionClose); ok { + return x.SessionClose + } + return nil +} + +func (x *FornaxCoreMessage) GetSessionState() *SessionState { + if x, ok := x.GetMessageBody().(*FornaxCoreMessage_SessionState); ok { + return x.SessionState + } + return nil +} + +type isFornaxCoreMessage_MessageBody interface { + isFornaxCoreMessage_MessageBody() +} + +type FornaxCoreMessage_FornaxCoreConfiguration struct { + FornaxCoreConfiguration *FornaxCoreConfiguration `protobuf:"bytes,100,opt,name=fornaxCoreConfiguration,oneof"` +} + +type FornaxCoreMessage_NodeConfiguration struct { + NodeConfiguration *NodeConfiguration `protobuf:"bytes,200,opt,name=nodeConfiguration,oneof"` +} + +type FornaxCoreMessage_NodeRegistry struct { + NodeRegistry *NodeRegistry `protobuf:"bytes,201,opt,name=nodeRegistry,oneof"` +} + +type FornaxCoreMessage_NodeReady struct { + NodeReady *NodeReady `protobuf:"bytes,202,opt,name=nodeReady,oneof"` +} + +type FornaxCoreMessage_NodeState struct { + NodeState *NodeState `protobuf:"bytes,203,opt,name=nodeState,oneof"` +} + +type FornaxCoreMessage_PodCreate struct { + PodCreate *PodCreate `protobuf:"bytes,300,opt,name=podCreate,oneof"` +} + +type FornaxCoreMessage_PodTerminate struct { + PodTerminate *PodTerminate `protobuf:"bytes,301,opt,name=podTerminate,oneof"` +} + +type FornaxCoreMessage_PodActive struct { + PodActive *PodActive `protobuf:"bytes,302,opt,name=podActive,oneof"` +} + +type FornaxCoreMessage_PodState struct { + PodState *PodState `protobuf:"bytes,303,opt,name=podState,oneof"` +} + +type FornaxCoreMessage_SessionStart struct { + SessionStart *SessionStart `protobuf:"bytes,400,opt,name=sessionStart,oneof"` +} + +type FornaxCoreMessage_SessionClose struct { + SessionClose *SessionClose `protobuf:"bytes,401,opt,name=sessionClose,oneof"` +} + +type FornaxCoreMessage_SessionState struct { + SessionState *SessionState `protobuf:"bytes,402,opt,name=sessionState,oneof"` +} + +func (*FornaxCoreMessage_FornaxCoreConfiguration) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_NodeConfiguration) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_NodeRegistry) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_NodeReady) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_NodeState) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_PodCreate) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_PodTerminate) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_PodActive) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_PodState) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_SessionStart) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_SessionClose) isFornaxCoreMessage_MessageBody() {} + +func (*FornaxCoreMessage_SessionState) isFornaxCoreMessage_MessageBody() {} + +type FornaxCore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ip *string `protobuf:"bytes,1,req,name=ip" json:"ip,omitempty"` + Identifier *string `protobuf:"bytes,2,req,name=identifier" json:"identifier,omitempty"` +} + +func (x *FornaxCore) Reset() { + *x = FornaxCore{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FornaxCore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FornaxCore) ProtoMessage() {} + +func (x *FornaxCore) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[1] + 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 FornaxCore.ProtoReflect.Descriptor instead. +func (*FornaxCore) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{1} +} + +func (x *FornaxCore) GetIp() string { + if x != nil && x.Ip != nil { + return *x.Ip + } + return "" +} + +func (x *FornaxCore) GetIdentifier() string { + if x != nil && x.Identifier != nil { + return *x.Identifier + } + return "" +} + +type FornaxCoreConfiguration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Primary *FornaxCore `protobuf:"bytes,1,req,name=primary" json:"primary,omitempty"` + Standbys []*FornaxCore `protobuf:"bytes,2,rep,name=standbys" json:"standbys,omitempty"` +} + +func (x *FornaxCoreConfiguration) Reset() { + *x = FornaxCoreConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FornaxCoreConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FornaxCoreConfiguration) ProtoMessage() {} + +func (x *FornaxCoreConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FornaxCoreConfiguration.ProtoReflect.Descriptor instead. +func (*FornaxCoreConfiguration) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{2} +} + +func (x *FornaxCoreConfiguration) GetPrimary() *FornaxCore { + if x != nil { + return x.Primary + } + return nil +} + +func (x *FornaxCoreConfiguration) GetStandbys() []*FornaxCore { + if x != nil { + return x.Standbys + } + return nil +} + +type NodeConfiguration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeSpec *v1.NodeSpec `protobuf:"bytes,1,req,name=nodeSpec" json:"nodeSpec,omitempty"` +} + +func (x *NodeConfiguration) Reset() { + *x = NodeConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NodeConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeConfiguration) ProtoMessage() {} + +func (x *NodeConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeConfiguration.ProtoReflect.Descriptor instead. +func (*NodeConfiguration) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{3} +} + +func (x *NodeConfiguration) GetNodeSpec() *v1.NodeSpec { + if x != nil { + return x.NodeSpec + } + return nil +} + +type NodeRegistry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeIp *string `protobuf:"bytes,1,req,name=nodeIp" json:"nodeIp,omitempty"` + ResourceLimit *NodeResource `protobuf:"bytes,2,req,name=resourceLimit" json:"resourceLimit,omitempty"` +} + +func (x *NodeRegistry) Reset() { + *x = NodeRegistry{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NodeRegistry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeRegistry) ProtoMessage() {} + +func (x *NodeRegistry) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeRegistry.ProtoReflect.Descriptor instead. +func (*NodeRegistry) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{4} +} + +func (x *NodeRegistry) GetNodeIp() string { + if x != nil && x.NodeIp != nil { + return *x.NodeIp + } + return "" +} + +func (x *NodeRegistry) GetResourceLimit() *NodeResource { + if x != nil { + return x.ResourceLimit + } + return nil +} + +type NodeResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status *v1.NodeStatus `protobuf:"bytes,1,req,name=status" json:"status,omitempty"` +} + +func (x *NodeResource) Reset() { + *x = NodeResource{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NodeResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeResource) ProtoMessage() {} + +func (x *NodeResource) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeResource.ProtoReflect.Descriptor instead. +func (*NodeResource) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{5} +} + +func (x *NodeResource) GetStatus() *v1.NodeStatus { + if x != nil { + return x.Status + } + return nil +} + +type NodeReady struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeIp *string `protobuf:"bytes,1,req,name=nodeIp" json:"nodeIp,omitempty"` + ResourceLimit *NodeResource `protobuf:"bytes,2,req,name=resourceLimit" json:"resourceLimit,omitempty"` +} + +func (x *NodeReady) Reset() { + *x = NodeReady{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NodeReady) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeReady) ProtoMessage() {} + +func (x *NodeReady) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeReady.ProtoReflect.Descriptor instead. +func (*NodeReady) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{6} +} + +func (x *NodeReady) GetNodeIp() string { + if x != nil && x.NodeIp != nil { + return *x.NodeIp + } + return "" +} + +func (x *NodeReady) GetResourceLimit() *NodeResource { + if x != nil { + return x.ResourceLimit + } + return nil +} + +type NodeState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeIp *string `protobuf:"bytes,1,req,name=nodeIp" json:"nodeIp,omitempty"` + State *NodeState_State `protobuf:"varint,2,req,name=state,enum=centaurusinfra.io.fornaxcore.service.NodeState_State" json:"state,omitempty"` + NodeResource *NodeResource `protobuf:"bytes,3,req,name=nodeResource" json:"nodeResource,omitempty"` + PodStates []*PodState `protobuf:"bytes,4,rep,name=podStates" json:"podStates,omitempty"` + SessionStates []*SessionState `protobuf:"bytes,5,rep,name=sessionStates" json:"sessionStates,omitempty"` +} + +func (x *NodeState) Reset() { + *x = NodeState{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NodeState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeState) ProtoMessage() {} + +func (x *NodeState) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeState.ProtoReflect.Descriptor instead. +func (*NodeState) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{7} +} + +func (x *NodeState) GetNodeIp() string { + if x != nil && x.NodeIp != nil { + return *x.NodeIp + } + return "" +} + +func (x *NodeState) GetState() NodeState_State { + if x != nil && x.State != nil { + return *x.State + } + return NodeState_Available +} + +func (x *NodeState) GetNodeResource() *NodeResource { + if x != nil { + return x.NodeResource + } + return nil +} + +func (x *NodeState) GetPodStates() []*PodState { + if x != nil { + return x.PodStates + } + return nil +} + +func (x *NodeState) GetSessionStates() []*SessionState { + if x != nil { + return x.SessionStates + } + return nil +} + +type PodState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PodIdentifier *string `protobuf:"bytes,1,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,2,req,name=appIdentifier" json:"appIdentifier,omitempty"` + State *PodState_State `protobuf:"varint,3,req,name=state,enum=centaurusinfra.io.fornaxcore.service.PodState_State" json:"state,omitempty"` + PodStatus *v1.PodStatus `protobuf:"bytes,4,req,name=podStatus" json:"podStatus,omitempty"` + Resource *PodResource `protobuf:"bytes,5,opt,name=resource" json:"resource,omitempty"` +} + +func (x *PodState) Reset() { + *x = PodState{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PodState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PodState) ProtoMessage() {} + +func (x *PodState) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[8] + 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 PodState.ProtoReflect.Descriptor instead. +func (*PodState) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{8} +} + +func (x *PodState) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *PodState) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +func (x *PodState) GetState() PodState_State { + if x != nil && x.State != nil { + return *x.State + } + return PodState_Creating +} + +func (x *PodState) GetPodStatus() *v1.PodStatus { + if x != nil { + return x.PodStatus + } + return nil +} + +func (x *PodState) GetResource() *PodResource { + if x != nil { + return x.Resource + } + return nil +} + +type PodResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResourceQuotaStatus *v1.ResourceQuotaStatus `protobuf:"bytes,1,opt,name=resourceQuotaStatus" json:"resourceQuotaStatus,omitempty"` + Volumes []*v1.AttachedVolume `protobuf:"bytes,2,rep,name=volumes" json:"volumes,omitempty"` +} + +func (x *PodResource) Reset() { + *x = PodResource{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PodResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PodResource) ProtoMessage() {} + +func (x *PodResource) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[9] + 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 PodResource.ProtoReflect.Descriptor instead. +func (*PodResource) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{9} +} + +func (x *PodResource) GetResourceQuotaStatus() *v1.ResourceQuotaStatus { + if x != nil { + return x.ResourceQuotaStatus + } + return nil +} + +func (x *PodResource) GetVolumes() []*v1.AttachedVolume { + if x != nil { + return x.Volumes + } + return nil +} + +type PodCreate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PodIdentifier *string `protobuf:"bytes,1,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,2,req,name=appIdentifier" json:"appIdentifier,omitempty"` + Mode *PodCreate_CreateMode `protobuf:"varint,3,req,name=mode,enum=centaurusinfra.io.fornaxcore.service.PodCreate_CreateMode" json:"mode,omitempty"` + PodSpec *v1.PodSpec `protobuf:"bytes,4,req,name=podSpec" json:"podSpec,omitempty"` + ConfigMapSpec *v1.ConfigMap `protobuf:"bytes,5,opt,name=configMapSpec" json:"configMapSpec,omitempty"` +} + +func (x *PodCreate) Reset() { + *x = PodCreate{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PodCreate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PodCreate) ProtoMessage() {} + +func (x *PodCreate) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[10] + 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 PodCreate.ProtoReflect.Descriptor instead. +func (*PodCreate) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{10} +} + +func (x *PodCreate) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *PodCreate) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +func (x *PodCreate) GetMode() PodCreate_CreateMode { + if x != nil && x.Mode != nil { + return *x.Mode + } + return PodCreate_Active +} + +func (x *PodCreate) GetPodSpec() *v1.PodSpec { + if x != nil { + return x.PodSpec + } + return nil +} + +func (x *PodCreate) GetConfigMapSpec() *v1.ConfigMap { + if x != nil { + return x.ConfigMapSpec + } + return nil +} + +type PodTerminate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PodIdentifier *string `protobuf:"bytes,1,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,2,req,name=appIdentifier" json:"appIdentifier,omitempty"` +} + +func (x *PodTerminate) Reset() { + *x = PodTerminate{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PodTerminate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PodTerminate) ProtoMessage() {} + +func (x *PodTerminate) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[11] + 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 PodTerminate.ProtoReflect.Descriptor instead. +func (*PodTerminate) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{11} +} + +func (x *PodTerminate) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *PodTerminate) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +type PodActive struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PodIdentifier *string `protobuf:"bytes,1,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,2,req,name=appIdentifier" json:"appIdentifier,omitempty"` +} + +func (x *PodActive) Reset() { + *x = PodActive{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PodActive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PodActive) ProtoMessage() {} + +func (x *PodActive) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[12] + 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 PodActive.ProtoReflect.Descriptor instead. +func (*PodActive) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{12} +} + +func (x *PodActive) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *PodActive) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +type SessionState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SessionIdentifier *string `protobuf:"bytes,1,req,name=sessionIdentifier" json:"sessionIdentifier,omitempty"` + PodIdentifier *string `protobuf:"bytes,2,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,3,req,name=appIdentifier" json:"appIdentifier,omitempty"` + State *SessionState_State `protobuf:"varint,4,req,name=state,enum=centaurusinfra.io.fornaxcore.service.SessionState_State" json:"state,omitempty"` +} + +func (x *SessionState) Reset() { + *x = SessionState{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SessionState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionState) ProtoMessage() {} + +func (x *SessionState) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[13] + 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 SessionState.ProtoReflect.Descriptor instead. +func (*SessionState) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{13} +} + +func (x *SessionState) GetSessionIdentifier() string { + if x != nil && x.SessionIdentifier != nil { + return *x.SessionIdentifier + } + return "" +} + +func (x *SessionState) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *SessionState) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +func (x *SessionState) GetState() SessionState_State { + if x != nil && x.State != nil { + return *x.State + } + return SessionState_Starting +} + +type SessionStart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SessionIdentifier *string `protobuf:"bytes,1,req,name=sessionIdentifier" json:"sessionIdentifier,omitempty"` + PodIdentifier *string `protobuf:"bytes,2,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,3,req,name=appIdentifier" json:"appIdentifier,omitempty"` +} + +func (x *SessionStart) Reset() { + *x = SessionStart{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SessionStart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionStart) ProtoMessage() {} + +func (x *SessionStart) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[14] + 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 SessionStart.ProtoReflect.Descriptor instead. +func (*SessionStart) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{14} +} + +func (x *SessionStart) GetSessionIdentifier() string { + if x != nil && x.SessionIdentifier != nil { + return *x.SessionIdentifier + } + return "" +} + +func (x *SessionStart) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *SessionStart) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +type SessionClose struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SessionIdentifier *string `protobuf:"bytes,1,req,name=sessionIdentifier" json:"sessionIdentifier,omitempty"` + PodIdentifier *string `protobuf:"bytes,2,req,name=podIdentifier" json:"podIdentifier,omitempty"` + AppIdentifier *string `protobuf:"bytes,3,req,name=appIdentifier" json:"appIdentifier,omitempty"` +} + +func (x *SessionClose) Reset() { + *x = SessionClose{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SessionClose) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionClose) ProtoMessage() {} + +func (x *SessionClose) ProtoReflect() protoreflect.Message { + mi := &file_pkg_fornaxcore_fornaxcore_proto_msgTypes[15] + 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 SessionClose.ProtoReflect.Descriptor instead. +func (*SessionClose) Descriptor() ([]byte, []int) { + return file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP(), []int{15} +} + +func (x *SessionClose) GetSessionIdentifier() string { + if x != nil && x.SessionIdentifier != nil { + return *x.SessionIdentifier + } + return "" +} + +func (x *SessionClose) GetPodIdentifier() string { + if x != nil && x.PodIdentifier != nil { + return *x.PodIdentifier + } + return "" +} + +func (x *SessionClose) GetAppIdentifier() string { + if x != nil && x.AppIdentifier != nil { + return *x.AppIdentifier + } + return "" +} + +var File_pkg_fornaxcore_fornaxcore_proto protoreflect.FileDescriptor + +var file_pkg_fornaxcore_fornaxcore_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x70, 0x6b, 0x67, 0x2f, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, + 0x2f, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x24, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x0a, 0x0a, 0x11, 0x46, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, + 0x0a, 0x11, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, + 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x02, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x65, 0x6e, 0x74, + 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, + 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x79, 0x0a, 0x17, 0x66, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, + 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x66, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, + 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x6f, 0x64, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, + 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0xc9, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, + 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x09, 0x6e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, + 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x48, 0x00, + 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x50, 0x0a, 0x09, 0x6e, + 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x48, 0x00, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, + 0x09, 0x70, 0x6f, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0xac, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, 0x6f, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x59, 0x0a, 0x0c, 0x70, 0x6f, 0x64, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x18, + 0xad, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, + 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, + 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, + 0x64, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x6f, + 0x64, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x09, 0x70, 0x6f, + 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0xae, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, + 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x48, + 0x00, 0x52, 0x09, 0x70, 0x6f, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x4d, 0x0a, 0x08, + 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0xaf, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x90, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, + 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x91, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, + 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, + 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x92, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, + 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x3c, 0x0a, 0x0a, 0x46, + 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, + 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x17, 0x46, 0x6f, + 0x72, 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, + 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, + 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6f, + 0x72, 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x4c, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6e, 0x61, + 0x78, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x73, 0x22, + 0x4d, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0x80, + 0x01, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, + 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x12, 0x58, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, + 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x46, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7d, 0x0a, 0x09, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x12, 0x58, + 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, + 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb0, 0x03, 0x0a, 0x09, 0x4e, 0x6f, 0x64, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x12, 0x4b, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x35, 0x2e, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, + 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x6e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, + 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, + 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, + 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, + 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x74, 0x69, + 0x63, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x14, 0x22, 0xa0, 0x03, 0x0a, 0x08, + 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, + 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, + 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, + 0x02, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x3b, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, + 0x02, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x09, 0x70, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x70, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x10, 0x0a, + 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x14, + 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x1e, 0x12, 0x0e, 0x0a, + 0x0a, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x28, 0x12, 0x0f, 0x0a, + 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x32, 0x12, 0x0e, + 0x0a, 0x0a, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x10, 0x3c, 0x22, 0xa6, + 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x59, + 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x38, 0x73, + 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x07, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0xca, 0x02, 0x0a, 0x09, 0x50, 0x6f, 0x64, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, + 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x12, 0x4e, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0e, 0x32, + 0x3a, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x53, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x02, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x07, 0x70, 0x6f, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x43, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x53, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x53, 0x70, 0x65, 0x63, 0x22, 0x25, 0x0a, + 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x6e, 0x64, + 0x62, 0x79, 0x10, 0x0a, 0x22, 0x5a, 0x0a, 0x0c, 0x50, 0x6f, 0x64, 0x54, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x64, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, 0x28, + 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x22, 0x57, 0x0a, 0x09, 0x50, 0x6f, 0x64, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xb5, 0x02, 0x0a, 0x0c, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, + 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, + 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x02, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x22, 0x5b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, + 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, + 0x65, 0x61, 0x64, 0x79, 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x69, 0x76, 0x65, 0x10, 0x14, + 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x76, 0x61, 0x63, 0x75, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x1e, + 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, + 0x28, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x10, + 0x32, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x11, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, + 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x2c, 0x0a, + 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x70, + 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x02, + 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2a, 0x8e, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x4f, 0x52, 0x4e, + 0x41, 0x58, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x64, 0x12, 0x17, 0x0a, 0x12, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xc8, 0x01, + 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, + 0x52, 0x10, 0xc9, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x59, 0x10, 0xca, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0xcb, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x50, 0x4f, 0x44, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x10, 0xac, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x4f, 0x44, 0x5f, 0x54, + 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x10, 0xad, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x50, + 0x4f, 0x44, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0xae, 0x02, 0x12, 0x0e, 0x0a, 0x09, + 0x50, 0x4f, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xaf, 0x02, 0x12, 0x12, 0x0a, 0x0d, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x90, 0x03, + 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x4f, 0x53, + 0x45, 0x10, 0x91, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x92, 0x03, 0x32, 0xd3, 0x01, 0x0a, 0x11, 0x46, 0x6f, 0x72, + 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, + 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x37, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, + 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6e, + 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, + 0x5d, 0x0a, 0x0a, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x69, + 0x6f, 0x2e, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x39, + 0x5a, 0x37, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x75, 0x72, 0x75, 0x73, 0x69, 0x6e, 0x66, 0x72, 0x61, + 0x2e, 0x69, 0x6f, 0x2f, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x66, 0x6f, 0x72, 0x6e, 0x61, 0x78, + 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x67, 0x72, 0x70, 0x63, +} + +var ( + file_pkg_fornaxcore_fornaxcore_proto_rawDescOnce sync.Once + file_pkg_fornaxcore_fornaxcore_proto_rawDescData = file_pkg_fornaxcore_fornaxcore_proto_rawDesc +) + +func file_pkg_fornaxcore_fornaxcore_proto_rawDescGZIP() []byte { + file_pkg_fornaxcore_fornaxcore_proto_rawDescOnce.Do(func() { + file_pkg_fornaxcore_fornaxcore_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_fornaxcore_fornaxcore_proto_rawDescData) + }) + return file_pkg_fornaxcore_fornaxcore_proto_rawDescData +} + +var file_pkg_fornaxcore_fornaxcore_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_pkg_fornaxcore_fornaxcore_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pkg_fornaxcore_fornaxcore_proto_goTypes = []interface{}{ + (MessageType)(0), // 0: centaurusinfra.io.fornaxcore.service.MessageType + (NodeState_State)(0), // 1: centaurusinfra.io.fornaxcore.service.NodeState.State + (PodState_State)(0), // 2: centaurusinfra.io.fornaxcore.service.PodState.State + (PodCreate_CreateMode)(0), // 3: centaurusinfra.io.fornaxcore.service.PodCreate.CreateMode + (SessionState_State)(0), // 4: centaurusinfra.io.fornaxcore.service.SessionState.State + (*FornaxCoreMessage)(nil), // 5: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage + (*FornaxCore)(nil), // 6: centaurusinfra.io.fornaxcore.service.FornaxCore + (*FornaxCoreConfiguration)(nil), // 7: centaurusinfra.io.fornaxcore.service.FornaxCoreConfiguration + (*NodeConfiguration)(nil), // 8: centaurusinfra.io.fornaxcore.service.NodeConfiguration + (*NodeRegistry)(nil), // 9: centaurusinfra.io.fornaxcore.service.NodeRegistry + (*NodeResource)(nil), // 10: centaurusinfra.io.fornaxcore.service.NodeResource + (*NodeReady)(nil), // 11: centaurusinfra.io.fornaxcore.service.NodeReady + (*NodeState)(nil), // 12: centaurusinfra.io.fornaxcore.service.NodeState + (*PodState)(nil), // 13: centaurusinfra.io.fornaxcore.service.PodState + (*PodResource)(nil), // 14: centaurusinfra.io.fornaxcore.service.PodResource + (*PodCreate)(nil), // 15: centaurusinfra.io.fornaxcore.service.PodCreate + (*PodTerminate)(nil), // 16: centaurusinfra.io.fornaxcore.service.PodTerminate + (*PodActive)(nil), // 17: centaurusinfra.io.fornaxcore.service.PodActive + (*SessionState)(nil), // 18: centaurusinfra.io.fornaxcore.service.SessionState + (*SessionStart)(nil), // 19: centaurusinfra.io.fornaxcore.service.SessionStart + (*SessionClose)(nil), // 20: centaurusinfra.io.fornaxcore.service.SessionClose + (*v1.NodeSpec)(nil), // 21: k8s.io.api.core.v1.NodeSpec + (*v1.NodeStatus)(nil), // 22: k8s.io.api.core.v1.NodeStatus + (*v1.PodStatus)(nil), // 23: k8s.io.api.core.v1.PodStatus + (*v1.ResourceQuotaStatus)(nil), // 24: k8s.io.api.core.v1.ResourceQuotaStatus + (*v1.AttachedVolume)(nil), // 25: k8s.io.api.core.v1.AttachedVolume + (*v1.PodSpec)(nil), // 26: k8s.io.api.core.v1.PodSpec + (*v1.ConfigMap)(nil), // 27: k8s.io.api.core.v1.ConfigMap + (*empty.Empty)(nil), // 28: google.protobuf.Empty +} +var file_pkg_fornaxcore_fornaxcore_proto_depIdxs = []int32{ + 0, // 0: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.messageType:type_name -> centaurusinfra.io.fornaxcore.service.MessageType + 7, // 1: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.fornaxCoreConfiguration:type_name -> centaurusinfra.io.fornaxcore.service.FornaxCoreConfiguration + 8, // 2: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.nodeConfiguration:type_name -> centaurusinfra.io.fornaxcore.service.NodeConfiguration + 9, // 3: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.nodeRegistry:type_name -> centaurusinfra.io.fornaxcore.service.NodeRegistry + 11, // 4: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.nodeReady:type_name -> centaurusinfra.io.fornaxcore.service.NodeReady + 12, // 5: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.nodeState:type_name -> centaurusinfra.io.fornaxcore.service.NodeState + 15, // 6: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.podCreate:type_name -> centaurusinfra.io.fornaxcore.service.PodCreate + 16, // 7: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.podTerminate:type_name -> centaurusinfra.io.fornaxcore.service.PodTerminate + 17, // 8: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.podActive:type_name -> centaurusinfra.io.fornaxcore.service.PodActive + 13, // 9: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.podState:type_name -> centaurusinfra.io.fornaxcore.service.PodState + 19, // 10: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.sessionStart:type_name -> centaurusinfra.io.fornaxcore.service.SessionStart + 20, // 11: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.sessionClose:type_name -> centaurusinfra.io.fornaxcore.service.SessionClose + 18, // 12: centaurusinfra.io.fornaxcore.service.FornaxCoreMessage.sessionState:type_name -> centaurusinfra.io.fornaxcore.service.SessionState + 6, // 13: centaurusinfra.io.fornaxcore.service.FornaxCoreConfiguration.primary:type_name -> centaurusinfra.io.fornaxcore.service.FornaxCore + 6, // 14: centaurusinfra.io.fornaxcore.service.FornaxCoreConfiguration.standbys:type_name -> centaurusinfra.io.fornaxcore.service.FornaxCore + 21, // 15: centaurusinfra.io.fornaxcore.service.NodeConfiguration.nodeSpec:type_name -> k8s.io.api.core.v1.NodeSpec + 10, // 16: centaurusinfra.io.fornaxcore.service.NodeRegistry.resourceLimit:type_name -> centaurusinfra.io.fornaxcore.service.NodeResource + 22, // 17: centaurusinfra.io.fornaxcore.service.NodeResource.status:type_name -> k8s.io.api.core.v1.NodeStatus + 10, // 18: centaurusinfra.io.fornaxcore.service.NodeReady.resourceLimit:type_name -> centaurusinfra.io.fornaxcore.service.NodeResource + 1, // 19: centaurusinfra.io.fornaxcore.service.NodeState.state:type_name -> centaurusinfra.io.fornaxcore.service.NodeState.State + 10, // 20: centaurusinfra.io.fornaxcore.service.NodeState.nodeResource:type_name -> centaurusinfra.io.fornaxcore.service.NodeResource + 13, // 21: centaurusinfra.io.fornaxcore.service.NodeState.podStates:type_name -> centaurusinfra.io.fornaxcore.service.PodState + 18, // 22: centaurusinfra.io.fornaxcore.service.NodeState.sessionStates:type_name -> centaurusinfra.io.fornaxcore.service.SessionState + 2, // 23: centaurusinfra.io.fornaxcore.service.PodState.state:type_name -> centaurusinfra.io.fornaxcore.service.PodState.State + 23, // 24: centaurusinfra.io.fornaxcore.service.PodState.podStatus:type_name -> k8s.io.api.core.v1.PodStatus + 14, // 25: centaurusinfra.io.fornaxcore.service.PodState.resource:type_name -> centaurusinfra.io.fornaxcore.service.PodResource + 24, // 26: centaurusinfra.io.fornaxcore.service.PodResource.resourceQuotaStatus:type_name -> k8s.io.api.core.v1.ResourceQuotaStatus + 25, // 27: centaurusinfra.io.fornaxcore.service.PodResource.volumes:type_name -> k8s.io.api.core.v1.AttachedVolume + 3, // 28: centaurusinfra.io.fornaxcore.service.PodCreate.mode:type_name -> centaurusinfra.io.fornaxcore.service.PodCreate.CreateMode + 26, // 29: centaurusinfra.io.fornaxcore.service.PodCreate.podSpec:type_name -> k8s.io.api.core.v1.PodSpec + 27, // 30: centaurusinfra.io.fornaxcore.service.PodCreate.configMapSpec:type_name -> k8s.io.api.core.v1.ConfigMap + 4, // 31: centaurusinfra.io.fornaxcore.service.SessionState.state:type_name -> centaurusinfra.io.fornaxcore.service.SessionState.State + 28, // 32: centaurusinfra.io.fornaxcore.service.FornaxCoreService.getMessage:input_type -> google.protobuf.Empty + 5, // 33: centaurusinfra.io.fornaxcore.service.FornaxCoreService.putMessage:input_type -> centaurusinfra.io.fornaxcore.service.FornaxCoreMessage + 5, // 34: centaurusinfra.io.fornaxcore.service.FornaxCoreService.getMessage:output_type -> centaurusinfra.io.fornaxcore.service.FornaxCoreMessage + 28, // 35: centaurusinfra.io.fornaxcore.service.FornaxCoreService.putMessage:output_type -> google.protobuf.Empty + 34, // [34:36] is the sub-list for method output_type + 32, // [32:34] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name +} + +func init() { file_pkg_fornaxcore_fornaxcore_proto_init() } +func file_pkg_fornaxcore_fornaxcore_proto_init() { + if File_pkg_fornaxcore_fornaxcore_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FornaxCoreMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FornaxCore); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FornaxCoreConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NodeConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NodeRegistry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NodeResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NodeReady); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NodeState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PodState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PodResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PodCreate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PodTerminate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PodActive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionStart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionClose); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_pkg_fornaxcore_fornaxcore_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*FornaxCoreMessage_FornaxCoreConfiguration)(nil), + (*FornaxCoreMessage_NodeConfiguration)(nil), + (*FornaxCoreMessage_NodeRegistry)(nil), + (*FornaxCoreMessage_NodeReady)(nil), + (*FornaxCoreMessage_NodeState)(nil), + (*FornaxCoreMessage_PodCreate)(nil), + (*FornaxCoreMessage_PodTerminate)(nil), + (*FornaxCoreMessage_PodActive)(nil), + (*FornaxCoreMessage_PodState)(nil), + (*FornaxCoreMessage_SessionStart)(nil), + (*FornaxCoreMessage_SessionClose)(nil), + (*FornaxCoreMessage_SessionState)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pkg_fornaxcore_fornaxcore_proto_rawDesc, + NumEnums: 5, + NumMessages: 16, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pkg_fornaxcore_fornaxcore_proto_goTypes, + DependencyIndexes: file_pkg_fornaxcore_fornaxcore_proto_depIdxs, + EnumInfos: file_pkg_fornaxcore_fornaxcore_proto_enumTypes, + MessageInfos: file_pkg_fornaxcore_fornaxcore_proto_msgTypes, + }.Build() + File_pkg_fornaxcore_fornaxcore_proto = out.File + file_pkg_fornaxcore_fornaxcore_proto_rawDesc = nil + file_pkg_fornaxcore_fornaxcore_proto_goTypes = nil + file_pkg_fornaxcore_fornaxcore_proto_depIdxs = nil +} diff --git a/pkg/fornaxcore/grpc/fornaxcore_grpc.pb.go b/pkg/fornaxcore/grpc/fornaxcore_grpc.pb.go new file mode 100644 index 00000000..e5502d2c --- /dev/null +++ b/pkg/fornaxcore/grpc/fornaxcore_grpc.pb.go @@ -0,0 +1,170 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.12.1 +// source: pkg/fornaxcore/fornaxcore.proto + +package grpc + +import ( + context "context" + empty "github.com/golang/protobuf/ptypes/empty" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// FornaxCoreServiceClient is the client API for FornaxCoreService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type FornaxCoreServiceClient interface { + GetMessage(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (FornaxCoreService_GetMessageClient, error) + PutMessage(ctx context.Context, in *FornaxCoreMessage, opts ...grpc.CallOption) (*empty.Empty, error) +} + +type fornaxCoreServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewFornaxCoreServiceClient(cc grpc.ClientConnInterface) FornaxCoreServiceClient { + return &fornaxCoreServiceClient{cc} +} + +func (c *fornaxCoreServiceClient) GetMessage(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (FornaxCoreService_GetMessageClient, error) { + stream, err := c.cc.NewStream(ctx, &FornaxCoreService_ServiceDesc.Streams[0], "/centaurusinfra.io.fornaxcore.service.FornaxCoreService/getMessage", opts...) + if err != nil { + return nil, err + } + x := &fornaxCoreServiceGetMessageClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type FornaxCoreService_GetMessageClient interface { + Recv() (*FornaxCoreMessage, error) + grpc.ClientStream +} + +type fornaxCoreServiceGetMessageClient struct { + grpc.ClientStream +} + +func (x *fornaxCoreServiceGetMessageClient) Recv() (*FornaxCoreMessage, error) { + m := new(FornaxCoreMessage) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *fornaxCoreServiceClient) PutMessage(ctx context.Context, in *FornaxCoreMessage, opts ...grpc.CallOption) (*empty.Empty, error) { + out := new(empty.Empty) + err := c.cc.Invoke(ctx, "/centaurusinfra.io.fornaxcore.service.FornaxCoreService/putMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// FornaxCoreServiceServer is the server API for FornaxCoreService service. +// All implementations must embed UnimplementedFornaxCoreServiceServer +// for forward compatibility +type FornaxCoreServiceServer interface { + GetMessage(*empty.Empty, FornaxCoreService_GetMessageServer) error + PutMessage(context.Context, *FornaxCoreMessage) (*empty.Empty, error) + mustEmbedUnimplementedFornaxCoreServiceServer() +} + +// UnimplementedFornaxCoreServiceServer must be embedded to have forward compatible implementations. +type UnimplementedFornaxCoreServiceServer struct { +} + +func (UnimplementedFornaxCoreServiceServer) GetMessage(*empty.Empty, FornaxCoreService_GetMessageServer) error { + return status.Errorf(codes.Unimplemented, "method GetMessage not implemented") +} +func (UnimplementedFornaxCoreServiceServer) PutMessage(context.Context, *FornaxCoreMessage) (*empty.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method PutMessage not implemented") +} +func (UnimplementedFornaxCoreServiceServer) mustEmbedUnimplementedFornaxCoreServiceServer() {} + +// UnsafeFornaxCoreServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FornaxCoreServiceServer will +// result in compilation errors. +type UnsafeFornaxCoreServiceServer interface { + mustEmbedUnimplementedFornaxCoreServiceServer() +} + +func RegisterFornaxCoreServiceServer(s grpc.ServiceRegistrar, srv FornaxCoreServiceServer) { + s.RegisterService(&FornaxCoreService_ServiceDesc, srv) +} + +func _FornaxCoreService_GetMessage_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(empty.Empty) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(FornaxCoreServiceServer).GetMessage(m, &fornaxCoreServiceGetMessageServer{stream}) +} + +type FornaxCoreService_GetMessageServer interface { + Send(*FornaxCoreMessage) error + grpc.ServerStream +} + +type fornaxCoreServiceGetMessageServer struct { + grpc.ServerStream +} + +func (x *fornaxCoreServiceGetMessageServer) Send(m *FornaxCoreMessage) error { + return x.ServerStream.SendMsg(m) +} + +func _FornaxCoreService_PutMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FornaxCoreMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FornaxCoreServiceServer).PutMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/centaurusinfra.io.fornaxcore.service.FornaxCoreService/putMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FornaxCoreServiceServer).PutMessage(ctx, req.(*FornaxCoreMessage)) + } + return interceptor(ctx, in, info, handler) +} + +// FornaxCoreService_ServiceDesc is the grpc.ServiceDesc for FornaxCoreService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FornaxCoreService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "centaurusinfra.io.fornaxcore.service.FornaxCoreService", + HandlerType: (*FornaxCoreServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "putMessage", + Handler: _FornaxCoreService_PutMessage_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "getMessage", + Handler: _FornaxCoreService_GetMessage_Handler, + ServerStreams: true, + }, + }, + Metadata: "pkg/fornaxcore/fornaxcore.proto", +}