diff --git a/go/feos-go/Makefile b/go/feos-go/Makefile new file mode 100644 index 0000000..923da13 --- /dev/null +++ b/go/feos-go/Makefile @@ -0,0 +1,119 @@ +# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) +ifeq (,$(shell go env GOBIN)) +GOBIN=$(shell go env GOPATH)/bin +else +GOBIN=$(shell go env GOBIN) +endif + +# Setting SHELL to bash allows bash commands to be executed by recipes. +# This is a requirement for 'setup-envtest.sh' in the test target. +# Options are set to exit when a recipe line exits non-zero or a piped command fails. +SHELL = /usr/bin/env bash -o pipefail +.SHELLFLAGS = -ec + +.PHONY: all +all: build + +##@ General + +# The help target prints out all targets with their descriptions organized +# beneath their categories. The categories are represented by '##@' and the +# target descriptions by '##'. The awk commands is responsible for reading the +# entire set of makefiles included in this invocation, looking for lines of the +# file as xyz: ## something, and then pretty-format the target and help. Then, +# if there's a line with ##@ something, that gets pretty-printed as a category. +# More info on the usage of ANSI control characters for terminal formatting: +# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters +# More info on the awk command: +# http://linuxcommand.org/lc3_adv_awk.php + +.PHONY: help +help: ## Display this help. + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +##@ Development + +.PHONY: generate +generate: goimports protoc-gen-go protoc-gen-go-grpc + PROTOC_GEN_GO=$(PROTOC_GEN_GO) \ + PROTOC_GEN_GO_GRPC=$(PROTOC_GEN_GO_GRPC) \ + ./hack/generate-proto.sh + $(GOIMPORTS) -w ./gen + +.PHONY: fmt +fmt: goimports ## Run goimports against code. + $(GOIMPORTS) -w . + +.PHONY: vet +vet: ## Run go vet against code. + go vet ./... + +.PHONY: lint +lint: golangci-lint ## Run golangci-lint on the code. + $(GOLANGCI_LINT) run ./... + +.PHONY: clean +clean: ## Clean any artifacts that can be regenerated. + rm -rf gen/* + rm -rf bin + +.PHONY: add-license +add-license: addlicense ## Add license headers to all go files. + find . -name '*.go' -exec go run github.com/google/addlicense -c 'IronCore authors' {} + + +.PHONY: check-license +check-license: addlicense ## Check that every file has a license header present. + find . -name '*.go' -exec $(ADDLICENSE) -check -c 'IronCore authors' {} + + +.PHONY: check +check: generate check-license lint test # Generate manifests, code, lint, check licenses, test + +.PHONY: test +test: ## Tests the code in this repository. + go test -v ./... -coverprofile cover.out -ginkgo.label-filter=$(labels) -ginkgo.randomize-all + +##@ Tools + +## Location to install dependencies to +LOCALBIN ?= $(shell pwd)/bin +$(LOCALBIN): + mkdir -p $(LOCALBIN) + +## Tool Binaries +ADDLICENSE ?= $(LOCALBIN)/addlicense +GOIMPORTS ?= $(LOCALBIN)/goimports +GOLANGCI_LINT ?= $(LOCALBIN)/golangci-lint +PROTOC_GEN_GO ?= $(LOCALBIN)/protoc-gen-go +PROTOC_GEN_GO_GRPC ?= $(LOCALBIN)/protoc-gen-go-grpc + +## Tool Versions +ADDLICENSE_VERSION ?= v1.1.1 +GOIMPORTS_VERSION ?= v0.13.0 +GOLANGCI_LINT_VERSION ?= v1.55.2 +PROTOC_GEN_GO_VERSION ?= v1.31.0 +PROTOC_GEN_GO_GRPC_VERSION ?= v1.3.0 + +.PHONY: protoc-gen-go +protoc-gen-go: $(PROTOC_GEN_GO) ## Download protoc-gen-go locally if necessary. +$(PROTOC_GEN_GO): $(LOCALBIN) + test -s $(LOCALBIN)/protoc-gen-go || GOBIN=$(LOCALBIN) go install google.golang.org/protobuf/cmd/protoc-gen-go@$(PROTOC_GEN_GO_VERSION) + +.PHONY: protoc-gen-go-grpc +protoc-gen-go-grpc: $(PROTOC_GEN_GO_GRPC) ## Download protoc-gen-go-grpc locally if necessary. +$(PROTOC_GEN_GO_GRPC): $(LOCALBIN) + test -s $(LOCALBIN)/protoc-gen-go-grpc || GOBIN=$(LOCALBIN) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@$(PROTOC_GEN_GO_GRPC_VERSION) + +.PHONY: addlicense +addlicense: $(ADDLICENSE) ## Download addlicense locally if necessary. +$(ADDLICENSE): $(LOCALBIN) + test -s $(LOCALBIN)/addlicense || GOBIN=$(LOCALBIN) go install github.com/google/addlicense@$(ADDLICENSE_VERSION) + +.PHONY: goimports +goimports: $(GOIMPORTS) ## Download goimports locally if necessary. +$(GOIMPORTS): $(LOCALBIN) + test -s $(LOCALBIN)/goimports || GOBIN=$(LOCALBIN) go install golang.org/x/tools/cmd/goimports@$(GOIMPORTS_VERSION) + +.PHONY: golangci-lint +golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary. +$(GOLANGCI_LINT): $(LOCALBIN) + test -s $(LOCALBIN)/golangci-lint || GOBIN=$(LOCALBIN) go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION) diff --git a/go/feos-go/gen/feos/container/v1/container.pb.go b/go/feos-go/gen/feos/container/v1/container.pb.go new file mode 100644 index 0000000..3cbdbab --- /dev/null +++ b/go/feos-go/gen/feos/container/v1/container.pb.go @@ -0,0 +1,1591 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.12.4 +// source: v1/container.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + + any1 "github.com/golang/protobuf/ptypes/any" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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 ContainerState int32 + +const ( + ContainerState_CONTAINER_STATE_UNSPECIFIED ContainerState = 0 + // The service is pulling the OCI image for the container. + ContainerState_PULLING_IMAGE ContainerState = 1 + // The container's resources have been prepared, and it is ready to be started. + ContainerState_CREATED ContainerState = 2 + // The container is currently running. + ContainerState_RUNNING ContainerState = 3 + // The container process has exited. + ContainerState_STOPPED ContainerState = 4 +) + +// Enum value maps for ContainerState. +var ( + ContainerState_name = map[int32]string{ + 0: "CONTAINER_STATE_UNSPECIFIED", + 1: "PULLING_IMAGE", + 2: "CREATED", + 3: "RUNNING", + 4: "STOPPED", + } + ContainerState_value = map[string]int32{ + "CONTAINER_STATE_UNSPECIFIED": 0, + "PULLING_IMAGE": 1, + "CREATED": 2, + "RUNNING": 3, + "STOPPED": 4, + } +) + +func (x ContainerState) Enum() *ContainerState { + p := new(ContainerState) + *p = x + return p +} + +func (x ContainerState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ContainerState) Descriptor() protoreflect.EnumDescriptor { + return file_v1_container_proto_enumTypes[0].Descriptor() +} + +func (ContainerState) Type() protoreflect.EnumType { + return &file_v1_container_proto_enumTypes[0] +} + +func (x ContainerState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ContainerState.Descriptor instead. +func (ContainerState) EnumDescriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{0} +} + +// Specifies the source stream of the log line. +type LogEntry_Source int32 + +const ( + LogEntry_SOURCE_UNSPECIFIED LogEntry_Source = 0 + LogEntry_STDOUT LogEntry_Source = 1 + LogEntry_STDERR LogEntry_Source = 2 +) + +// Enum value maps for LogEntry_Source. +var ( + LogEntry_Source_name = map[int32]string{ + 0: "SOURCE_UNSPECIFIED", + 1: "STDOUT", + 2: "STDERR", + } + LogEntry_Source_value = map[string]int32{ + "SOURCE_UNSPECIFIED": 0, + "STDOUT": 1, + "STDERR": 2, + } +) + +func (x LogEntry_Source) Enum() *LogEntry_Source { + p := new(LogEntry_Source) + *p = x + return p +} + +func (x LogEntry_Source) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LogEntry_Source) Descriptor() protoreflect.EnumDescriptor { + return file_v1_container_proto_enumTypes[1].Descriptor() +} + +func (LogEntry_Source) Type() protoreflect.EnumType { + return &file_v1_container_proto_enumTypes[1] +} + +func (x LogEntry_Source) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LogEntry_Source.Descriptor instead. +func (LogEntry_Source) EnumDescriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{13, 0} +} + +// Configuration for creating a new container. +type ContainerConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Reference to the OCI image to use for the container's root filesystem + // (e.g., "docker.io/library/alpine:latest"). + ImageRef string `protobuf:"bytes,1,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` + // Optional command to execute inside the container. If not provided, the + // image's default command (from its config) is used. + Command []string `protobuf:"bytes,2,rep,name=command,proto3" json:"command,omitempty"` + // Optional environment variables to set inside the container. + Env map[string]string `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ContainerConfig) Reset() { + *x = ContainerConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContainerConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerConfig) ProtoMessage() {} + +func (x *ContainerConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 ContainerConfig.ProtoReflect.Descriptor instead. +func (*ContainerConfig) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{0} +} + +func (x *ContainerConfig) GetImageRef() string { + if x != nil { + return x.ImageRef + } + return "" +} + +func (x *ContainerConfig) GetCommand() []string { + if x != nil { + return x.Command + } + return nil +} + +func (x *ContainerConfig) GetEnv() map[string]string { + if x != nil { + return x.Env + } + return nil +} + +type CreateContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The configuration for the container. + Config *ContainerConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + // An optional client-provided ID for the container. If not provided, a + // UUID will be generated. + ContainerId *string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3,oneof" json:"container_id,omitempty"` +} + +func (x *CreateContainerRequest) Reset() { + *x = CreateContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateContainerRequest) ProtoMessage() {} + +func (x *CreateContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 CreateContainerRequest.ProtoReflect.Descriptor instead. +func (*CreateContainerRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateContainerRequest) GetConfig() *ContainerConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *CreateContainerRequest) GetContainerId() string { + if x != nil && x.ContainerId != nil { + return *x.ContainerId + } + return "" +} + +type CreateContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The unique ID of the newly created container. + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *CreateContainerResponse) Reset() { + *x = CreateContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateContainerResponse) ProtoMessage() {} + +func (x *CreateContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 CreateContainerResponse.ProtoReflect.Descriptor instead. +func (*CreateContainerResponse) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{2} +} + +func (x *CreateContainerResponse) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type StartContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *StartContainerRequest) Reset() { + *x = StartContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartContainerRequest) ProtoMessage() {} + +func (x *StartContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StartContainerRequest.ProtoReflect.Descriptor instead. +func (*StartContainerRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{3} +} + +func (x *StartContainerRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type StartContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StartContainerResponse) Reset() { + *x = StartContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartContainerResponse) ProtoMessage() {} + +func (x *StartContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StartContainerResponse.ProtoReflect.Descriptor instead. +func (*StartContainerResponse) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{4} +} + +type StopContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // Optional signal to send for stopping the container. Defaults to SIGTERM. + Signal *uint32 `protobuf:"varint,2,opt,name=signal,proto3,oneof" json:"signal,omitempty"` + // Optional timeout in seconds to wait before sending SIGKILL if the container + // has not stopped. + TimeoutSeconds *uint32 `protobuf:"varint,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"` +} + +func (x *StopContainerRequest) Reset() { + *x = StopContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopContainerRequest) ProtoMessage() {} + +func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StopContainerRequest.ProtoReflect.Descriptor instead. +func (*StopContainerRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{5} +} + +func (x *StopContainerRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *StopContainerRequest) GetSignal() uint32 { + if x != nil && x.Signal != nil { + return *x.Signal + } + return 0 +} + +func (x *StopContainerRequest) GetTimeoutSeconds() uint32 { + if x != nil && x.TimeoutSeconds != nil { + return *x.TimeoutSeconds + } + return 0 +} + +type StopContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StopContainerResponse) Reset() { + *x = StopContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopContainerResponse) ProtoMessage() {} + +func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StopContainerResponse.ProtoReflect.Descriptor instead. +func (*StopContainerResponse) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{6} +} + +type GetContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *GetContainerRequest) Reset() { + *x = GetContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetContainerRequest) ProtoMessage() {} + +func (x *GetContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 GetContainerRequest.ProtoReflect.Descriptor instead. +func (*GetContainerRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{7} +} + +func (x *GetContainerRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type ListContainersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListContainersRequest) Reset() { + *x = ListContainersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListContainersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListContainersRequest) ProtoMessage() {} + +func (x *ListContainersRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 ListContainersRequest.ProtoReflect.Descriptor instead. +func (*ListContainersRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{8} +} + +type ListContainersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Containers []*ContainerInfo `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` +} + +func (x *ListContainersResponse) Reset() { + *x = ListContainersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListContainersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListContainersResponse) ProtoMessage() {} + +func (x *ListContainersResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 ListContainersResponse.ProtoReflect.Descriptor instead. +func (*ListContainersResponse) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{9} +} + +func (x *ListContainersResponse) GetContainers() []*ContainerInfo { + if x != nil { + return x.Containers + } + return nil +} + +type DeleteContainerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *DeleteContainerRequest) Reset() { + *x = DeleteContainerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteContainerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteContainerRequest) ProtoMessage() {} + +func (x *DeleteContainerRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 DeleteContainerRequest.ProtoReflect.Descriptor instead. +func (*DeleteContainerRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{10} +} + +func (x *DeleteContainerRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type DeleteContainerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteContainerResponse) Reset() { + *x = DeleteContainerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteContainerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteContainerResponse) ProtoMessage() {} + +func (x *DeleteContainerResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 DeleteContainerResponse.ProtoReflect.Descriptor instead. +func (*DeleteContainerResponse) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{11} +} + +type StreamContainerLogsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // If true, the stream will not close when the end of the log is reached, + // but will wait for new log entries. + Follow bool `protobuf:"varint,2,opt,name=follow,proto3" json:"follow,omitempty"` + // If true, sends all previous logs before streaming new ones. + Tail bool `protobuf:"varint,3,opt,name=tail,proto3" json:"tail,omitempty"` +} + +func (x *StreamContainerLogsRequest) Reset() { + *x = StreamContainerLogsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamContainerLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamContainerLogsRequest) ProtoMessage() {} + +func (x *StreamContainerLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StreamContainerLogsRequest.ProtoReflect.Descriptor instead. +func (*StreamContainerLogsRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{12} +} + +func (x *StreamContainerLogsRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *StreamContainerLogsRequest) GetFollow() bool { + if x != nil { + return x.Follow + } + return false +} + +func (x *StreamContainerLogsRequest) GetTail() bool { + if x != nil { + return x.Tail + } + return false +} + +type LogEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The raw log line from either stdout or stderr. + Line []byte `protobuf:"bytes,1,opt,name=line,proto3" json:"line,omitempty"` + Source LogEntry_Source `protobuf:"varint,2,opt,name=source,proto3,enum=feos.container.v1.LogEntry_Source" json:"source,omitempty"` +} + +func (x *LogEntry) Reset() { + *x = LogEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogEntry) ProtoMessage() {} + +func (x *LogEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 LogEntry.ProtoReflect.Descriptor instead. +func (*LogEntry) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{13} +} + +func (x *LogEntry) GetLine() []byte { + if x != nil { + return x.Line + } + return nil +} + +func (x *LogEntry) GetSource() LogEntry_Source { + if x != nil { + return x.Source + } + return LogEntry_SOURCE_UNSPECIFIED +} + +// Represents information about a single container. +type ContainerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + State ContainerState `protobuf:"varint,2,opt,name=state,proto3,enum=feos.container.v1.ContainerState" json:"state,omitempty"` + Config *ContainerConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` + // The process ID of the container, if it is running. + Pid *int64 `protobuf:"varint,4,opt,name=pid,proto3,oneof" json:"pid,omitempty"` + // The exit code of the container process, if it has stopped. + ExitCode *int32 `protobuf:"varint,5,opt,name=exit_code,json=exitCode,proto3,oneof" json:"exit_code,omitempty"` +} + +func (x *ContainerInfo) Reset() { + *x = ContainerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContainerInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerInfo) ProtoMessage() {} + +func (x *ContainerInfo) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 ContainerInfo.ProtoReflect.Descriptor instead. +func (*ContainerInfo) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{14} +} + +func (x *ContainerInfo) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *ContainerInfo) GetState() ContainerState { + if x != nil { + return x.State + } + return ContainerState_CONTAINER_STATE_UNSPECIFIED +} + +func (x *ContainerInfo) GetConfig() *ContainerConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *ContainerInfo) GetPid() int64 { + if x != nil && x.Pid != nil { + return *x.Pid + } + return 0 +} + +func (x *ContainerInfo) GetExitCode() int32 { + if x != nil && x.ExitCode != nil { + return *x.ExitCode + } + return 0 +} + +type StreamContainerEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the container for which to retrieve events. + // If not provided, the stream will send events for all containers. + ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3,oneof" json:"container_id,omitempty"` +} + +func (x *StreamContainerEventsRequest) Reset() { + *x = StreamContainerEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamContainerEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamContainerEventsRequest) ProtoMessage() {} + +func (x *StreamContainerEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_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 StreamContainerEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamContainerEventsRequest) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{15} +} + +func (x *StreamContainerEventsRequest) GetContainerId() string { + if x != nil && x.ContainerId != nil { + return *x.ContainerId + } + return "" +} + +type ContainerEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // A unique identifier for the event. + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + // The specific event payload. + Data *any1.Any `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *ContainerEvent) Reset() { + *x = ContainerEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContainerEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerEvent) ProtoMessage() {} + +func (x *ContainerEvent) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_proto_msgTypes[16] + 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 ContainerEvent.ProtoReflect.Descriptor instead. +func (*ContainerEvent) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{16} +} + +func (x *ContainerEvent) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *ContainerEvent) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ContainerEvent) GetData() *any1.Any { + if x != nil { + return x.Data + } + return nil +} + +type ContainerStateChangedEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NewState ContainerState `protobuf:"varint,1,opt,name=new_state,json=newState,proto3,enum=feos.container.v1.ContainerState" json:"new_state,omitempty"` + // A human-readable reason for the state change. + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *ContainerStateChangedEvent) Reset() { + *x = ContainerStateChangedEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_container_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContainerStateChangedEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerStateChangedEvent) ProtoMessage() {} + +func (x *ContainerStateChangedEvent) ProtoReflect() protoreflect.Message { + mi := &file_v1_container_proto_msgTypes[17] + 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 ContainerStateChangedEvent.ProtoReflect.Descriptor instead. +func (*ContainerStateChangedEvent) Descriptor() ([]byte, []int) { + return file_v1_container_proto_rawDescGZIP(), []int{17} +} + +func (x *ContainerStateChangedEvent) GetNewState() ContainerState { + if x != nil { + return x.NewState + } + return ContainerState_CONTAINER_STATE_UNSPECIFIED +} + +func (x *ContainerStateChangedEvent) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +var File_v1_container_proto protoreflect.FileDescriptor + +var file_v1_container_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xbf, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, + 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x3d, 0x0a, + 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, + 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x1a, 0x36, 0x0a, 0x08, + 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8d, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x18, + 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f, + 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0e, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x17, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, + 0x64, 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5a, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, + 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x94, 0x01, 0x0a, 0x08, + 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3a, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, + 0x44, 0x4f, 0x55, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x44, 0x45, 0x52, 0x52, + 0x10, 0x02, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x0a, 0x03, + 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x57, 0x0a, 0x1c, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x22, 0x6d, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x74, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a, 0x6b, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, + 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, + 0x50, 0x55, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x32, 0xc6, 0x06, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x29, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0d, + 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x27, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x58, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x12, 0x26, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x65, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x13, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x30, 0x01, + 0x12, 0x6d, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x42, + 0x3f, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x72, + 0x6f, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, + 0x67, 0x6f, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x66, + 0x65, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_v1_container_proto_rawDescOnce sync.Once + file_v1_container_proto_rawDescData = file_v1_container_proto_rawDesc +) + +func file_v1_container_proto_rawDescGZIP() []byte { + file_v1_container_proto_rawDescOnce.Do(func() { + file_v1_container_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_container_proto_rawDescData) + }) + return file_v1_container_proto_rawDescData +} + +var file_v1_container_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_v1_container_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_v1_container_proto_goTypes = []interface{}{ + (ContainerState)(0), // 0: feos.container.v1.ContainerState + (LogEntry_Source)(0), // 1: feos.container.v1.LogEntry.Source + (*ContainerConfig)(nil), // 2: feos.container.v1.ContainerConfig + (*CreateContainerRequest)(nil), // 3: feos.container.v1.CreateContainerRequest + (*CreateContainerResponse)(nil), // 4: feos.container.v1.CreateContainerResponse + (*StartContainerRequest)(nil), // 5: feos.container.v1.StartContainerRequest + (*StartContainerResponse)(nil), // 6: feos.container.v1.StartContainerResponse + (*StopContainerRequest)(nil), // 7: feos.container.v1.StopContainerRequest + (*StopContainerResponse)(nil), // 8: feos.container.v1.StopContainerResponse + (*GetContainerRequest)(nil), // 9: feos.container.v1.GetContainerRequest + (*ListContainersRequest)(nil), // 10: feos.container.v1.ListContainersRequest + (*ListContainersResponse)(nil), // 11: feos.container.v1.ListContainersResponse + (*DeleteContainerRequest)(nil), // 12: feos.container.v1.DeleteContainerRequest + (*DeleteContainerResponse)(nil), // 13: feos.container.v1.DeleteContainerResponse + (*StreamContainerLogsRequest)(nil), // 14: feos.container.v1.StreamContainerLogsRequest + (*LogEntry)(nil), // 15: feos.container.v1.LogEntry + (*ContainerInfo)(nil), // 16: feos.container.v1.ContainerInfo + (*StreamContainerEventsRequest)(nil), // 17: feos.container.v1.StreamContainerEventsRequest + (*ContainerEvent)(nil), // 18: feos.container.v1.ContainerEvent + (*ContainerStateChangedEvent)(nil), // 19: feos.container.v1.ContainerStateChangedEvent + nil, // 20: feos.container.v1.ContainerConfig.EnvEntry + (*any1.Any)(nil), // 21: google.protobuf.Any +} +var file_v1_container_proto_depIdxs = []int32{ + 20, // 0: feos.container.v1.ContainerConfig.env:type_name -> feos.container.v1.ContainerConfig.EnvEntry + 2, // 1: feos.container.v1.CreateContainerRequest.config:type_name -> feos.container.v1.ContainerConfig + 16, // 2: feos.container.v1.ListContainersResponse.containers:type_name -> feos.container.v1.ContainerInfo + 1, // 3: feos.container.v1.LogEntry.source:type_name -> feos.container.v1.LogEntry.Source + 0, // 4: feos.container.v1.ContainerInfo.state:type_name -> feos.container.v1.ContainerState + 2, // 5: feos.container.v1.ContainerInfo.config:type_name -> feos.container.v1.ContainerConfig + 21, // 6: feos.container.v1.ContainerEvent.data:type_name -> google.protobuf.Any + 0, // 7: feos.container.v1.ContainerStateChangedEvent.new_state:type_name -> feos.container.v1.ContainerState + 3, // 8: feos.container.v1.ContainerService.CreateContainer:input_type -> feos.container.v1.CreateContainerRequest + 5, // 9: feos.container.v1.ContainerService.StartContainer:input_type -> feos.container.v1.StartContainerRequest + 7, // 10: feos.container.v1.ContainerService.StopContainer:input_type -> feos.container.v1.StopContainerRequest + 9, // 11: feos.container.v1.ContainerService.GetContainer:input_type -> feos.container.v1.GetContainerRequest + 10, // 12: feos.container.v1.ContainerService.ListContainers:input_type -> feos.container.v1.ListContainersRequest + 12, // 13: feos.container.v1.ContainerService.DeleteContainer:input_type -> feos.container.v1.DeleteContainerRequest + 14, // 14: feos.container.v1.ContainerService.StreamContainerLogs:input_type -> feos.container.v1.StreamContainerLogsRequest + 17, // 15: feos.container.v1.ContainerService.StreamContainerEvents:input_type -> feos.container.v1.StreamContainerEventsRequest + 4, // 16: feos.container.v1.ContainerService.CreateContainer:output_type -> feos.container.v1.CreateContainerResponse + 6, // 17: feos.container.v1.ContainerService.StartContainer:output_type -> feos.container.v1.StartContainerResponse + 8, // 18: feos.container.v1.ContainerService.StopContainer:output_type -> feos.container.v1.StopContainerResponse + 16, // 19: feos.container.v1.ContainerService.GetContainer:output_type -> feos.container.v1.ContainerInfo + 11, // 20: feos.container.v1.ContainerService.ListContainers:output_type -> feos.container.v1.ListContainersResponse + 13, // 21: feos.container.v1.ContainerService.DeleteContainer:output_type -> feos.container.v1.DeleteContainerResponse + 15, // 22: feos.container.v1.ContainerService.StreamContainerLogs:output_type -> feos.container.v1.LogEntry + 18, // 23: feos.container.v1.ContainerService.StreamContainerEvents:output_type -> feos.container.v1.ContainerEvent + 16, // [16:24] is the sub-list for method output_type + 8, // [8:16] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_v1_container_proto_init() } +func file_v1_container_proto_init() { + if File_v1_container_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_container_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContainerConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateContainerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateContainerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartContainerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopContainerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopContainerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetContainerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListContainersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListContainersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteContainerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteContainerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamContainerLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContainerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamContainerEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContainerEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_container_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContainerStateChangedEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_v1_container_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_v1_container_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_v1_container_proto_msgTypes[14].OneofWrappers = []interface{}{} + file_v1_container_proto_msgTypes[15].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_container_proto_rawDesc, + NumEnums: 2, + NumMessages: 19, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v1_container_proto_goTypes, + DependencyIndexes: file_v1_container_proto_depIdxs, + EnumInfos: file_v1_container_proto_enumTypes, + MessageInfos: file_v1_container_proto_msgTypes, + }.Build() + File_v1_container_proto = out.File + file_v1_container_proto_rawDesc = nil + file_v1_container_proto_goTypes = nil + file_v1_container_proto_depIdxs = nil +} diff --git a/go/feos-go/gen/feos/container/v1/container_grpc.pb.go b/go/feos-go/gen/feos/container/v1/container_grpc.pb.go new file mode 100644 index 0000000..f731b33 --- /dev/null +++ b/go/feos-go/gen/feos/container/v1/container_grpc.pb.go @@ -0,0 +1,454 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.12.4 +// source: v1/container.proto + +package v1 + +import ( + context "context" + + 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 + +const ( + ContainerService_CreateContainer_FullMethodName = "/feos.container.v1.ContainerService/CreateContainer" + ContainerService_StartContainer_FullMethodName = "/feos.container.v1.ContainerService/StartContainer" + ContainerService_StopContainer_FullMethodName = "/feos.container.v1.ContainerService/StopContainer" + ContainerService_GetContainer_FullMethodName = "/feos.container.v1.ContainerService/GetContainer" + ContainerService_ListContainers_FullMethodName = "/feos.container.v1.ContainerService/ListContainers" + ContainerService_DeleteContainer_FullMethodName = "/feos.container.v1.ContainerService/DeleteContainer" + ContainerService_StreamContainerLogs_FullMethodName = "/feos.container.v1.ContainerService/StreamContainerLogs" + ContainerService_StreamContainerEvents_FullMethodName = "/feos.container.v1.ContainerService/StreamContainerEvents" +) + +// ContainerServiceClient is the client API for ContainerService 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 ContainerServiceClient interface { + // Creates a new container from an OCI image but does not start it. + // This call is asynchronous. It will first trigger an image pull if the + // image is not available locally. The service returns a container_id immediately. + // Clients can then use StreamContainerEvents to track the progress from + // "PULLING_IMAGE" to "CREATED". + CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error) + // Starts a previously created container. + StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) + // Stops a running container by sending it a configurable signal. + StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) + // Retrieves detailed information about a specific container. + GetContainer(ctx context.Context, in *GetContainerRequest, opts ...grpc.CallOption) (*ContainerInfo, error) + // Lists all containers currently managed by the service. + ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) + // Deletes a container, cleaning up all associated resources including its + // root filesystem. The container must be in a stopped state. + DeleteContainer(ctx context.Context, in *DeleteContainerRequest, opts ...grpc.CallOption) (*DeleteContainerResponse, error) + // Streams logs (stdout and stderr) from a running or stopped container. + StreamContainerLogs(ctx context.Context, in *StreamContainerLogsRequest, opts ...grpc.CallOption) (ContainerService_StreamContainerLogsClient, error) + // Streams lifecycle events for one or all containers. This is useful for + // tracking the status of asynchronous operations like CreateContainer. + StreamContainerEvents(ctx context.Context, in *StreamContainerEventsRequest, opts ...grpc.CallOption) (ContainerService_StreamContainerEventsClient, error) +} + +type containerServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewContainerServiceClient(cc grpc.ClientConnInterface) ContainerServiceClient { + return &containerServiceClient{cc} +} + +func (c *containerServiceClient) CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error) { + out := new(CreateContainerResponse) + err := c.cc.Invoke(ctx, ContainerService_CreateContainer_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) { + out := new(StartContainerResponse) + err := c.cc.Invoke(ctx, ContainerService_StartContainer_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) { + out := new(StopContainerResponse) + err := c.cc.Invoke(ctx, ContainerService_StopContainer_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) GetContainer(ctx context.Context, in *GetContainerRequest, opts ...grpc.CallOption) (*ContainerInfo, error) { + out := new(ContainerInfo) + err := c.cc.Invoke(ctx, ContainerService_GetContainer_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) { + out := new(ListContainersResponse) + err := c.cc.Invoke(ctx, ContainerService_ListContainers_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) DeleteContainer(ctx context.Context, in *DeleteContainerRequest, opts ...grpc.CallOption) (*DeleteContainerResponse, error) { + out := new(DeleteContainerResponse) + err := c.cc.Invoke(ctx, ContainerService_DeleteContainer_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerServiceClient) StreamContainerLogs(ctx context.Context, in *StreamContainerLogsRequest, opts ...grpc.CallOption) (ContainerService_StreamContainerLogsClient, error) { + stream, err := c.cc.NewStream(ctx, &ContainerService_ServiceDesc.Streams[0], ContainerService_StreamContainerLogs_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &containerServiceStreamContainerLogsClient{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 ContainerService_StreamContainerLogsClient interface { + Recv() (*LogEntry, error) + grpc.ClientStream +} + +type containerServiceStreamContainerLogsClient struct { + grpc.ClientStream +} + +func (x *containerServiceStreamContainerLogsClient) Recv() (*LogEntry, error) { + m := new(LogEntry) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *containerServiceClient) StreamContainerEvents(ctx context.Context, in *StreamContainerEventsRequest, opts ...grpc.CallOption) (ContainerService_StreamContainerEventsClient, error) { + stream, err := c.cc.NewStream(ctx, &ContainerService_ServiceDesc.Streams[1], ContainerService_StreamContainerEvents_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &containerServiceStreamContainerEventsClient{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 ContainerService_StreamContainerEventsClient interface { + Recv() (*ContainerEvent, error) + grpc.ClientStream +} + +type containerServiceStreamContainerEventsClient struct { + grpc.ClientStream +} + +func (x *containerServiceStreamContainerEventsClient) Recv() (*ContainerEvent, error) { + m := new(ContainerEvent) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// ContainerServiceServer is the server API for ContainerService service. +// All implementations must embed UnimplementedContainerServiceServer +// for forward compatibility +type ContainerServiceServer interface { + // Creates a new container from an OCI image but does not start it. + // This call is asynchronous. It will first trigger an image pull if the + // image is not available locally. The service returns a container_id immediately. + // Clients can then use StreamContainerEvents to track the progress from + // "PULLING_IMAGE" to "CREATED". + CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error) + // Starts a previously created container. + StartContainer(context.Context, *StartContainerRequest) (*StartContainerResponse, error) + // Stops a running container by sending it a configurable signal. + StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) + // Retrieves detailed information about a specific container. + GetContainer(context.Context, *GetContainerRequest) (*ContainerInfo, error) + // Lists all containers currently managed by the service. + ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error) + // Deletes a container, cleaning up all associated resources including its + // root filesystem. The container must be in a stopped state. + DeleteContainer(context.Context, *DeleteContainerRequest) (*DeleteContainerResponse, error) + // Streams logs (stdout and stderr) from a running or stopped container. + StreamContainerLogs(*StreamContainerLogsRequest, ContainerService_StreamContainerLogsServer) error + // Streams lifecycle events for one or all containers. This is useful for + // tracking the status of asynchronous operations like CreateContainer. + StreamContainerEvents(*StreamContainerEventsRequest, ContainerService_StreamContainerEventsServer) error + mustEmbedUnimplementedContainerServiceServer() +} + +// UnimplementedContainerServiceServer must be embedded to have forward compatible implementations. +type UnimplementedContainerServiceServer struct { +} + +func (UnimplementedContainerServiceServer) CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateContainer not implemented") +} +func (UnimplementedContainerServiceServer) StartContainer(context.Context, *StartContainerRequest) (*StartContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartContainer not implemented") +} +func (UnimplementedContainerServiceServer) StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopContainer not implemented") +} +func (UnimplementedContainerServiceServer) GetContainer(context.Context, *GetContainerRequest) (*ContainerInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetContainer not implemented") +} +func (UnimplementedContainerServiceServer) ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListContainers not implemented") +} +func (UnimplementedContainerServiceServer) DeleteContainer(context.Context, *DeleteContainerRequest) (*DeleteContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteContainer not implemented") +} +func (UnimplementedContainerServiceServer) StreamContainerLogs(*StreamContainerLogsRequest, ContainerService_StreamContainerLogsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamContainerLogs not implemented") +} +func (UnimplementedContainerServiceServer) StreamContainerEvents(*StreamContainerEventsRequest, ContainerService_StreamContainerEventsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamContainerEvents not implemented") +} +func (UnimplementedContainerServiceServer) mustEmbedUnimplementedContainerServiceServer() {} + +// UnsafeContainerServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ContainerServiceServer will +// result in compilation errors. +type UnsafeContainerServiceServer interface { + mustEmbedUnimplementedContainerServiceServer() +} + +func RegisterContainerServiceServer(s grpc.ServiceRegistrar, srv ContainerServiceServer) { + s.RegisterService(&ContainerService_ServiceDesc, srv) +} + +func _ContainerService_CreateContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).CreateContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_CreateContainer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).CreateContainer(ctx, req.(*CreateContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_StartContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).StartContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_StartContainer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).StartContainer(ctx, req.(*StartContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_StopContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).StopContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_StopContainer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).StopContainer(ctx, req.(*StopContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_GetContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).GetContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_GetContainer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).GetContainer(ctx, req.(*GetContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_ListContainers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListContainersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).ListContainers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_ListContainers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).ListContainers(ctx, req.(*ListContainersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_DeleteContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerServiceServer).DeleteContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContainerService_DeleteContainer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerServiceServer).DeleteContainer(ctx, req.(*DeleteContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContainerService_StreamContainerLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamContainerLogsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ContainerServiceServer).StreamContainerLogs(m, &containerServiceStreamContainerLogsServer{stream}) +} + +type ContainerService_StreamContainerLogsServer interface { + Send(*LogEntry) error + grpc.ServerStream +} + +type containerServiceStreamContainerLogsServer struct { + grpc.ServerStream +} + +func (x *containerServiceStreamContainerLogsServer) Send(m *LogEntry) error { + return x.ServerStream.SendMsg(m) +} + +func _ContainerService_StreamContainerEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamContainerEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ContainerServiceServer).StreamContainerEvents(m, &containerServiceStreamContainerEventsServer{stream}) +} + +type ContainerService_StreamContainerEventsServer interface { + Send(*ContainerEvent) error + grpc.ServerStream +} + +type containerServiceStreamContainerEventsServer struct { + grpc.ServerStream +} + +func (x *containerServiceStreamContainerEventsServer) Send(m *ContainerEvent) error { + return x.ServerStream.SendMsg(m) +} + +// ContainerService_ServiceDesc is the grpc.ServiceDesc for ContainerService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ContainerService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "feos.container.v1.ContainerService", + HandlerType: (*ContainerServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateContainer", + Handler: _ContainerService_CreateContainer_Handler, + }, + { + MethodName: "StartContainer", + Handler: _ContainerService_StartContainer_Handler, + }, + { + MethodName: "StopContainer", + Handler: _ContainerService_StopContainer_Handler, + }, + { + MethodName: "GetContainer", + Handler: _ContainerService_GetContainer_Handler, + }, + { + MethodName: "ListContainers", + Handler: _ContainerService_ListContainers_Handler, + }, + { + MethodName: "DeleteContainer", + Handler: _ContainerService_DeleteContainer_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamContainerLogs", + Handler: _ContainerService_StreamContainerLogs_Handler, + ServerStreams: true, + }, + { + StreamName: "StreamContainerEvents", + Handler: _ContainerService_StreamContainerEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "v1/container.proto", +} diff --git a/go/feos-go/gen/feos/host/v1/host.pb.go b/go/feos-go/gen/feos/host/v1/host.pb.go new file mode 100644 index 0000000..c187562 --- /dev/null +++ b/go/feos-go/gen/feos/host/v1/host.pb.go @@ -0,0 +1,2431 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.12.4 +// source: v1/host.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + + timestamp "github.com/golang/protobuf/ptypes/timestamp" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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 HostnameRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *HostnameRequest) Reset() { + *x = HostnameRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HostnameRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HostnameRequest) ProtoMessage() {} + +func (x *HostnameRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 HostnameRequest.ProtoReflect.Descriptor instead. +func (*HostnameRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{0} +} + +type HostnameResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` +} + +func (x *HostnameResponse) Reset() { + *x = HostnameResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HostnameResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HostnameResponse) ProtoMessage() {} + +func (x *HostnameResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 HostnameResponse.ProtoReflect.Descriptor instead. +func (*HostnameResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{1} +} + +func (x *HostnameResponse) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +type UpgradeFeosBinaryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The URL from which to download the new binary. + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // The SHA256 checksum of the binary file, hex-encoded, for verification. + Sha256Sum string `protobuf:"bytes,2,opt,name=sha256_sum,json=sha256Sum,proto3" json:"sha256_sum,omitempty"` +} + +func (x *UpgradeFeosBinaryRequest) Reset() { + *x = UpgradeFeosBinaryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpgradeFeosBinaryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpgradeFeosBinaryRequest) ProtoMessage() {} + +func (x *UpgradeFeosBinaryRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 UpgradeFeosBinaryRequest.ProtoReflect.Descriptor instead. +func (*UpgradeFeosBinaryRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{2} +} + +func (x *UpgradeFeosBinaryRequest) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *UpgradeFeosBinaryRequest) GetSha256Sum() string { + if x != nil { + return x.Sha256Sum + } + return "" +} + +type UpgradeFeosBinaryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpgradeFeosBinaryResponse) Reset() { + *x = UpgradeFeosBinaryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpgradeFeosBinaryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpgradeFeosBinaryResponse) ProtoMessage() {} + +func (x *UpgradeFeosBinaryResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 UpgradeFeosBinaryResponse.ProtoReflect.Descriptor instead. +func (*UpgradeFeosBinaryResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{3} +} + +type StreamKernelLogsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StreamKernelLogsRequest) Reset() { + *x = StreamKernelLogsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamKernelLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamKernelLogsRequest) ProtoMessage() {} + +func (x *StreamKernelLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 StreamKernelLogsRequest.ProtoReflect.Descriptor instead. +func (*StreamKernelLogsRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{4} +} + +type KernelLogEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A single raw log line from the kernel log buffer. + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *KernelLogEntry) Reset() { + *x = KernelLogEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KernelLogEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KernelLogEntry) ProtoMessage() {} + +func (x *KernelLogEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 KernelLogEntry.ProtoReflect.Descriptor instead. +func (*KernelLogEntry) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{5} +} + +func (x *KernelLogEntry) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type ShutdownRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ShutdownRequest) Reset() { + *x = ShutdownRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownRequest) ProtoMessage() {} + +func (x *ShutdownRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 ShutdownRequest.ProtoReflect.Descriptor instead. +func (*ShutdownRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{6} +} + +type ShutdownResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ShutdownResponse) Reset() { + *x = ShutdownResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownResponse) ProtoMessage() {} + +func (x *ShutdownResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 ShutdownResponse.ProtoReflect.Descriptor instead. +func (*ShutdownResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{7} +} + +type RebootRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RebootRequest) Reset() { + *x = RebootRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RebootRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RebootRequest) ProtoMessage() {} + +func (x *RebootRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 RebootRequest.ProtoReflect.Descriptor instead. +func (*RebootRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{8} +} + +type RebootResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RebootResponse) Reset() { + *x = RebootResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RebootResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RebootResponse) ProtoMessage() {} + +func (x *RebootResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 RebootResponse.ProtoReflect.Descriptor instead. +func (*RebootResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{9} +} + +type MemoryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MemoryRequest) Reset() { + *x = MemoryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryRequest) ProtoMessage() {} + +func (x *MemoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 MemoryRequest.ProtoReflect.Descriptor instead. +func (*MemoryRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{10} +} + +type MemoryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MemInfo *MemInfo `protobuf:"bytes,1,opt,name=mem_info,json=memInfo,proto3" json:"mem_info,omitempty"` +} + +func (x *MemoryResponse) Reset() { + *x = MemoryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryResponse) ProtoMessage() {} + +func (x *MemoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 MemoryResponse.ProtoReflect.Descriptor instead. +func (*MemoryResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{11} +} + +func (x *MemoryResponse) GetMemInfo() *MemInfo { + if x != nil { + return x.MemInfo + } + return nil +} + +type MemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Memtotal uint64 `protobuf:"varint,1,opt,name=memtotal,proto3" json:"memtotal,omitempty"` + Memfree uint64 `protobuf:"varint,2,opt,name=memfree,proto3" json:"memfree,omitempty"` + Memavailable uint64 `protobuf:"varint,3,opt,name=memavailable,proto3" json:"memavailable,omitempty"` + Buffers uint64 `protobuf:"varint,4,opt,name=buffers,proto3" json:"buffers,omitempty"` + Cached uint64 `protobuf:"varint,5,opt,name=cached,proto3" json:"cached,omitempty"` + Swapcached uint64 `protobuf:"varint,6,opt,name=swapcached,proto3" json:"swapcached,omitempty"` + Active uint64 `protobuf:"varint,7,opt,name=active,proto3" json:"active,omitempty"` + Inactive uint64 `protobuf:"varint,8,opt,name=inactive,proto3" json:"inactive,omitempty"` + Activeanon uint64 `protobuf:"varint,9,opt,name=activeanon,proto3" json:"activeanon,omitempty"` + Inactiveanon uint64 `protobuf:"varint,10,opt,name=inactiveanon,proto3" json:"inactiveanon,omitempty"` + Activefile uint64 `protobuf:"varint,11,opt,name=activefile,proto3" json:"activefile,omitempty"` + Inactivefile uint64 `protobuf:"varint,12,opt,name=inactivefile,proto3" json:"inactivefile,omitempty"` + Unevictable uint64 `protobuf:"varint,13,opt,name=unevictable,proto3" json:"unevictable,omitempty"` + Mlocked uint64 `protobuf:"varint,14,opt,name=mlocked,proto3" json:"mlocked,omitempty"` + Swaptotal uint64 `protobuf:"varint,15,opt,name=swaptotal,proto3" json:"swaptotal,omitempty"` + Swapfree uint64 `protobuf:"varint,16,opt,name=swapfree,proto3" json:"swapfree,omitempty"` + Dirty uint64 `protobuf:"varint,17,opt,name=dirty,proto3" json:"dirty,omitempty"` + Writeback uint64 `protobuf:"varint,18,opt,name=writeback,proto3" json:"writeback,omitempty"` + Anonpages uint64 `protobuf:"varint,19,opt,name=anonpages,proto3" json:"anonpages,omitempty"` + Mapped uint64 `protobuf:"varint,20,opt,name=mapped,proto3" json:"mapped,omitempty"` + Shmem uint64 `protobuf:"varint,21,opt,name=shmem,proto3" json:"shmem,omitempty"` + Slab uint64 `protobuf:"varint,22,opt,name=slab,proto3" json:"slab,omitempty"` + Sreclaimable uint64 `protobuf:"varint,23,opt,name=sreclaimable,proto3" json:"sreclaimable,omitempty"` + Sunreclaim uint64 `protobuf:"varint,24,opt,name=sunreclaim,proto3" json:"sunreclaim,omitempty"` + Kernelstack uint64 `protobuf:"varint,25,opt,name=kernelstack,proto3" json:"kernelstack,omitempty"` + Pagetables uint64 `protobuf:"varint,26,opt,name=pagetables,proto3" json:"pagetables,omitempty"` + Nfsunstable uint64 `protobuf:"varint,27,opt,name=nfsunstable,proto3" json:"nfsunstable,omitempty"` + Bounce uint64 `protobuf:"varint,28,opt,name=bounce,proto3" json:"bounce,omitempty"` + Writebacktmp uint64 `protobuf:"varint,29,opt,name=writebacktmp,proto3" json:"writebacktmp,omitempty"` + Commitlimit uint64 `protobuf:"varint,30,opt,name=commitlimit,proto3" json:"commitlimit,omitempty"` + Committedas uint64 `protobuf:"varint,31,opt,name=committedas,proto3" json:"committedas,omitempty"` + Vmalloctotal uint64 `protobuf:"varint,32,opt,name=vmalloctotal,proto3" json:"vmalloctotal,omitempty"` + Vmallocused uint64 `protobuf:"varint,33,opt,name=vmallocused,proto3" json:"vmallocused,omitempty"` + Vmallocchunk uint64 `protobuf:"varint,34,opt,name=vmallocchunk,proto3" json:"vmallocchunk,omitempty"` + Hardwarecorrupted uint64 `protobuf:"varint,35,opt,name=hardwarecorrupted,proto3" json:"hardwarecorrupted,omitempty"` + Anonhugepages uint64 `protobuf:"varint,36,opt,name=anonhugepages,proto3" json:"anonhugepages,omitempty"` + Shmemhugepages uint64 `protobuf:"varint,37,opt,name=shmemhugepages,proto3" json:"shmemhugepages,omitempty"` + Shmempmdmapped uint64 `protobuf:"varint,38,opt,name=shmempmdmapped,proto3" json:"shmempmdmapped,omitempty"` + Cmatotal uint64 `protobuf:"varint,39,opt,name=cmatotal,proto3" json:"cmatotal,omitempty"` + Cmafree uint64 `protobuf:"varint,40,opt,name=cmafree,proto3" json:"cmafree,omitempty"` + Hugepagestotal uint64 `protobuf:"varint,41,opt,name=hugepagestotal,proto3" json:"hugepagestotal,omitempty"` + Hugepagesfree uint64 `protobuf:"varint,42,opt,name=hugepagesfree,proto3" json:"hugepagesfree,omitempty"` + Hugepagesrsvd uint64 `protobuf:"varint,43,opt,name=hugepagesrsvd,proto3" json:"hugepagesrsvd,omitempty"` + Hugepagessurp uint64 `protobuf:"varint,44,opt,name=hugepagessurp,proto3" json:"hugepagessurp,omitempty"` + Hugepagesize uint64 `protobuf:"varint,45,opt,name=hugepagesize,proto3" json:"hugepagesize,omitempty"` + Directmap4K uint64 `protobuf:"varint,46,opt,name=directmap4k,proto3" json:"directmap4k,omitempty"` + Directmap2M uint64 `protobuf:"varint,47,opt,name=directmap2m,proto3" json:"directmap2m,omitempty"` + Directmap1G uint64 `protobuf:"varint,48,opt,name=directmap1g,proto3" json:"directmap1g,omitempty"` +} + +func (x *MemInfo) Reset() { + *x = MemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemInfo) ProtoMessage() {} + +func (x *MemInfo) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 MemInfo.ProtoReflect.Descriptor instead. +func (*MemInfo) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{12} +} + +func (x *MemInfo) GetMemtotal() uint64 { + if x != nil { + return x.Memtotal + } + return 0 +} + +func (x *MemInfo) GetMemfree() uint64 { + if x != nil { + return x.Memfree + } + return 0 +} + +func (x *MemInfo) GetMemavailable() uint64 { + if x != nil { + return x.Memavailable + } + return 0 +} + +func (x *MemInfo) GetBuffers() uint64 { + if x != nil { + return x.Buffers + } + return 0 +} + +func (x *MemInfo) GetCached() uint64 { + if x != nil { + return x.Cached + } + return 0 +} + +func (x *MemInfo) GetSwapcached() uint64 { + if x != nil { + return x.Swapcached + } + return 0 +} + +func (x *MemInfo) GetActive() uint64 { + if x != nil { + return x.Active + } + return 0 +} + +func (x *MemInfo) GetInactive() uint64 { + if x != nil { + return x.Inactive + } + return 0 +} + +func (x *MemInfo) GetActiveanon() uint64 { + if x != nil { + return x.Activeanon + } + return 0 +} + +func (x *MemInfo) GetInactiveanon() uint64 { + if x != nil { + return x.Inactiveanon + } + return 0 +} + +func (x *MemInfo) GetActivefile() uint64 { + if x != nil { + return x.Activefile + } + return 0 +} + +func (x *MemInfo) GetInactivefile() uint64 { + if x != nil { + return x.Inactivefile + } + return 0 +} + +func (x *MemInfo) GetUnevictable() uint64 { + if x != nil { + return x.Unevictable + } + return 0 +} + +func (x *MemInfo) GetMlocked() uint64 { + if x != nil { + return x.Mlocked + } + return 0 +} + +func (x *MemInfo) GetSwaptotal() uint64 { + if x != nil { + return x.Swaptotal + } + return 0 +} + +func (x *MemInfo) GetSwapfree() uint64 { + if x != nil { + return x.Swapfree + } + return 0 +} + +func (x *MemInfo) GetDirty() uint64 { + if x != nil { + return x.Dirty + } + return 0 +} + +func (x *MemInfo) GetWriteback() uint64 { + if x != nil { + return x.Writeback + } + return 0 +} + +func (x *MemInfo) GetAnonpages() uint64 { + if x != nil { + return x.Anonpages + } + return 0 +} + +func (x *MemInfo) GetMapped() uint64 { + if x != nil { + return x.Mapped + } + return 0 +} + +func (x *MemInfo) GetShmem() uint64 { + if x != nil { + return x.Shmem + } + return 0 +} + +func (x *MemInfo) GetSlab() uint64 { + if x != nil { + return x.Slab + } + return 0 +} + +func (x *MemInfo) GetSreclaimable() uint64 { + if x != nil { + return x.Sreclaimable + } + return 0 +} + +func (x *MemInfo) GetSunreclaim() uint64 { + if x != nil { + return x.Sunreclaim + } + return 0 +} + +func (x *MemInfo) GetKernelstack() uint64 { + if x != nil { + return x.Kernelstack + } + return 0 +} + +func (x *MemInfo) GetPagetables() uint64 { + if x != nil { + return x.Pagetables + } + return 0 +} + +func (x *MemInfo) GetNfsunstable() uint64 { + if x != nil { + return x.Nfsunstable + } + return 0 +} + +func (x *MemInfo) GetBounce() uint64 { + if x != nil { + return x.Bounce + } + return 0 +} + +func (x *MemInfo) GetWritebacktmp() uint64 { + if x != nil { + return x.Writebacktmp + } + return 0 +} + +func (x *MemInfo) GetCommitlimit() uint64 { + if x != nil { + return x.Commitlimit + } + return 0 +} + +func (x *MemInfo) GetCommittedas() uint64 { + if x != nil { + return x.Committedas + } + return 0 +} + +func (x *MemInfo) GetVmalloctotal() uint64 { + if x != nil { + return x.Vmalloctotal + } + return 0 +} + +func (x *MemInfo) GetVmallocused() uint64 { + if x != nil { + return x.Vmallocused + } + return 0 +} + +func (x *MemInfo) GetVmallocchunk() uint64 { + if x != nil { + return x.Vmallocchunk + } + return 0 +} + +func (x *MemInfo) GetHardwarecorrupted() uint64 { + if x != nil { + return x.Hardwarecorrupted + } + return 0 +} + +func (x *MemInfo) GetAnonhugepages() uint64 { + if x != nil { + return x.Anonhugepages + } + return 0 +} + +func (x *MemInfo) GetShmemhugepages() uint64 { + if x != nil { + return x.Shmemhugepages + } + return 0 +} + +func (x *MemInfo) GetShmempmdmapped() uint64 { + if x != nil { + return x.Shmempmdmapped + } + return 0 +} + +func (x *MemInfo) GetCmatotal() uint64 { + if x != nil { + return x.Cmatotal + } + return 0 +} + +func (x *MemInfo) GetCmafree() uint64 { + if x != nil { + return x.Cmafree + } + return 0 +} + +func (x *MemInfo) GetHugepagestotal() uint64 { + if x != nil { + return x.Hugepagestotal + } + return 0 +} + +func (x *MemInfo) GetHugepagesfree() uint64 { + if x != nil { + return x.Hugepagesfree + } + return 0 +} + +func (x *MemInfo) GetHugepagesrsvd() uint64 { + if x != nil { + return x.Hugepagesrsvd + } + return 0 +} + +func (x *MemInfo) GetHugepagessurp() uint64 { + if x != nil { + return x.Hugepagessurp + } + return 0 +} + +func (x *MemInfo) GetHugepagesize() uint64 { + if x != nil { + return x.Hugepagesize + } + return 0 +} + +func (x *MemInfo) GetDirectmap4K() uint64 { + if x != nil { + return x.Directmap4K + } + return 0 +} + +func (x *MemInfo) GetDirectmap2M() uint64 { + if x != nil { + return x.Directmap2M + } + return 0 +} + +func (x *MemInfo) GetDirectmap1G() uint64 { + if x != nil { + return x.Directmap1G + } + return 0 +} + +type GetCPUInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetCPUInfoRequest) Reset() { + *x = GetCPUInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCPUInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCPUInfoRequest) ProtoMessage() {} + +func (x *GetCPUInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 GetCPUInfoRequest.ProtoReflect.Descriptor instead. +func (*GetCPUInfoRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{13} +} + +type GetCPUInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CpuInfo []*CPUInfo `protobuf:"bytes,1,rep,name=cpu_info,json=cpuInfo,proto3" json:"cpu_info,omitempty"` +} + +func (x *GetCPUInfoResponse) Reset() { + *x = GetCPUInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCPUInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCPUInfoResponse) ProtoMessage() {} + +func (x *GetCPUInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 GetCPUInfoResponse.ProtoReflect.Descriptor instead. +func (*GetCPUInfoResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{14} +} + +func (x *GetCPUInfoResponse) GetCpuInfo() []*CPUInfo { + if x != nil { + return x.CpuInfo + } + return nil +} + +type CPUInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Processor uint32 `protobuf:"varint,1,opt,name=processor,proto3" json:"processor,omitempty"` + VendorId string `protobuf:"bytes,2,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` + CpuFamily string `protobuf:"bytes,3,opt,name=cpu_family,json=cpuFamily,proto3" json:"cpu_family,omitempty"` + Model string `protobuf:"bytes,4,opt,name=model,proto3" json:"model,omitempty"` + ModelName string `protobuf:"bytes,5,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"` + Stepping string `protobuf:"bytes,6,opt,name=stepping,proto3" json:"stepping,omitempty"` + Microcode string `protobuf:"bytes,7,opt,name=microcode,proto3" json:"microcode,omitempty"` + CpuMhz float64 `protobuf:"fixed64,8,opt,name=cpu_mhz,json=cpuMhz,proto3" json:"cpu_mhz,omitempty"` + CacheSize string `protobuf:"bytes,9,opt,name=cache_size,json=cacheSize,proto3" json:"cache_size,omitempty"` + PhysicalId string `protobuf:"bytes,10,opt,name=physical_id,json=physicalId,proto3" json:"physical_id,omitempty"` + Siblings uint32 `protobuf:"varint,11,opt,name=siblings,proto3" json:"siblings,omitempty"` + CoreId string `protobuf:"bytes,12,opt,name=core_id,json=coreId,proto3" json:"core_id,omitempty"` + CpuCores uint32 `protobuf:"varint,13,opt,name=cpu_cores,json=cpuCores,proto3" json:"cpu_cores,omitempty"` + ApicId string `protobuf:"bytes,14,opt,name=apic_id,json=apicId,proto3" json:"apic_id,omitempty"` + InitialApicId string `protobuf:"bytes,15,opt,name=initial_apic_id,json=initialApicId,proto3" json:"initial_apic_id,omitempty"` + Fpu string `protobuf:"bytes,16,opt,name=fpu,proto3" json:"fpu,omitempty"` + FpuException string `protobuf:"bytes,17,opt,name=fpu_exception,json=fpuException,proto3" json:"fpu_exception,omitempty"` + CpuIdLevel uint32 `protobuf:"varint,18,opt,name=cpu_id_level,json=cpuIdLevel,proto3" json:"cpu_id_level,omitempty"` + Wp string `protobuf:"bytes,19,opt,name=wp,proto3" json:"wp,omitempty"` + Flags []string `protobuf:"bytes,20,rep,name=flags,proto3" json:"flags,omitempty"` + Bugs []string `protobuf:"bytes,21,rep,name=bugs,proto3" json:"bugs,omitempty"` + BogoMips float64 `protobuf:"fixed64,22,opt,name=bogo_mips,json=bogoMips,proto3" json:"bogo_mips,omitempty"` + ClFlushSize uint32 `protobuf:"varint,23,opt,name=cl_flush_size,json=clFlushSize,proto3" json:"cl_flush_size,omitempty"` + CacheAlignment uint32 `protobuf:"varint,24,opt,name=cache_alignment,json=cacheAlignment,proto3" json:"cache_alignment,omitempty"` + AddressSizes string `protobuf:"bytes,25,opt,name=address_sizes,json=addressSizes,proto3" json:"address_sizes,omitempty"` + PowerManagement string `protobuf:"bytes,26,opt,name=power_management,json=powerManagement,proto3" json:"power_management,omitempty"` +} + +func (x *CPUInfo) Reset() { + *x = CPUInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CPUInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CPUInfo) ProtoMessage() {} + +func (x *CPUInfo) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_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 CPUInfo.ProtoReflect.Descriptor instead. +func (*CPUInfo) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{15} +} + +func (x *CPUInfo) GetProcessor() uint32 { + if x != nil { + return x.Processor + } + return 0 +} + +func (x *CPUInfo) GetVendorId() string { + if x != nil { + return x.VendorId + } + return "" +} + +func (x *CPUInfo) GetCpuFamily() string { + if x != nil { + return x.CpuFamily + } + return "" +} + +func (x *CPUInfo) GetModel() string { + if x != nil { + return x.Model + } + return "" +} + +func (x *CPUInfo) GetModelName() string { + if x != nil { + return x.ModelName + } + return "" +} + +func (x *CPUInfo) GetStepping() string { + if x != nil { + return x.Stepping + } + return "" +} + +func (x *CPUInfo) GetMicrocode() string { + if x != nil { + return x.Microcode + } + return "" +} + +func (x *CPUInfo) GetCpuMhz() float64 { + if x != nil { + return x.CpuMhz + } + return 0 +} + +func (x *CPUInfo) GetCacheSize() string { + if x != nil { + return x.CacheSize + } + return "" +} + +func (x *CPUInfo) GetPhysicalId() string { + if x != nil { + return x.PhysicalId + } + return "" +} + +func (x *CPUInfo) GetSiblings() uint32 { + if x != nil { + return x.Siblings + } + return 0 +} + +func (x *CPUInfo) GetCoreId() string { + if x != nil { + return x.CoreId + } + return "" +} + +func (x *CPUInfo) GetCpuCores() uint32 { + if x != nil { + return x.CpuCores + } + return 0 +} + +func (x *CPUInfo) GetApicId() string { + if x != nil { + return x.ApicId + } + return "" +} + +func (x *CPUInfo) GetInitialApicId() string { + if x != nil { + return x.InitialApicId + } + return "" +} + +func (x *CPUInfo) GetFpu() string { + if x != nil { + return x.Fpu + } + return "" +} + +func (x *CPUInfo) GetFpuException() string { + if x != nil { + return x.FpuException + } + return "" +} + +func (x *CPUInfo) GetCpuIdLevel() uint32 { + if x != nil { + return x.CpuIdLevel + } + return 0 +} + +func (x *CPUInfo) GetWp() string { + if x != nil { + return x.Wp + } + return "" +} + +func (x *CPUInfo) GetFlags() []string { + if x != nil { + return x.Flags + } + return nil +} + +func (x *CPUInfo) GetBugs() []string { + if x != nil { + return x.Bugs + } + return nil +} + +func (x *CPUInfo) GetBogoMips() float64 { + if x != nil { + return x.BogoMips + } + return 0 +} + +func (x *CPUInfo) GetClFlushSize() uint32 { + if x != nil { + return x.ClFlushSize + } + return 0 +} + +func (x *CPUInfo) GetCacheAlignment() uint32 { + if x != nil { + return x.CacheAlignment + } + return 0 +} + +func (x *CPUInfo) GetAddressSizes() string { + if x != nil { + return x.AddressSizes + } + return "" +} + +func (x *CPUInfo) GetPowerManagement() string { + if x != nil { + return x.PowerManagement + } + return "" +} + +type GetNetworkInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetNetworkInfoRequest) Reset() { + *x = GetNetworkInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNetworkInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNetworkInfoRequest) ProtoMessage() {} + +func (x *GetNetworkInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[16] + 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 GetNetworkInfoRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkInfoRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{16} +} + +type GetNetworkInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Devices []*NetDev `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"` +} + +func (x *GetNetworkInfoResponse) Reset() { + *x = GetNetworkInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNetworkInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNetworkInfoResponse) ProtoMessage() {} + +func (x *GetNetworkInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[17] + 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 GetNetworkInfoResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkInfoResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{17} +} + +func (x *GetNetworkInfoResponse) GetDevices() []*NetDev { + if x != nil { + return x.Devices + } + return nil +} + +type NetDev struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + RxBytes uint64 `protobuf:"varint,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"` + RxPackets uint64 `protobuf:"varint,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` + RxErrors uint64 `protobuf:"varint,4,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"` + RxDropped uint64 `protobuf:"varint,5,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"` + RxFifo uint64 `protobuf:"varint,6,opt,name=rx_fifo,json=rxFifo,proto3" json:"rx_fifo,omitempty"` + RxFrame uint64 `protobuf:"varint,7,opt,name=rx_frame,json=rxFrame,proto3" json:"rx_frame,omitempty"` + RxCompressed uint64 `protobuf:"varint,8,opt,name=rx_compressed,json=rxCompressed,proto3" json:"rx_compressed,omitempty"` + RxMulticast uint64 `protobuf:"varint,9,opt,name=rx_multicast,json=rxMulticast,proto3" json:"rx_multicast,omitempty"` + TxBytes uint64 `protobuf:"varint,10,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"` + TxPackets uint64 `protobuf:"varint,11,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` + TxErrors uint64 `protobuf:"varint,12,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"` + TxDropped uint64 `protobuf:"varint,13,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"` + TxFifo uint64 `protobuf:"varint,14,opt,name=tx_fifo,json=txFifo,proto3" json:"tx_fifo,omitempty"` + TxCollisions uint64 `protobuf:"varint,15,opt,name=tx_collisions,json=txCollisions,proto3" json:"tx_collisions,omitempty"` + TxCarrier uint64 `protobuf:"varint,16,opt,name=tx_carrier,json=txCarrier,proto3" json:"tx_carrier,omitempty"` + TxCompressed uint64 `protobuf:"varint,17,opt,name=tx_compressed,json=txCompressed,proto3" json:"tx_compressed,omitempty"` +} + +func (x *NetDev) Reset() { + *x = NetDev{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetDev) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetDev) ProtoMessage() {} + +func (x *NetDev) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[18] + 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 NetDev.ProtoReflect.Descriptor instead. +func (*NetDev) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{18} +} + +func (x *NetDev) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NetDev) GetRxBytes() uint64 { + if x != nil { + return x.RxBytes + } + return 0 +} + +func (x *NetDev) GetRxPackets() uint64 { + if x != nil { + return x.RxPackets + } + return 0 +} + +func (x *NetDev) GetRxErrors() uint64 { + if x != nil { + return x.RxErrors + } + return 0 +} + +func (x *NetDev) GetRxDropped() uint64 { + if x != nil { + return x.RxDropped + } + return 0 +} + +func (x *NetDev) GetRxFifo() uint64 { + if x != nil { + return x.RxFifo + } + return 0 +} + +func (x *NetDev) GetRxFrame() uint64 { + if x != nil { + return x.RxFrame + } + return 0 +} + +func (x *NetDev) GetRxCompressed() uint64 { + if x != nil { + return x.RxCompressed + } + return 0 +} + +func (x *NetDev) GetRxMulticast() uint64 { + if x != nil { + return x.RxMulticast + } + return 0 +} + +func (x *NetDev) GetTxBytes() uint64 { + if x != nil { + return x.TxBytes + } + return 0 +} + +func (x *NetDev) GetTxPackets() uint64 { + if x != nil { + return x.TxPackets + } + return 0 +} + +func (x *NetDev) GetTxErrors() uint64 { + if x != nil { + return x.TxErrors + } + return 0 +} + +func (x *NetDev) GetTxDropped() uint64 { + if x != nil { + return x.TxDropped + } + return 0 +} + +func (x *NetDev) GetTxFifo() uint64 { + if x != nil { + return x.TxFifo + } + return 0 +} + +func (x *NetDev) GetTxCollisions() uint64 { + if x != nil { + return x.TxCollisions + } + return 0 +} + +func (x *NetDev) GetTxCarrier() uint64 { + if x != nil { + return x.TxCarrier + } + return 0 +} + +func (x *NetDev) GetTxCompressed() uint64 { + if x != nil { + return x.TxCompressed + } + return 0 +} + +type StreamFeosLogsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StreamFeosLogsRequest) Reset() { + *x = StreamFeosLogsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamFeosLogsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamFeosLogsRequest) ProtoMessage() {} + +func (x *StreamFeosLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[19] + 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 StreamFeosLogsRequest.ProtoReflect.Descriptor instead. +func (*StreamFeosLogsRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{19} +} + +type FeosLogEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Seq uint64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` + Timestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Level string `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"` + Target string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *FeosLogEntry) Reset() { + *x = FeosLogEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeosLogEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeosLogEntry) ProtoMessage() {} + +func (x *FeosLogEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[20] + 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 FeosLogEntry.ProtoReflect.Descriptor instead. +func (*FeosLogEntry) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{20} +} + +func (x *FeosLogEntry) GetSeq() uint64 { + if x != nil { + return x.Seq + } + return 0 +} + +func (x *FeosLogEntry) GetTimestamp() *timestamp.Timestamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *FeosLogEntry) GetLevel() string { + if x != nil { + return x.Level + } + return "" +} + +func (x *FeosLogEntry) GetTarget() string { + if x != nil { + return x.Target + } + return "" +} + +func (x *FeosLogEntry) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type GetVersionInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetVersionInfoRequest) Reset() { + *x = GetVersionInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetVersionInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVersionInfoRequest) ProtoMessage() {} + +func (x *GetVersionInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[21] + 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 GetVersionInfoRequest.ProtoReflect.Descriptor instead. +func (*GetVersionInfoRequest) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{21} +} + +type GetVersionInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The version of the Linux kernel (e.g., from /proc/version). + KernelVersion string `protobuf:"bytes,1,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"` + // The version of the running FeOS binary. + FeosVersion string `protobuf:"bytes,2,opt,name=feos_version,json=feosVersion,proto3" json:"feos_version,omitempty"` +} + +func (x *GetVersionInfoResponse) Reset() { + *x = GetVersionInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_host_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetVersionInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVersionInfoResponse) ProtoMessage() {} + +func (x *GetVersionInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_host_proto_msgTypes[22] + 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 GetVersionInfoResponse.ProtoReflect.Descriptor instead. +func (*GetVersionInfoResponse) Descriptor() ([]byte, []int) { + return file_v1_host_proto_rawDescGZIP(), []int{22} +} + +func (x *GetVersionInfoResponse) GetKernelVersion() string { + if x != nil { + return x.KernelVersion + } + return "" +} + +func (x *GetVersionInfoResponse) GetFeosVersion() string { + if x != nil { + return x.FeosVersion + } + return "" +} + +var File_v1_host_proto protoreflect.FileDescriptor + +var file_v1_host_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x76, 0x31, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0c, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x11, + 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x2e, 0x0a, 0x10, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x4b, 0x0a, 0x18, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x46, 0x65, 0x6f, 0x73, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x53, 0x75, 0x6d, 0x22, 0x1b, + 0x0a, 0x19, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x46, 0x65, 0x6f, 0x73, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x0e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, + 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x62, + 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, + 0x62, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x0a, 0x0d, + 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, 0x0a, + 0x0e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x8b, 0x0c, 0x0a, 0x07, 0x4d, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x65, 0x6d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x6d, 0x65, 0x6d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, + 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x66, + 0x72, 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x77, 0x61, + 0x70, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, + 0x77, 0x61, 0x70, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x6e, 0x6f, 0x6e, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x6e, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x65, 0x76, 0x69, 0x63, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x65, 0x76, + 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x77, 0x61, 0x70, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x77, 0x61, 0x70, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x77, 0x61, 0x70, 0x66, 0x72, 0x65, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x73, 0x77, 0x61, 0x70, 0x66, 0x72, 0x65, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x69, 0x72, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x69, 0x72, 0x74, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x61, 0x6e, 0x6f, 0x6e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, + 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6c, 0x61, 0x62, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x61, 0x62, 0x12, + 0x22, 0x0a, 0x0c, 0x73, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x6e, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x75, 0x6e, 0x72, 0x65, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x66, 0x73, 0x75, 0x6e, 0x73, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x66, 0x73, 0x75, + 0x6e, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x74, 0x6d, 0x70, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x62, 0x61, 0x63, 0x6b, + 0x74, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, + 0x65, 0x64, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x64, 0x61, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x6d, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x76, + 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x76, + 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x75, 0x73, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x76, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x75, 0x73, 0x65, 0x64, 0x12, 0x22, 0x0a, + 0x0c, 0x76, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x22, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x76, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x68, 0x61, + 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x12, + 0x24, 0x0a, 0x0d, 0x61, 0x6e, 0x6f, 0x6e, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x61, 0x6e, 0x6f, 0x6e, 0x68, 0x75, 0x67, 0x65, + 0x70, 0x61, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x68, 0x75, + 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, + 0x68, 0x6d, 0x65, 0x6d, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, + 0x0e, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x70, 0x6d, 0x64, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x6d, 0x65, 0x6d, 0x70, 0x6d, 0x64, 0x6d, + 0x61, 0x70, 0x70, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6d, 0x61, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x27, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x6d, 0x61, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6d, 0x61, 0x66, 0x72, 0x65, 0x65, 0x18, 0x28, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x63, 0x6d, 0x61, 0x66, 0x72, 0x65, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x68, + 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x29, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, + 0x66, 0x72, 0x65, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x68, 0x75, 0x67, 0x65, + 0x70, 0x61, 0x67, 0x65, 0x73, 0x66, 0x72, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x75, 0x67, + 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x72, 0x73, 0x76, 0x64, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0d, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x72, 0x73, 0x76, 0x64, 0x12, + 0x24, 0x0a, 0x0d, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x73, 0x75, 0x72, 0x70, + 0x18, 0x2c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, + 0x73, 0x73, 0x75, 0x72, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x68, 0x75, 0x67, + 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x34, 0x6b, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x34, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x32, 0x6d, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x32, 0x6d, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x31, 0x67, 0x18, 0x30, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x70, 0x31, 0x67, 0x22, + 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x63, 0x70, + 0x75, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x50, 0x55, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8b, 0x06, 0x0a, + 0x07, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x70, 0x75, 0x46, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x65, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x68, 0x7a, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x06, 0x63, 0x70, 0x75, 0x4d, 0x68, 0x7a, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x68, 0x79, + 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, + 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x69, + 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x61, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x61, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x66, 0x70, 0x75, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x70, 0x75, 0x12, + 0x23, 0x0a, 0x0d, 0x66, 0x70, 0x75, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x70, 0x75, 0x45, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x70, 0x75, 0x5f, 0x69, 0x64, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x49, + 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x77, 0x70, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x77, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, + 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x62, 0x75, 0x67, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x62, 0x75, 0x67, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x67, 0x6f, 0x5f, 0x6d, 0x69, 0x70, 0x73, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x08, 0x62, 0x6f, 0x67, 0x6f, 0x4d, 0x69, 0x70, 0x73, 0x12, 0x22, 0x0a, + 0x0d, 0x63, 0x6c, 0x5f, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6c, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6f, 0x77, 0x65, 0x72, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, + 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, + 0x74, 0x44, 0x65, 0x76, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x86, 0x04, + 0x0a, 0x06, 0x4e, 0x65, 0x74, 0x44, 0x65, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x72, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x78, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x78, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x78, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x70, + 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x66, 0x69, 0x66, 0x6f, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x78, 0x46, 0x69, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x72, + 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, + 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, + 0x78, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, + 0x78, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x72, 0x78, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x74, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, + 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x70, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x78, 0x44, 0x72, 0x6f, + 0x70, 0x70, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x66, 0x6f, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x46, 0x69, 0x66, 0x6f, 0x12, 0x23, 0x0a, + 0x0d, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x78, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x78, 0x5f, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x78, 0x43, 0x61, 0x72, 0x72, 0x69, 0x65, + 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x78, 0x43, 0x6f, 0x6d, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x46, 0x65, 0x6f, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0xa2, 0x01, 0x0a, 0x0c, 0x46, 0x65, 0x6f, 0x73, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, + 0x65, 0x71, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x72, 0x6e, 0x65, + 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, + 0x0a, 0x0c, 0x66, 0x65, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x32, 0xd1, 0x06, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x49, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1d, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x75, + 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x12, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x46, 0x65, 0x6f, + 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x26, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x46, 0x65, + 0x6f, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x46, 0x65, 0x6f, 0x73, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x25, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x46, 0x65, 0x4f, + 0x53, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x46, 0x65, 0x6f, 0x73, 0x4c, + 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x6f, 0x73, 0x4c, 0x6f, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x72, 0x6f, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2d, 0x64, 0x65, 0x76, + 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2d, 0x67, 0x6f, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_v1_host_proto_rawDescOnce sync.Once + file_v1_host_proto_rawDescData = file_v1_host_proto_rawDesc +) + +func file_v1_host_proto_rawDescGZIP() []byte { + file_v1_host_proto_rawDescOnce.Do(func() { + file_v1_host_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_host_proto_rawDescData) + }) + return file_v1_host_proto_rawDescData +} + +var file_v1_host_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_v1_host_proto_goTypes = []interface{}{ + (*HostnameRequest)(nil), // 0: feos.host.v1.HostnameRequest + (*HostnameResponse)(nil), // 1: feos.host.v1.HostnameResponse + (*UpgradeFeosBinaryRequest)(nil), // 2: feos.host.v1.UpgradeFeosBinaryRequest + (*UpgradeFeosBinaryResponse)(nil), // 3: feos.host.v1.UpgradeFeosBinaryResponse + (*StreamKernelLogsRequest)(nil), // 4: feos.host.v1.StreamKernelLogsRequest + (*KernelLogEntry)(nil), // 5: feos.host.v1.KernelLogEntry + (*ShutdownRequest)(nil), // 6: feos.host.v1.ShutdownRequest + (*ShutdownResponse)(nil), // 7: feos.host.v1.ShutdownResponse + (*RebootRequest)(nil), // 8: feos.host.v1.RebootRequest + (*RebootResponse)(nil), // 9: feos.host.v1.RebootResponse + (*MemoryRequest)(nil), // 10: feos.host.v1.MemoryRequest + (*MemoryResponse)(nil), // 11: feos.host.v1.MemoryResponse + (*MemInfo)(nil), // 12: feos.host.v1.MemInfo + (*GetCPUInfoRequest)(nil), // 13: feos.host.v1.GetCPUInfoRequest + (*GetCPUInfoResponse)(nil), // 14: feos.host.v1.GetCPUInfoResponse + (*CPUInfo)(nil), // 15: feos.host.v1.CPUInfo + (*GetNetworkInfoRequest)(nil), // 16: feos.host.v1.GetNetworkInfoRequest + (*GetNetworkInfoResponse)(nil), // 17: feos.host.v1.GetNetworkInfoResponse + (*NetDev)(nil), // 18: feos.host.v1.NetDev + (*StreamFeosLogsRequest)(nil), // 19: feos.host.v1.StreamFeosLogsRequest + (*FeosLogEntry)(nil), // 20: feos.host.v1.FeosLogEntry + (*GetVersionInfoRequest)(nil), // 21: feos.host.v1.GetVersionInfoRequest + (*GetVersionInfoResponse)(nil), // 22: feos.host.v1.GetVersionInfoResponse + (*timestamp.Timestamp)(nil), // 23: google.protobuf.Timestamp +} +var file_v1_host_proto_depIdxs = []int32{ + 12, // 0: feos.host.v1.MemoryResponse.mem_info:type_name -> feos.host.v1.MemInfo + 15, // 1: feos.host.v1.GetCPUInfoResponse.cpu_info:type_name -> feos.host.v1.CPUInfo + 18, // 2: feos.host.v1.GetNetworkInfoResponse.devices:type_name -> feos.host.v1.NetDev + 23, // 3: feos.host.v1.FeosLogEntry.timestamp:type_name -> google.protobuf.Timestamp + 0, // 4: feos.host.v1.HostService.Hostname:input_type -> feos.host.v1.HostnameRequest + 10, // 5: feos.host.v1.HostService.GetMemory:input_type -> feos.host.v1.MemoryRequest + 13, // 6: feos.host.v1.HostService.GetCPUInfo:input_type -> feos.host.v1.GetCPUInfoRequest + 16, // 7: feos.host.v1.HostService.GetNetworkInfo:input_type -> feos.host.v1.GetNetworkInfoRequest + 6, // 8: feos.host.v1.HostService.Shutdown:input_type -> feos.host.v1.ShutdownRequest + 8, // 9: feos.host.v1.HostService.Reboot:input_type -> feos.host.v1.RebootRequest + 2, // 10: feos.host.v1.HostService.UpgradeFeosBinary:input_type -> feos.host.v1.UpgradeFeosBinaryRequest + 4, // 11: feos.host.v1.HostService.StreamKernelLogs:input_type -> feos.host.v1.StreamKernelLogsRequest + 19, // 12: feos.host.v1.HostService.StreamFeOSLogs:input_type -> feos.host.v1.StreamFeosLogsRequest + 21, // 13: feos.host.v1.HostService.GetVersionInfo:input_type -> feos.host.v1.GetVersionInfoRequest + 1, // 14: feos.host.v1.HostService.Hostname:output_type -> feos.host.v1.HostnameResponse + 11, // 15: feos.host.v1.HostService.GetMemory:output_type -> feos.host.v1.MemoryResponse + 14, // 16: feos.host.v1.HostService.GetCPUInfo:output_type -> feos.host.v1.GetCPUInfoResponse + 17, // 17: feos.host.v1.HostService.GetNetworkInfo:output_type -> feos.host.v1.GetNetworkInfoResponse + 7, // 18: feos.host.v1.HostService.Shutdown:output_type -> feos.host.v1.ShutdownResponse + 9, // 19: feos.host.v1.HostService.Reboot:output_type -> feos.host.v1.RebootResponse + 3, // 20: feos.host.v1.HostService.UpgradeFeosBinary:output_type -> feos.host.v1.UpgradeFeosBinaryResponse + 5, // 21: feos.host.v1.HostService.StreamKernelLogs:output_type -> feos.host.v1.KernelLogEntry + 20, // 22: feos.host.v1.HostService.StreamFeOSLogs:output_type -> feos.host.v1.FeosLogEntry + 22, // 23: feos.host.v1.HostService.GetVersionInfo:output_type -> feos.host.v1.GetVersionInfoResponse + 14, // [14:24] is the sub-list for method output_type + 4, // [4:14] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_v1_host_proto_init() } +func file_v1_host_proto_init() { + if File_v1_host_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_host_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HostnameRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HostnameResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpgradeFeosBinaryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpgradeFeosBinaryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamKernelLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KernelLogEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RebootRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RebootResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCPUInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCPUInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CPUInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNetworkInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNetworkInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetDev); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamFeosLogsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeosLogEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVersionInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_host_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVersionInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_host_proto_rawDesc, + NumEnums: 0, + NumMessages: 23, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v1_host_proto_goTypes, + DependencyIndexes: file_v1_host_proto_depIdxs, + MessageInfos: file_v1_host_proto_msgTypes, + }.Build() + File_v1_host_proto = out.File + file_v1_host_proto_rawDesc = nil + file_v1_host_proto_goTypes = nil + file_v1_host_proto_depIdxs = nil +} diff --git a/go/feos-go/gen/feos/host/v1/host_grpc.pb.go b/go/feos-go/gen/feos/host/v1/host_grpc.pb.go new file mode 100644 index 0000000..8aa1f6a --- /dev/null +++ b/go/feos-go/gen/feos/host/v1/host_grpc.pb.go @@ -0,0 +1,512 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.12.4 +// source: v1/host.proto + +package v1 + +import ( + context "context" + + 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 + +const ( + HostService_Hostname_FullMethodName = "/feos.host.v1.HostService/Hostname" + HostService_GetMemory_FullMethodName = "/feos.host.v1.HostService/GetMemory" + HostService_GetCPUInfo_FullMethodName = "/feos.host.v1.HostService/GetCPUInfo" + HostService_GetNetworkInfo_FullMethodName = "/feos.host.v1.HostService/GetNetworkInfo" + HostService_Shutdown_FullMethodName = "/feos.host.v1.HostService/Shutdown" + HostService_Reboot_FullMethodName = "/feos.host.v1.HostService/Reboot" + HostService_UpgradeFeosBinary_FullMethodName = "/feos.host.v1.HostService/UpgradeFeosBinary" + HostService_StreamKernelLogs_FullMethodName = "/feos.host.v1.HostService/StreamKernelLogs" + HostService_StreamFeOSLogs_FullMethodName = "/feos.host.v1.HostService/StreamFeOSLogs" + HostService_GetVersionInfo_FullMethodName = "/feos.host.v1.HostService/GetVersionInfo" +) + +// HostServiceClient is the client API for HostService 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 HostServiceClient interface { + // Retrieves the hostname of the machine running the service. + Hostname(ctx context.Context, in *HostnameRequest, opts ...grpc.CallOption) (*HostnameResponse, error) + GetMemory(ctx context.Context, in *MemoryRequest, opts ...grpc.CallOption) (*MemoryResponse, error) + GetCPUInfo(ctx context.Context, in *GetCPUInfoRequest, opts ...grpc.CallOption) (*GetCPUInfoResponse, error) + // Retrieves statistics for all network interfaces. + GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*GetNetworkInfoResponse, error) + Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error) + Reboot(ctx context.Context, in *RebootRequest, opts ...grpc.CallOption) (*RebootResponse, error) + // Triggers an upgrade of the running FeOS binary by pulling it from a URL. + UpgradeFeosBinary(ctx context.Context, in *UpgradeFeosBinaryRequest, opts ...grpc.CallOption) (*UpgradeFeosBinaryResponse, error) + // Streams kernel log messages from /dev/kmsg. + StreamKernelLogs(ctx context.Context, in *StreamKernelLogsRequest, opts ...grpc.CallOption) (HostService_StreamKernelLogsClient, error) + // Streams logs from the internal FeOS logger. + StreamFeOSLogs(ctx context.Context, in *StreamFeosLogsRequest, opts ...grpc.CallOption) (HostService_StreamFeOSLogsClient, error) + // Retrieves version information about the host system. + GetVersionInfo(ctx context.Context, in *GetVersionInfoRequest, opts ...grpc.CallOption) (*GetVersionInfoResponse, error) +} + +type hostServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewHostServiceClient(cc grpc.ClientConnInterface) HostServiceClient { + return &hostServiceClient{cc} +} + +func (c *hostServiceClient) Hostname(ctx context.Context, in *HostnameRequest, opts ...grpc.CallOption) (*HostnameResponse, error) { + out := new(HostnameResponse) + err := c.cc.Invoke(ctx, HostService_Hostname_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) GetMemory(ctx context.Context, in *MemoryRequest, opts ...grpc.CallOption) (*MemoryResponse, error) { + out := new(MemoryResponse) + err := c.cc.Invoke(ctx, HostService_GetMemory_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) GetCPUInfo(ctx context.Context, in *GetCPUInfoRequest, opts ...grpc.CallOption) (*GetCPUInfoResponse, error) { + out := new(GetCPUInfoResponse) + err := c.cc.Invoke(ctx, HostService_GetCPUInfo_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) GetNetworkInfo(ctx context.Context, in *GetNetworkInfoRequest, opts ...grpc.CallOption) (*GetNetworkInfoResponse, error) { + out := new(GetNetworkInfoResponse) + err := c.cc.Invoke(ctx, HostService_GetNetworkInfo_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error) { + out := new(ShutdownResponse) + err := c.cc.Invoke(ctx, HostService_Shutdown_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) Reboot(ctx context.Context, in *RebootRequest, opts ...grpc.CallOption) (*RebootResponse, error) { + out := new(RebootResponse) + err := c.cc.Invoke(ctx, HostService_Reboot_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) UpgradeFeosBinary(ctx context.Context, in *UpgradeFeosBinaryRequest, opts ...grpc.CallOption) (*UpgradeFeosBinaryResponse, error) { + out := new(UpgradeFeosBinaryResponse) + err := c.cc.Invoke(ctx, HostService_UpgradeFeosBinary_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hostServiceClient) StreamKernelLogs(ctx context.Context, in *StreamKernelLogsRequest, opts ...grpc.CallOption) (HostService_StreamKernelLogsClient, error) { + stream, err := c.cc.NewStream(ctx, &HostService_ServiceDesc.Streams[0], HostService_StreamKernelLogs_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &hostServiceStreamKernelLogsClient{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 HostService_StreamKernelLogsClient interface { + Recv() (*KernelLogEntry, error) + grpc.ClientStream +} + +type hostServiceStreamKernelLogsClient struct { + grpc.ClientStream +} + +func (x *hostServiceStreamKernelLogsClient) Recv() (*KernelLogEntry, error) { + m := new(KernelLogEntry) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *hostServiceClient) StreamFeOSLogs(ctx context.Context, in *StreamFeosLogsRequest, opts ...grpc.CallOption) (HostService_StreamFeOSLogsClient, error) { + stream, err := c.cc.NewStream(ctx, &HostService_ServiceDesc.Streams[1], HostService_StreamFeOSLogs_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &hostServiceStreamFeOSLogsClient{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 HostService_StreamFeOSLogsClient interface { + Recv() (*FeosLogEntry, error) + grpc.ClientStream +} + +type hostServiceStreamFeOSLogsClient struct { + grpc.ClientStream +} + +func (x *hostServiceStreamFeOSLogsClient) Recv() (*FeosLogEntry, error) { + m := new(FeosLogEntry) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *hostServiceClient) GetVersionInfo(ctx context.Context, in *GetVersionInfoRequest, opts ...grpc.CallOption) (*GetVersionInfoResponse, error) { + out := new(GetVersionInfoResponse) + err := c.cc.Invoke(ctx, HostService_GetVersionInfo_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// HostServiceServer is the server API for HostService service. +// All implementations must embed UnimplementedHostServiceServer +// for forward compatibility +type HostServiceServer interface { + // Retrieves the hostname of the machine running the service. + Hostname(context.Context, *HostnameRequest) (*HostnameResponse, error) + GetMemory(context.Context, *MemoryRequest) (*MemoryResponse, error) + GetCPUInfo(context.Context, *GetCPUInfoRequest) (*GetCPUInfoResponse, error) + // Retrieves statistics for all network interfaces. + GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*GetNetworkInfoResponse, error) + Shutdown(context.Context, *ShutdownRequest) (*ShutdownResponse, error) + Reboot(context.Context, *RebootRequest) (*RebootResponse, error) + // Triggers an upgrade of the running FeOS binary by pulling it from a URL. + UpgradeFeosBinary(context.Context, *UpgradeFeosBinaryRequest) (*UpgradeFeosBinaryResponse, error) + // Streams kernel log messages from /dev/kmsg. + StreamKernelLogs(*StreamKernelLogsRequest, HostService_StreamKernelLogsServer) error + // Streams logs from the internal FeOS logger. + StreamFeOSLogs(*StreamFeosLogsRequest, HostService_StreamFeOSLogsServer) error + // Retrieves version information about the host system. + GetVersionInfo(context.Context, *GetVersionInfoRequest) (*GetVersionInfoResponse, error) + mustEmbedUnimplementedHostServiceServer() +} + +// UnimplementedHostServiceServer must be embedded to have forward compatible implementations. +type UnimplementedHostServiceServer struct { +} + +func (UnimplementedHostServiceServer) Hostname(context.Context, *HostnameRequest) (*HostnameResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Hostname not implemented") +} +func (UnimplementedHostServiceServer) GetMemory(context.Context, *MemoryRequest) (*MemoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMemory not implemented") +} +func (UnimplementedHostServiceServer) GetCPUInfo(context.Context, *GetCPUInfoRequest) (*GetCPUInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCPUInfo not implemented") +} +func (UnimplementedHostServiceServer) GetNetworkInfo(context.Context, *GetNetworkInfoRequest) (*GetNetworkInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNetworkInfo not implemented") +} +func (UnimplementedHostServiceServer) Shutdown(context.Context, *ShutdownRequest) (*ShutdownResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Shutdown not implemented") +} +func (UnimplementedHostServiceServer) Reboot(context.Context, *RebootRequest) (*RebootResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Reboot not implemented") +} +func (UnimplementedHostServiceServer) UpgradeFeosBinary(context.Context, *UpgradeFeosBinaryRequest) (*UpgradeFeosBinaryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpgradeFeosBinary not implemented") +} +func (UnimplementedHostServiceServer) StreamKernelLogs(*StreamKernelLogsRequest, HostService_StreamKernelLogsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamKernelLogs not implemented") +} +func (UnimplementedHostServiceServer) StreamFeOSLogs(*StreamFeosLogsRequest, HostService_StreamFeOSLogsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamFeOSLogs not implemented") +} +func (UnimplementedHostServiceServer) GetVersionInfo(context.Context, *GetVersionInfoRequest) (*GetVersionInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetVersionInfo not implemented") +} +func (UnimplementedHostServiceServer) mustEmbedUnimplementedHostServiceServer() {} + +// UnsafeHostServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to HostServiceServer will +// result in compilation errors. +type UnsafeHostServiceServer interface { + mustEmbedUnimplementedHostServiceServer() +} + +func RegisterHostServiceServer(s grpc.ServiceRegistrar, srv HostServiceServer) { + s.RegisterService(&HostService_ServiceDesc, srv) +} + +func _HostService_Hostname_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(HostnameRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).Hostname(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_Hostname_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).Hostname(ctx, req.(*HostnameRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_GetMemory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MemoryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).GetMemory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_GetMemory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).GetMemory(ctx, req.(*MemoryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_GetCPUInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCPUInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).GetCPUInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_GetCPUInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).GetCPUInfo(ctx, req.(*GetCPUInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_GetNetworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNetworkInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).GetNetworkInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_GetNetworkInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).GetNetworkInfo(ctx, req.(*GetNetworkInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ShutdownRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).Shutdown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_Shutdown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).Shutdown(ctx, req.(*ShutdownRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_Reboot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RebootRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).Reboot(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_Reboot_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).Reboot(ctx, req.(*RebootRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_UpgradeFeosBinary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpgradeFeosBinaryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).UpgradeFeosBinary(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_UpgradeFeosBinary_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).UpgradeFeosBinary(ctx, req.(*UpgradeFeosBinaryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HostService_StreamKernelLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamKernelLogsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(HostServiceServer).StreamKernelLogs(m, &hostServiceStreamKernelLogsServer{stream}) +} + +type HostService_StreamKernelLogsServer interface { + Send(*KernelLogEntry) error + grpc.ServerStream +} + +type hostServiceStreamKernelLogsServer struct { + grpc.ServerStream +} + +func (x *hostServiceStreamKernelLogsServer) Send(m *KernelLogEntry) error { + return x.ServerStream.SendMsg(m) +} + +func _HostService_StreamFeOSLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamFeosLogsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(HostServiceServer).StreamFeOSLogs(m, &hostServiceStreamFeOSLogsServer{stream}) +} + +type HostService_StreamFeOSLogsServer interface { + Send(*FeosLogEntry) error + grpc.ServerStream +} + +type hostServiceStreamFeOSLogsServer struct { + grpc.ServerStream +} + +func (x *hostServiceStreamFeOSLogsServer) Send(m *FeosLogEntry) error { + return x.ServerStream.SendMsg(m) +} + +func _HostService_GetVersionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetVersionInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HostServiceServer).GetVersionInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HostService_GetVersionInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HostServiceServer).GetVersionInfo(ctx, req.(*GetVersionInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// HostService_ServiceDesc is the grpc.ServiceDesc for HostService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var HostService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "feos.host.v1.HostService", + HandlerType: (*HostServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Hostname", + Handler: _HostService_Hostname_Handler, + }, + { + MethodName: "GetMemory", + Handler: _HostService_GetMemory_Handler, + }, + { + MethodName: "GetCPUInfo", + Handler: _HostService_GetCPUInfo_Handler, + }, + { + MethodName: "GetNetworkInfo", + Handler: _HostService_GetNetworkInfo_Handler, + }, + { + MethodName: "Shutdown", + Handler: _HostService_Shutdown_Handler, + }, + { + MethodName: "Reboot", + Handler: _HostService_Reboot_Handler, + }, + { + MethodName: "UpgradeFeosBinary", + Handler: _HostService_UpgradeFeosBinary_Handler, + }, + { + MethodName: "GetVersionInfo", + Handler: _HostService_GetVersionInfo_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamKernelLogs", + Handler: _HostService_StreamKernelLogs_Handler, + ServerStreams: true, + }, + { + StreamName: "StreamFeOSLogs", + Handler: _HostService_StreamFeOSLogs_Handler, + ServerStreams: true, + }, + }, + Metadata: "v1/host.proto", +} diff --git a/go/feos-go/gen/feos/image/vmm/api/v1/image.pb.go b/go/feos-go/gen/feos/image/vmm/api/v1/image.pb.go new file mode 100644 index 0000000..94ad3bf --- /dev/null +++ b/go/feos-go/gen/feos/image/vmm/api/v1/image.pb.go @@ -0,0 +1,794 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.12.4 +// source: v1/image.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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 ImageState int32 + +const ( + ImageState_IMAGE_STATE_UNSPECIFIED ImageState = 0 + // The requested image UUID is not known to the service. + ImageState_NOT_FOUND ImageState = 1 + // The image pull is in progress. + ImageState_DOWNLOADING ImageState = 2 + // The image is downloaded, unpacked, and ready for use. + ImageState_READY ImageState = 3 + // The image pull failed. The 'message' field in ImageStatusResponse will have details. + ImageState_PULL_FAILED ImageState = 4 +) + +// Enum value maps for ImageState. +var ( + ImageState_name = map[int32]string{ + 0: "IMAGE_STATE_UNSPECIFIED", + 1: "NOT_FOUND", + 2: "DOWNLOADING", + 3: "READY", + 4: "PULL_FAILED", + } + ImageState_value = map[string]int32{ + "IMAGE_STATE_UNSPECIFIED": 0, + "NOT_FOUND": 1, + "DOWNLOADING": 2, + "READY": 3, + "PULL_FAILED": 4, + } +) + +func (x ImageState) Enum() *ImageState { + p := new(ImageState) + *p = x + return p +} + +func (x ImageState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ImageState) Descriptor() protoreflect.EnumDescriptor { + return file_v1_image_proto_enumTypes[0].Descriptor() +} + +func (ImageState) Type() protoreflect.EnumType { + return &file_v1_image_proto_enumTypes[0] +} + +func (x ImageState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ImageState.Descriptor instead. +func (ImageState) EnumDescriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{0} +} + +type ImageInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Server-generated unique ID for the image. + ImageUuid string `protobuf:"bytes,1,opt,name=image_uuid,json=imageUuid,proto3" json:"image_uuid,omitempty"` + // The original reference used to pull the image (e.g., "alpine:latest"). + ImageRef string `protobuf:"bytes,2,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` + // The current state of the image. + State ImageState `protobuf:"varint,3,opt,name=state,proto3,enum=feos.image.vmm.api.v1.ImageState" json:"state,omitempty"` +} + +func (x *ImageInfo) Reset() { + *x = ImageInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageInfo) ProtoMessage() {} + +func (x *ImageInfo) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 ImageInfo.ProtoReflect.Descriptor instead. +func (*ImageInfo) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{0} +} + +func (x *ImageInfo) GetImageUuid() string { + if x != nil { + return x.ImageUuid + } + return "" +} + +func (x *ImageInfo) GetImageRef() string { + if x != nil { + return x.ImageRef + } + return "" +} + +func (x *ImageInfo) GetState() ImageState { + if x != nil { + return x.State + } + return ImageState_IMAGE_STATE_UNSPECIFIED +} + +type PullImageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The full reference to the OCI image, including the registry and tag. + // e.g., "docker.io/library/alpine:latest" + ImageRef string `protobuf:"bytes,1,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` +} + +func (x *PullImageRequest) Reset() { + *x = PullImageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PullImageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PullImageRequest) ProtoMessage() {} + +func (x *PullImageRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 PullImageRequest.ProtoReflect.Descriptor instead. +func (*PullImageRequest) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{1} +} + +func (x *PullImageRequest) GetImageRef() string { + if x != nil { + return x.ImageRef + } + return "" +} + +type PullImageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The server-generated unique ID for the image being pulled. + // Use this UUID to watch the download status and to create a VM. + ImageUuid string `protobuf:"bytes,1,opt,name=image_uuid,json=imageUuid,proto3" json:"image_uuid,omitempty"` +} + +func (x *PullImageResponse) Reset() { + *x = PullImageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PullImageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PullImageResponse) ProtoMessage() {} + +func (x *PullImageResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 PullImageResponse.ProtoReflect.Descriptor instead. +func (*PullImageResponse) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{2} +} + +func (x *PullImageResponse) GetImageUuid() string { + if x != nil { + return x.ImageUuid + } + return "" +} + +type WatchImageStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ImageUuid string `protobuf:"bytes,1,opt,name=image_uuid,json=imageUuid,proto3" json:"image_uuid,omitempty"` +} + +func (x *WatchImageStatusRequest) Reset() { + *x = WatchImageStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WatchImageStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WatchImageStatusRequest) ProtoMessage() {} + +func (x *WatchImageStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 WatchImageStatusRequest.ProtoReflect.Descriptor instead. +func (*WatchImageStatusRequest) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{3} +} + +func (x *WatchImageStatusRequest) GetImageUuid() string { + if x != nil { + return x.ImageUuid + } + return "" +} + +type ImageStatusResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + State ImageState `protobuf:"varint,1,opt,name=state,proto3,enum=feos.image.vmm.api.v1.ImageState" json:"state,omitempty"` + // Optional: Progress percentage (0-100) when state is DOWNLOADING. + ProgressPercent uint32 `protobuf:"varint,2,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"` + // Optional: A human-readable message, especially useful for PULL_FAILED state. + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *ImageStatusResponse) Reset() { + *x = ImageStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageStatusResponse) ProtoMessage() {} + +func (x *ImageStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 ImageStatusResponse.ProtoReflect.Descriptor instead. +func (*ImageStatusResponse) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{4} +} + +func (x *ImageStatusResponse) GetState() ImageState { + if x != nil { + return x.State + } + return ImageState_IMAGE_STATE_UNSPECIFIED +} + +func (x *ImageStatusResponse) GetProgressPercent() uint32 { + if x != nil { + return x.ProgressPercent + } + return 0 +} + +func (x *ImageStatusResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type ListImagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListImagesRequest) Reset() { + *x = ListImagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListImagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListImagesRequest) ProtoMessage() {} + +func (x *ListImagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 ListImagesRequest.ProtoReflect.Descriptor instead. +func (*ListImagesRequest) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{5} +} + +type ListImagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Images []*ImageInfo `protobuf:"bytes,1,rep,name=images,proto3" json:"images,omitempty"` +} + +func (x *ListImagesResponse) Reset() { + *x = ListImagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListImagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListImagesResponse) ProtoMessage() {} + +func (x *ListImagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 ListImagesResponse.ProtoReflect.Descriptor instead. +func (*ListImagesResponse) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{6} +} + +func (x *ListImagesResponse) GetImages() []*ImageInfo { + if x != nil { + return x.Images + } + return nil +} + +type DeleteImageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ImageUuid string `protobuf:"bytes,1,opt,name=image_uuid,json=imageUuid,proto3" json:"image_uuid,omitempty"` +} + +func (x *DeleteImageRequest) Reset() { + *x = DeleteImageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteImageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteImageRequest) ProtoMessage() {} + +func (x *DeleteImageRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 DeleteImageRequest.ProtoReflect.Descriptor instead. +func (*DeleteImageRequest) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{7} +} + +func (x *DeleteImageRequest) GetImageUuid() string { + if x != nil { + return x.ImageUuid + } + return "" +} + +type DeleteImageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteImageResponse) Reset() { + *x = DeleteImageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_image_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteImageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteImageResponse) ProtoMessage() {} + +func (x *DeleteImageResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_image_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 DeleteImageResponse.ProtoReflect.Descriptor instead. +func (*DeleteImageResponse) Descriptor() ([]byte, []int) { + return file_v1_image_proto_rawDescGZIP(), []int{8} +} + +var File_v1_image_proto protoreflect.FileDescriptor + +var file_v1_image_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x76, 0x31, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x15, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x22, 0x80, 0x01, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, + 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x66, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, + 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2f, 0x0a, 0x10, 0x50, 0x75, + 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x22, 0x32, 0x0a, 0x11, 0x50, + 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, + 0x38, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x13, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, + 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2a, 0x65, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, + 0x0a, 0x17, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, + 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x4f, + 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x52, + 0x45, 0x41, 0x44, 0x59, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x55, 0x4c, 0x4c, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xa9, 0x03, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x50, 0x75, 0x6c, 0x6c, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x27, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, + 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, + 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, + 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x69, 0x72, 0x6f, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2d, 0x64, 0x65, 0x76, 0x2f, 0x66, + 0x65, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x67, + 0x65, 0x6e, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x6d, + 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_v1_image_proto_rawDescOnce sync.Once + file_v1_image_proto_rawDescData = file_v1_image_proto_rawDesc +) + +func file_v1_image_proto_rawDescGZIP() []byte { + file_v1_image_proto_rawDescOnce.Do(func() { + file_v1_image_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_image_proto_rawDescData) + }) + return file_v1_image_proto_rawDescData +} + +var file_v1_image_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_v1_image_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_v1_image_proto_goTypes = []interface{}{ + (ImageState)(0), // 0: feos.image.vmm.api.v1.ImageState + (*ImageInfo)(nil), // 1: feos.image.vmm.api.v1.ImageInfo + (*PullImageRequest)(nil), // 2: feos.image.vmm.api.v1.PullImageRequest + (*PullImageResponse)(nil), // 3: feos.image.vmm.api.v1.PullImageResponse + (*WatchImageStatusRequest)(nil), // 4: feos.image.vmm.api.v1.WatchImageStatusRequest + (*ImageStatusResponse)(nil), // 5: feos.image.vmm.api.v1.ImageStatusResponse + (*ListImagesRequest)(nil), // 6: feos.image.vmm.api.v1.ListImagesRequest + (*ListImagesResponse)(nil), // 7: feos.image.vmm.api.v1.ListImagesResponse + (*DeleteImageRequest)(nil), // 8: feos.image.vmm.api.v1.DeleteImageRequest + (*DeleteImageResponse)(nil), // 9: feos.image.vmm.api.v1.DeleteImageResponse +} +var file_v1_image_proto_depIdxs = []int32{ + 0, // 0: feos.image.vmm.api.v1.ImageInfo.state:type_name -> feos.image.vmm.api.v1.ImageState + 0, // 1: feos.image.vmm.api.v1.ImageStatusResponse.state:type_name -> feos.image.vmm.api.v1.ImageState + 1, // 2: feos.image.vmm.api.v1.ListImagesResponse.images:type_name -> feos.image.vmm.api.v1.ImageInfo + 2, // 3: feos.image.vmm.api.v1.ImageService.PullImage:input_type -> feos.image.vmm.api.v1.PullImageRequest + 4, // 4: feos.image.vmm.api.v1.ImageService.WatchImageStatus:input_type -> feos.image.vmm.api.v1.WatchImageStatusRequest + 6, // 5: feos.image.vmm.api.v1.ImageService.ListImages:input_type -> feos.image.vmm.api.v1.ListImagesRequest + 8, // 6: feos.image.vmm.api.v1.ImageService.DeleteImage:input_type -> feos.image.vmm.api.v1.DeleteImageRequest + 3, // 7: feos.image.vmm.api.v1.ImageService.PullImage:output_type -> feos.image.vmm.api.v1.PullImageResponse + 5, // 8: feos.image.vmm.api.v1.ImageService.WatchImageStatus:output_type -> feos.image.vmm.api.v1.ImageStatusResponse + 7, // 9: feos.image.vmm.api.v1.ImageService.ListImages:output_type -> feos.image.vmm.api.v1.ListImagesResponse + 9, // 10: feos.image.vmm.api.v1.ImageService.DeleteImage:output_type -> feos.image.vmm.api.v1.DeleteImageResponse + 7, // [7:11] is the sub-list for method output_type + 3, // [3:7] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_v1_image_proto_init() } +func file_v1_image_proto_init() { + if File_v1_image_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_image_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PullImageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PullImageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchImageStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListImagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListImagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteImageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_image_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteImageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_image_proto_rawDesc, + NumEnums: 1, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v1_image_proto_goTypes, + DependencyIndexes: file_v1_image_proto_depIdxs, + EnumInfos: file_v1_image_proto_enumTypes, + MessageInfos: file_v1_image_proto_msgTypes, + }.Build() + File_v1_image_proto = out.File + file_v1_image_proto_rawDesc = nil + file_v1_image_proto_goTypes = nil + file_v1_image_proto_depIdxs = nil +} diff --git a/go/feos-go/gen/feos/image/vmm/api/v1/image_grpc.pb.go b/go/feos-go/gen/feos/image/vmm/api/v1/image_grpc.pb.go new file mode 100644 index 0000000..aeef0b2 --- /dev/null +++ b/go/feos-go/gen/feos/image/vmm/api/v1/image_grpc.pb.go @@ -0,0 +1,267 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.12.4 +// source: v1/image.proto + +package v1 + +import ( + context "context" + + 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 + +const ( + ImageService_PullImage_FullMethodName = "/feos.image.vmm.api.v1.ImageService/PullImage" + ImageService_WatchImageStatus_FullMethodName = "/feos.image.vmm.api.v1.ImageService/WatchImageStatus" + ImageService_ListImages_FullMethodName = "/feos.image.vmm.api.v1.ImageService/ListImages" + ImageService_DeleteImage_FullMethodName = "/feos.image.vmm.api.v1.ImageService/DeleteImage" +) + +// ImageServiceClient is the client API for ImageService 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 ImageServiceClient interface { + // Initiates the pull of an OCI image from a remote registry. + // This call is non-blocking. It returns a UUID for the image immediately, + // which can then be used to track the download status. + PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error) + // Watches the status of an image pull operation. This is a server-streaming + // call that will send updates as the image's state changes. The stream + // closes when the image pull reaches a terminal state (READY or PULL_FAILED). + WatchImageStatus(ctx context.Context, in *WatchImageStatusRequest, opts ...grpc.CallOption) (ImageService_WatchImageStatusClient, error) + // Lists all images available locally in the service's cache. + ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error) + // Removes a locally cached image. + DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) +} + +type imageServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewImageServiceClient(cc grpc.ClientConnInterface) ImageServiceClient { + return &imageServiceClient{cc} +} + +func (c *imageServiceClient) PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error) { + out := new(PullImageResponse) + err := c.cc.Invoke(ctx, ImageService_PullImage_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *imageServiceClient) WatchImageStatus(ctx context.Context, in *WatchImageStatusRequest, opts ...grpc.CallOption) (ImageService_WatchImageStatusClient, error) { + stream, err := c.cc.NewStream(ctx, &ImageService_ServiceDesc.Streams[0], ImageService_WatchImageStatus_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &imageServiceWatchImageStatusClient{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 ImageService_WatchImageStatusClient interface { + Recv() (*ImageStatusResponse, error) + grpc.ClientStream +} + +type imageServiceWatchImageStatusClient struct { + grpc.ClientStream +} + +func (x *imageServiceWatchImageStatusClient) Recv() (*ImageStatusResponse, error) { + m := new(ImageStatusResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *imageServiceClient) ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error) { + out := new(ListImagesResponse) + err := c.cc.Invoke(ctx, ImageService_ListImages_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *imageServiceClient) DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) { + out := new(DeleteImageResponse) + err := c.cc.Invoke(ctx, ImageService_DeleteImage_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ImageServiceServer is the server API for ImageService service. +// All implementations must embed UnimplementedImageServiceServer +// for forward compatibility +type ImageServiceServer interface { + // Initiates the pull of an OCI image from a remote registry. + // This call is non-blocking. It returns a UUID for the image immediately, + // which can then be used to track the download status. + PullImage(context.Context, *PullImageRequest) (*PullImageResponse, error) + // Watches the status of an image pull operation. This is a server-streaming + // call that will send updates as the image's state changes. The stream + // closes when the image pull reaches a terminal state (READY or PULL_FAILED). + WatchImageStatus(*WatchImageStatusRequest, ImageService_WatchImageStatusServer) error + // Lists all images available locally in the service's cache. + ListImages(context.Context, *ListImagesRequest) (*ListImagesResponse, error) + // Removes a locally cached image. + DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) + mustEmbedUnimplementedImageServiceServer() +} + +// UnimplementedImageServiceServer must be embedded to have forward compatible implementations. +type UnimplementedImageServiceServer struct { +} + +func (UnimplementedImageServiceServer) PullImage(context.Context, *PullImageRequest) (*PullImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PullImage not implemented") +} +func (UnimplementedImageServiceServer) WatchImageStatus(*WatchImageStatusRequest, ImageService_WatchImageStatusServer) error { + return status.Errorf(codes.Unimplemented, "method WatchImageStatus not implemented") +} +func (UnimplementedImageServiceServer) ListImages(context.Context, *ListImagesRequest) (*ListImagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListImages not implemented") +} +func (UnimplementedImageServiceServer) DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteImage not implemented") +} +func (UnimplementedImageServiceServer) mustEmbedUnimplementedImageServiceServer() {} + +// UnsafeImageServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ImageServiceServer will +// result in compilation errors. +type UnsafeImageServiceServer interface { + mustEmbedUnimplementedImageServiceServer() +} + +func RegisterImageServiceServer(s grpc.ServiceRegistrar, srv ImageServiceServer) { + s.RegisterService(&ImageService_ServiceDesc, srv) +} + +func _ImageService_PullImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PullImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ImageServiceServer).PullImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ImageService_PullImage_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ImageServiceServer).PullImage(ctx, req.(*PullImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ImageService_WatchImageStatus_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(WatchImageStatusRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ImageServiceServer).WatchImageStatus(m, &imageServiceWatchImageStatusServer{stream}) +} + +type ImageService_WatchImageStatusServer interface { + Send(*ImageStatusResponse) error + grpc.ServerStream +} + +type imageServiceWatchImageStatusServer struct { + grpc.ServerStream +} + +func (x *imageServiceWatchImageStatusServer) Send(m *ImageStatusResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _ImageService_ListImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListImagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ImageServiceServer).ListImages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ImageService_ListImages_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ImageServiceServer).ListImages(ctx, req.(*ListImagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ImageService_DeleteImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ImageServiceServer).DeleteImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ImageService_DeleteImage_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ImageServiceServer).DeleteImage(ctx, req.(*DeleteImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ImageService_ServiceDesc is the grpc.ServiceDesc for ImageService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ImageService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "feos.image.vmm.api.v1.ImageService", + HandlerType: (*ImageServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PullImage", + Handler: _ImageService_PullImage_Handler, + }, + { + MethodName: "ListImages", + Handler: _ImageService_ListImages_Handler, + }, + { + MethodName: "DeleteImage", + Handler: _ImageService_DeleteImage_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "WatchImageStatus", + Handler: _ImageService_WatchImageStatus_Handler, + ServerStreams: true, + }, + }, + Metadata: "v1/image.proto", +} diff --git a/go/feos-go/gen/feos/task/v1/task.pb.go b/go/feos-go/gen/feos/task/v1/task.pb.go new file mode 100644 index 0000000..b7597e3 --- /dev/null +++ b/go/feos-go/gen/feos/task/v1/task.pb.go @@ -0,0 +1,771 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.12.4 +// source: v1/task.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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 CreateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // Absolute path to the OCI bundle directory, which contains the 'config.json' + // and the 'rootfs' subdirectory. + BundlePath string `protobuf:"bytes,2,opt,name=bundle_path,json=bundlePath,proto3" json:"bundle_path,omitempty"` + // Path to a socket or file for the container's stdin. + StdinPath string `protobuf:"bytes,3,opt,name=stdin_path,json=stdinPath,proto3" json:"stdin_path,omitempty"` + // Path to a socket or file for the container's stdout. + StdoutPath string `protobuf:"bytes,4,opt,name=stdout_path,json=stdoutPath,proto3" json:"stdout_path,omitempty"` + // Path to a socket or file for the container's stderr. + StderrPath string `protobuf:"bytes,5,opt,name=stderr_path,json=stderrPath,proto3" json:"stderr_path,omitempty"` +} + +func (x *CreateRequest) Reset() { + *x = CreateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRequest) ProtoMessage() {} + +func (x *CreateRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 CreateRequest.ProtoReflect.Descriptor instead. +func (*CreateRequest) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *CreateRequest) GetBundlePath() string { + if x != nil { + return x.BundlePath + } + return "" +} + +func (x *CreateRequest) GetStdinPath() string { + if x != nil { + return x.StdinPath + } + return "" +} + +func (x *CreateRequest) GetStdoutPath() string { + if x != nil { + return x.StdoutPath + } + return "" +} + +func (x *CreateRequest) GetStderrPath() string { + if x != nil { + return x.StderrPath + } + return "" +} + +type CreateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The process ID of the created container's init process. + Pid int64 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"` +} + +func (x *CreateResponse) Reset() { + *x = CreateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResponse) ProtoMessage() {} + +func (x *CreateResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 CreateResponse.ProtoReflect.Descriptor instead. +func (*CreateResponse) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateResponse) GetPid() int64 { + if x != nil { + return x.Pid + } + return 0 +} + +type StartRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *StartRequest) Reset() { + *x = StartRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartRequest) ProtoMessage() {} + +func (x *StartRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 StartRequest.ProtoReflect.Descriptor instead. +func (*StartRequest) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{2} +} + +func (x *StartRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type StartResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StartResponse) Reset() { + *x = StartResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartResponse) ProtoMessage() {} + +func (x *StartResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 StartResponse.ProtoReflect.Descriptor instead. +func (*StartResponse) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{3} +} + +type KillRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // The signal number to send to the process. + Signal uint32 `protobuf:"varint,2,opt,name=signal,proto3" json:"signal,omitempty"` +} + +func (x *KillRequest) Reset() { + *x = KillRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KillRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KillRequest) ProtoMessage() {} + +func (x *KillRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 KillRequest.ProtoReflect.Descriptor instead. +func (*KillRequest) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{4} +} + +func (x *KillRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +func (x *KillRequest) GetSignal() uint32 { + if x != nil { + return x.Signal + } + return 0 +} + +type KillResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *KillResponse) Reset() { + *x = KillResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KillResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KillResponse) ProtoMessage() {} + +func (x *KillResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 KillResponse.ProtoReflect.Descriptor instead. +func (*KillResponse) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{5} +} + +type DeleteRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *DeleteRequest) Reset() { + *x = DeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteRequest) ProtoMessage() {} + +func (x *DeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 DeleteRequest.ProtoReflect.Descriptor instead. +func (*DeleteRequest) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type DeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResponse) Reset() { + *x = DeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResponse) ProtoMessage() {} + +func (x *DeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 DeleteResponse.ProtoReflect.Descriptor instead. +func (*DeleteResponse) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{7} +} + +type WaitRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` +} + +func (x *WaitRequest) Reset() { + *x = WaitRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WaitRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WaitRequest) ProtoMessage() {} + +func (x *WaitRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 WaitRequest.ProtoReflect.Descriptor instead. +func (*WaitRequest) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{8} +} + +func (x *WaitRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type WaitResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` +} + +func (x *WaitResponse) Reset() { + *x = WaitResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_task_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WaitResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WaitResponse) ProtoMessage() {} + +func (x *WaitResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_task_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 WaitResponse.ProtoReflect.Descriptor instead. +func (*WaitResponse) Descriptor() ([]byte, []int) { + return file_v1_task_proto_rawDescGZIP(), []int{9} +} + +func (x *WaitResponse) GetExitCode() int32 { + if x != nil { + return x.ExitCode + } + return 0 +} + +var File_v1_task_proto protoreflect.FileDescriptor + +var file_v1_task_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0c, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x22, 0xb4, 0x01, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, + 0x50, 0x61, 0x74, 0x68, 0x22, 0x22, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x0f, 0x0a, 0x0d, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x0a, 0x0b, + 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x22, 0x0e, 0x0a, 0x0c, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, 0x0b, + 0x57, 0x61, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2b, + 0x0a, 0x0c, 0x57, 0x61, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x32, 0xd7, 0x02, 0x0a, 0x0b, + 0x54, 0x61, 0x73, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x40, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x4b, 0x69, 0x6c, 0x6c, 0x12, 0x19, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x66, 0x65, + 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x57, 0x61, 0x69, 0x74, 0x12, 0x19, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, + 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x72, 0x6f, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2d, 0x64, 0x65, 0x76, + 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2d, 0x67, 0x6f, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_v1_task_proto_rawDescOnce sync.Once + file_v1_task_proto_rawDescData = file_v1_task_proto_rawDesc +) + +func file_v1_task_proto_rawDescGZIP() []byte { + file_v1_task_proto_rawDescOnce.Do(func() { + file_v1_task_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_task_proto_rawDescData) + }) + return file_v1_task_proto_rawDescData +} + +var file_v1_task_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_v1_task_proto_goTypes = []interface{}{ + (*CreateRequest)(nil), // 0: feos.task.v1.CreateRequest + (*CreateResponse)(nil), // 1: feos.task.v1.CreateResponse + (*StartRequest)(nil), // 2: feos.task.v1.StartRequest + (*StartResponse)(nil), // 3: feos.task.v1.StartResponse + (*KillRequest)(nil), // 4: feos.task.v1.KillRequest + (*KillResponse)(nil), // 5: feos.task.v1.KillResponse + (*DeleteRequest)(nil), // 6: feos.task.v1.DeleteRequest + (*DeleteResponse)(nil), // 7: feos.task.v1.DeleteResponse + (*WaitRequest)(nil), // 8: feos.task.v1.WaitRequest + (*WaitResponse)(nil), // 9: feos.task.v1.WaitResponse +} +var file_v1_task_proto_depIdxs = []int32{ + 0, // 0: feos.task.v1.TaskService.Create:input_type -> feos.task.v1.CreateRequest + 2, // 1: feos.task.v1.TaskService.Start:input_type -> feos.task.v1.StartRequest + 4, // 2: feos.task.v1.TaskService.Kill:input_type -> feos.task.v1.KillRequest + 6, // 3: feos.task.v1.TaskService.Delete:input_type -> feos.task.v1.DeleteRequest + 8, // 4: feos.task.v1.TaskService.Wait:input_type -> feos.task.v1.WaitRequest + 1, // 5: feos.task.v1.TaskService.Create:output_type -> feos.task.v1.CreateResponse + 3, // 6: feos.task.v1.TaskService.Start:output_type -> feos.task.v1.StartResponse + 5, // 7: feos.task.v1.TaskService.Kill:output_type -> feos.task.v1.KillResponse + 7, // 8: feos.task.v1.TaskService.Delete:output_type -> feos.task.v1.DeleteResponse + 9, // 9: feos.task.v1.TaskService.Wait:output_type -> feos.task.v1.WaitResponse + 5, // [5:10] is the sub-list for method output_type + 0, // [0:5] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_v1_task_proto_init() } +func file_v1_task_proto_init() { + if File_v1_task_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_task_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KillRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KillResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WaitRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_task_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WaitResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_task_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v1_task_proto_goTypes, + DependencyIndexes: file_v1_task_proto_depIdxs, + MessageInfos: file_v1_task_proto_msgTypes, + }.Build() + File_v1_task_proto = out.File + file_v1_task_proto_rawDesc = nil + file_v1_task_proto_goTypes = nil + file_v1_task_proto_depIdxs = nil +} diff --git a/go/feos-go/gen/feos/task/v1/task_grpc.pb.go b/go/feos-go/gen/feos/task/v1/task_grpc.pb.go new file mode 100644 index 0000000..923375e --- /dev/null +++ b/go/feos-go/gen/feos/task/v1/task_grpc.pb.go @@ -0,0 +1,278 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.12.4 +// source: v1/task.proto + +package v1 + +import ( + context "context" + + 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 + +const ( + TaskService_Create_FullMethodName = "/feos.task.v1.TaskService/Create" + TaskService_Start_FullMethodName = "/feos.task.v1.TaskService/Start" + TaskService_Kill_FullMethodName = "/feos.task.v1.TaskService/Kill" + TaskService_Delete_FullMethodName = "/feos.task.v1.TaskService/Delete" + TaskService_Wait_FullMethodName = "/feos.task.v1.TaskService/Wait" +) + +// TaskServiceClient is the client API for TaskService 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 TaskServiceClient interface { + // Creates the container's environment based on an OCI bundle but does not + // start the user-specified process. + Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) + // Starts the user-specified process within the created container. + Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error) + // Sends a signal to the container's process. + Kill(ctx context.Context, in *KillRequest, opts ...grpc.CallOption) (*KillResponse, error) + // Deletes the container and cleans up its resources. The container must be + // stopped. + Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) + // Waits for the container's process to exit and returns its exit status. + // This is a long-polling RPC that will only return once the process has + // terminated. + Wait(ctx context.Context, in *WaitRequest, opts ...grpc.CallOption) (*WaitResponse, error) +} + +type taskServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewTaskServiceClient(cc grpc.ClientConnInterface) TaskServiceClient { + return &taskServiceClient{cc} +} + +func (c *taskServiceClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) { + out := new(CreateResponse) + err := c.cc.Invoke(ctx, TaskService_Create_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *taskServiceClient) Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error) { + out := new(StartResponse) + err := c.cc.Invoke(ctx, TaskService_Start_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *taskServiceClient) Kill(ctx context.Context, in *KillRequest, opts ...grpc.CallOption) (*KillResponse, error) { + out := new(KillResponse) + err := c.cc.Invoke(ctx, TaskService_Kill_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *taskServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) { + out := new(DeleteResponse) + err := c.cc.Invoke(ctx, TaskService_Delete_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *taskServiceClient) Wait(ctx context.Context, in *WaitRequest, opts ...grpc.CallOption) (*WaitResponse, error) { + out := new(WaitResponse) + err := c.cc.Invoke(ctx, TaskService_Wait_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// TaskServiceServer is the server API for TaskService service. +// All implementations must embed UnimplementedTaskServiceServer +// for forward compatibility +type TaskServiceServer interface { + // Creates the container's environment based on an OCI bundle but does not + // start the user-specified process. + Create(context.Context, *CreateRequest) (*CreateResponse, error) + // Starts the user-specified process within the created container. + Start(context.Context, *StartRequest) (*StartResponse, error) + // Sends a signal to the container's process. + Kill(context.Context, *KillRequest) (*KillResponse, error) + // Deletes the container and cleans up its resources. The container must be + // stopped. + Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) + // Waits for the container's process to exit and returns its exit status. + // This is a long-polling RPC that will only return once the process has + // terminated. + Wait(context.Context, *WaitRequest) (*WaitResponse, error) + mustEmbedUnimplementedTaskServiceServer() +} + +// UnimplementedTaskServiceServer must be embedded to have forward compatible implementations. +type UnimplementedTaskServiceServer struct { +} + +func (UnimplementedTaskServiceServer) Create(context.Context, *CreateRequest) (*CreateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedTaskServiceServer) Start(context.Context, *StartRequest) (*StartResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") +} +func (UnimplementedTaskServiceServer) Kill(context.Context, *KillRequest) (*KillResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Kill not implemented") +} +func (UnimplementedTaskServiceServer) Delete(context.Context, *DeleteRequest) (*DeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedTaskServiceServer) Wait(context.Context, *WaitRequest) (*WaitResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Wait not implemented") +} +func (UnimplementedTaskServiceServer) mustEmbedUnimplementedTaskServiceServer() {} + +// UnsafeTaskServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to TaskServiceServer will +// result in compilation errors. +type UnsafeTaskServiceServer interface { + mustEmbedUnimplementedTaskServiceServer() +} + +func RegisterTaskServiceServer(s grpc.ServiceRegistrar, srv TaskServiceServer) { + s.RegisterService(&TaskService_ServiceDesc, srv) +} + +func _TaskService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TaskServiceServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TaskService_Create_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TaskServiceServer).Create(ctx, req.(*CreateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TaskService_Start_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TaskServiceServer).Start(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TaskService_Start_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TaskServiceServer).Start(ctx, req.(*StartRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TaskService_Kill_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(KillRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TaskServiceServer).Kill(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TaskService_Kill_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TaskServiceServer).Kill(ctx, req.(*KillRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TaskService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TaskServiceServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TaskService_Delete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TaskServiceServer).Delete(ctx, req.(*DeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TaskService_Wait_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WaitRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TaskServiceServer).Wait(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TaskService_Wait_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TaskServiceServer).Wait(ctx, req.(*WaitRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// TaskService_ServiceDesc is the grpc.ServiceDesc for TaskService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var TaskService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "feos.task.v1.TaskService", + HandlerType: (*TaskServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _TaskService_Create_Handler, + }, + { + MethodName: "Start", + Handler: _TaskService_Start_Handler, + }, + { + MethodName: "Kill", + Handler: _TaskService_Kill_Handler, + }, + { + MethodName: "Delete", + Handler: _TaskService_Delete_Handler, + }, + { + MethodName: "Wait", + Handler: _TaskService_Wait_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "v1/task.proto", +} diff --git a/go/feos-go/gen/feos/vm/vmm/api/v1/vm.pb.go b/go/feos-go/gen/feos/vm/vmm/api/v1/vm.pb.go new file mode 100644 index 0000000..242f41a --- /dev/null +++ b/go/feos-go/gen/feos/vm/vmm/api/v1/vm.pb.go @@ -0,0 +1,3217 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.12.4 +// source: v1/vm.proto + +package v1 + +import ( + reflect "reflect" + sync "sync" + + any1 "github.com/golang/protobuf/ptypes/any" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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 VmState int32 + +const ( + VmState_VM_STATE_UNSPECIFIED VmState = 0 + VmState_VM_STATE_CREATING VmState = 1 + VmState_VM_STATE_CREATED VmState = 2 + VmState_VM_STATE_RUNNING VmState = 3 + VmState_VM_STATE_PAUSED VmState = 4 + VmState_VM_STATE_STOPPED VmState = 5 + VmState_VM_STATE_CRASHED VmState = 6 +) + +// Enum value maps for VmState. +var ( + VmState_name = map[int32]string{ + 0: "VM_STATE_UNSPECIFIED", + 1: "VM_STATE_CREATING", + 2: "VM_STATE_CREATED", + 3: "VM_STATE_RUNNING", + 4: "VM_STATE_PAUSED", + 5: "VM_STATE_STOPPED", + 6: "VM_STATE_CRASHED", + } + VmState_value = map[string]int32{ + "VM_STATE_UNSPECIFIED": 0, + "VM_STATE_CREATING": 1, + "VM_STATE_CREATED": 2, + "VM_STATE_RUNNING": 3, + "VM_STATE_PAUSED": 4, + "VM_STATE_STOPPED": 5, + "VM_STATE_CRASHED": 6, + } +) + +func (x VmState) Enum() *VmState { + p := new(VmState) + *p = x + return p +} + +func (x VmState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VmState) Descriptor() protoreflect.EnumDescriptor { + return file_v1_vm_proto_enumTypes[0].Descriptor() +} + +func (VmState) Type() protoreflect.EnumType { + return &file_v1_vm_proto_enumTypes[0] +} + +func (x VmState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VmState.Descriptor instead. +func (VmState) EnumDescriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{0} +} + +// Request stream from client to server for StreamVmConsole +type StreamVmConsoleRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The first message from the client MUST be an 'attach' message. + // All subsequent messages MUST be 'data' messages. + // + // Types that are assignable to Payload: + // + // *StreamVmConsoleRequest_Attach + // *StreamVmConsoleRequest_Data + Payload isStreamVmConsoleRequest_Payload `protobuf_oneof:"payload"` +} + +func (x *StreamVmConsoleRequest) Reset() { + *x = StreamVmConsoleRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamVmConsoleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamVmConsoleRequest) ProtoMessage() {} + +func (x *StreamVmConsoleRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 StreamVmConsoleRequest.ProtoReflect.Descriptor instead. +func (*StreamVmConsoleRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{0} +} + +func (m *StreamVmConsoleRequest) GetPayload() isStreamVmConsoleRequest_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *StreamVmConsoleRequest) GetAttach() *AttachConsoleMessage { + if x, ok := x.GetPayload().(*StreamVmConsoleRequest_Attach); ok { + return x.Attach + } + return nil +} + +func (x *StreamVmConsoleRequest) GetData() *ConsoleData { + if x, ok := x.GetPayload().(*StreamVmConsoleRequest_Data); ok { + return x.Data + } + return nil +} + +type isStreamVmConsoleRequest_Payload interface { + isStreamVmConsoleRequest_Payload() +} + +type StreamVmConsoleRequest_Attach struct { + Attach *AttachConsoleMessage `protobuf:"bytes,1,opt,name=attach,proto3,oneof"` +} + +type StreamVmConsoleRequest_Data struct { + Data *ConsoleData `protobuf:"bytes,2,opt,name=data,proto3,oneof"` +} + +func (*StreamVmConsoleRequest_Attach) isStreamVmConsoleRequest_Payload() {} + +func (*StreamVmConsoleRequest_Data) isStreamVmConsoleRequest_Payload() {} + +// Initial message to specify which VM to connect to. +type AttachConsoleMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *AttachConsoleMessage) Reset() { + *x = AttachConsoleMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttachConsoleMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttachConsoleMessage) ProtoMessage() {} + +func (x *AttachConsoleMessage) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 AttachConsoleMessage.ProtoReflect.Descriptor instead. +func (*AttachConsoleMessage) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{1} +} + +func (x *AttachConsoleMessage) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +// Subsequent messages carrying user input. +type ConsoleData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Input []byte `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` +} + +func (x *ConsoleData) Reset() { + *x = ConsoleData{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConsoleData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsoleData) ProtoMessage() {} + +func (x *ConsoleData) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 ConsoleData.ProtoReflect.Descriptor instead. +func (*ConsoleData) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{2} +} + +func (x *ConsoleData) GetInput() []byte { + if x != nil { + return x.Input + } + return nil +} + +// Response stream from server to client for StreamVmConsole +type StreamVmConsoleResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Output []byte `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` +} + +func (x *StreamVmConsoleResponse) Reset() { + *x = StreamVmConsoleResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamVmConsoleResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamVmConsoleResponse) ProtoMessage() {} + +func (x *StreamVmConsoleResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 StreamVmConsoleResponse.ProtoReflect.Descriptor instead. +func (*StreamVmConsoleResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{3} +} + +func (x *StreamVmConsoleResponse) GetOutput() []byte { + if x != nil { + return x.Output + } + return nil +} + +type VmStateChangedEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NewState VmState `protobuf:"varint,1,opt,name=new_state,json=newState,proto3,enum=feos.vm.vmm.api.v1.VmState" json:"new_state,omitempty"` + // An optional human-readable reason for the state change. + // e.g., "VM booted successfully" or "Shutdown signal received" + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *VmStateChangedEvent) Reset() { + *x = VmStateChangedEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VmStateChangedEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmStateChangedEvent) ProtoMessage() {} + +func (x *VmStateChangedEvent) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 VmStateChangedEvent.ProtoReflect.Descriptor instead. +func (*VmStateChangedEvent) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{4} +} + +func (x *VmStateChangedEvent) GetNewState() VmState { + if x != nil { + return x.NewState + } + return VmState_VM_STATE_UNSPECIFIED +} + +func (x *VmStateChangedEvent) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +type StreamVmEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the Virtual Machine for which to retrieve events. + // If not provided, the stream will start by sending the current state + // of all existing VMs, and then continue to stream all subsequent events + // from all VMs. + VmId *string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3,oneof" json:"vm_id,omitempty"` + // Filter the stream to only include events from a specific "component" in VM + WithComponentId string `protobuf:"bytes,5,opt,name=with_component_id,json=withComponentId,proto3" json:"with_component_id,omitempty"` + // Types that are assignable to StreamingMode: + // + // *StreamVmEventsRequest_TailEvents + // *StreamVmEventsRequest_TailId + // *StreamVmEventsRequest_TailSeconds + StreamingMode isStreamVmEventsRequest_StreamingMode `protobuf_oneof:"streaming_mode"` +} + +func (x *StreamVmEventsRequest) Reset() { + *x = StreamVmEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamVmEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamVmEventsRequest) ProtoMessage() {} + +func (x *StreamVmEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 StreamVmEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamVmEventsRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{5} +} + +func (x *StreamVmEventsRequest) GetVmId() string { + if x != nil && x.VmId != nil { + return *x.VmId + } + return "" +} + +func (x *StreamVmEventsRequest) GetWithComponentId() string { + if x != nil { + return x.WithComponentId + } + return "" +} + +func (m *StreamVmEventsRequest) GetStreamingMode() isStreamVmEventsRequest_StreamingMode { + if m != nil { + return m.StreamingMode + } + return nil +} + +func (x *StreamVmEventsRequest) GetTailEvents() int32 { + if x, ok := x.GetStreamingMode().(*StreamVmEventsRequest_TailEvents); ok { + return x.TailEvents + } + return 0 +} + +func (x *StreamVmEventsRequest) GetTailId() string { + if x, ok := x.GetStreamingMode().(*StreamVmEventsRequest_TailId); ok { + return x.TailId + } + return "" +} + +func (x *StreamVmEventsRequest) GetTailSeconds() int32 { + if x, ok := x.GetStreamingMode().(*StreamVmEventsRequest_TailSeconds); ok { + return x.TailSeconds + } + return 0 +} + +type isStreamVmEventsRequest_StreamingMode interface { + isStreamVmEventsRequest_StreamingMode() +} + +type StreamVmEventsRequest_TailEvents struct { + // 1. Get the last N events + TailEvents int32 `protobuf:"varint,2,opt,name=tail_events,json=tailEvents,proto3,oneof"` +} + +type StreamVmEventsRequest_TailId struct { + // 2. Get all events that have occurred since a specific event ID + TailId string `protobuf:"bytes,3,opt,name=tail_id,json=tailId,proto3,oneof"` +} + +type StreamVmEventsRequest_TailSeconds struct { + // 3. Get all events from the last N seconds + TailSeconds int32 `protobuf:"varint,4,opt,name=tail_seconds,json=tailSeconds,proto3,oneof"` +} + +func (*StreamVmEventsRequest_TailEvents) isStreamVmEventsRequest_StreamingMode() {} + +func (*StreamVmEventsRequest_TailId) isStreamVmEventsRequest_StreamingMode() {} + +func (*StreamVmEventsRequest_TailSeconds) isStreamVmEventsRequest_StreamingMode() {} + +type VmEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + Data *any1.Any `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + // A unique identifier for the event within the VM context. + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + // The ID of the component that generated this event. + ComponentId string `protobuf:"bytes,4,opt,name=component_id,json=componentId,proto3" json:"component_id,omitempty"` +} + +func (x *VmEvent) Reset() { + *x = VmEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VmEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmEvent) ProtoMessage() {} + +func (x *VmEvent) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 VmEvent.ProtoReflect.Descriptor instead. +func (*VmEvent) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{6} +} + +func (x *VmEvent) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *VmEvent) GetData() *any1.Any { + if x != nil { + return x.Data + } + return nil +} + +func (x *VmEvent) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *VmEvent) GetComponentId() string { + if x != nil { + return x.ComponentId + } + return "" +} + +type CreateVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *VmConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + VmId *string `protobuf:"bytes,2,opt,name=vm_id,json=vmId,proto3,oneof" json:"vm_id,omitempty"` +} + +func (x *CreateVmRequest) Reset() { + *x = CreateVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVmRequest) ProtoMessage() {} + +func (x *CreateVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 CreateVmRequest.ProtoReflect.Descriptor instead. +func (*CreateVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateVmRequest) GetConfig() *VmConfig { + if x != nil { + return x.Config + } + return nil +} + +func (x *CreateVmRequest) GetVmId() string { + if x != nil && x.VmId != nil { + return *x.VmId + } + return "" +} + +type CreateVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *CreateVmResponse) Reset() { + *x = CreateVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVmResponse) ProtoMessage() {} + +func (x *CreateVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 CreateVmResponse.ProtoReflect.Descriptor instead. +func (*CreateVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateVmResponse) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type GetVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *GetVmRequest) Reset() { + *x = GetVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVmRequest) ProtoMessage() {} + +func (x *GetVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 GetVmRequest.ProtoReflect.Descriptor instead. +func (*GetVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{9} +} + +func (x *GetVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type VmConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cpus *CpuConfig `protobuf:"bytes,1,opt,name=cpus,proto3" json:"cpus,omitempty"` + Memory *MemoryConfig `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` + // The full reference to the OCI image, including the registry and tag. + ImageRef string `protobuf:"bytes,3,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"` + // Additional data disks to attach to the VM. The root filesystem is + // expected to be part of the OCI image specified by vm_image_uuid. + Disks []*DiskConfig `protobuf:"bytes,4,rep,name=disks,proto3" json:"disks,omitempty"` + Net []*NetConfig `protobuf:"bytes,5,rep,name=net,proto3" json:"net,omitempty"` + Ignition *string `protobuf:"bytes,6,opt,name=ignition,proto3,oneof" json:"ignition,omitempty"` +} + +func (x *VmConfig) Reset() { + *x = VmConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VmConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmConfig) ProtoMessage() {} + +func (x *VmConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 VmConfig.ProtoReflect.Descriptor instead. +func (*VmConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{10} +} + +func (x *VmConfig) GetCpus() *CpuConfig { + if x != nil { + return x.Cpus + } + return nil +} + +func (x *VmConfig) GetMemory() *MemoryConfig { + if x != nil { + return x.Memory + } + return nil +} + +func (x *VmConfig) GetImageRef() string { + if x != nil { + return x.ImageRef + } + return "" +} + +func (x *VmConfig) GetDisks() []*DiskConfig { + if x != nil { + return x.Disks + } + return nil +} + +func (x *VmConfig) GetNet() []*NetConfig { + if x != nil { + return x.Net + } + return nil +} + +func (x *VmConfig) GetIgnition() string { + if x != nil && x.Ignition != nil { + return *x.Ignition + } + return "" +} + +type CpuConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BootVcpus uint32 `protobuf:"varint,1,opt,name=boot_vcpus,json=bootVcpus,proto3" json:"boot_vcpus,omitempty"` + MaxVcpus uint32 `protobuf:"varint,2,opt,name=max_vcpus,json=maxVcpus,proto3" json:"max_vcpus,omitempty"` +} + +func (x *CpuConfig) Reset() { + *x = CpuConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CpuConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CpuConfig) ProtoMessage() {} + +func (x *CpuConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 CpuConfig.ProtoReflect.Descriptor instead. +func (*CpuConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{11} +} + +func (x *CpuConfig) GetBootVcpus() uint32 { + if x != nil { + return x.BootVcpus + } + return 0 +} + +func (x *CpuConfig) GetMaxVcpus() uint32 { + if x != nil { + return x.MaxVcpus + } + return 0 +} + +type MemoryConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SizeMib uint64 `protobuf:"varint,1,opt,name=size_mib,json=sizeMib,proto3" json:"size_mib,omitempty"` // Memory size in Megabytes (MiB). + Hugepages bool `protobuf:"varint,2,opt,name=hugepages,proto3" json:"hugepages,omitempty"` +} + +func (x *MemoryConfig) Reset() { + *x = MemoryConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemoryConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryConfig) ProtoMessage() {} + +func (x *MemoryConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 MemoryConfig.ProtoReflect.Descriptor instead. +func (*MemoryConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{12} +} + +func (x *MemoryConfig) GetSizeMib() uint64 { + if x != nil { + return x.SizeMib + } + return 0 +} + +func (x *MemoryConfig) GetHugepages() bool { + if x != nil { + return x.Hugepages + } + return false +} + +type DiskConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` + // Types that are assignable to Backend: + // + // *DiskConfig_Path + // *DiskConfig_VfioPci + Backend isDiskConfig_Backend `protobuf_oneof:"backend"` + Readonly bool `protobuf:"varint,4,opt,name=readonly,proto3" json:"readonly,omitempty"` +} + +func (x *DiskConfig) Reset() { + *x = DiskConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiskConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiskConfig) ProtoMessage() {} + +func (x *DiskConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 DiskConfig.ProtoReflect.Descriptor instead. +func (*DiskConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{13} +} + +func (x *DiskConfig) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +func (m *DiskConfig) GetBackend() isDiskConfig_Backend { + if m != nil { + return m.Backend + } + return nil +} + +func (x *DiskConfig) GetPath() string { + if x, ok := x.GetBackend().(*DiskConfig_Path); ok { + return x.Path + } + return "" +} + +func (x *DiskConfig) GetVfioPci() *VfioPciConfig { + if x, ok := x.GetBackend().(*DiskConfig_VfioPci); ok { + return x.VfioPci + } + return nil +} + +func (x *DiskConfig) GetReadonly() bool { + if x != nil { + return x.Readonly + } + return false +} + +type isDiskConfig_Backend interface { + isDiskConfig_Backend() +} + +type DiskConfig_Path struct { + Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"` // Path on the host to the disk image file. +} + +type DiskConfig_VfioPci struct { + VfioPci *VfioPciConfig `protobuf:"bytes,3,opt,name=vfio_pci,json=vfioPci,proto3,oneof"` +} + +func (*DiskConfig_Path) isDiskConfig_Backend() {} + +func (*DiskConfig_VfioPci) isDiskConfig_Backend() {} + +type NetConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` + // Types that are assignable to Backend: + // + // *NetConfig_Tap + // *NetConfig_VfioPci + Backend isNetConfig_Backend `protobuf_oneof:"backend"` + MacAddress string `protobuf:"bytes,4,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` +} + +func (x *NetConfig) Reset() { + *x = NetConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetConfig) ProtoMessage() {} + +func (x *NetConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 NetConfig.ProtoReflect.Descriptor instead. +func (*NetConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{14} +} + +func (x *NetConfig) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +func (m *NetConfig) GetBackend() isNetConfig_Backend { + if m != nil { + return m.Backend + } + return nil +} + +func (x *NetConfig) GetTap() *TapConfig { + if x, ok := x.GetBackend().(*NetConfig_Tap); ok { + return x.Tap + } + return nil +} + +func (x *NetConfig) GetVfioPci() *VfioPciConfig { + if x, ok := x.GetBackend().(*NetConfig_VfioPci); ok { + return x.VfioPci + } + return nil +} + +func (x *NetConfig) GetMacAddress() string { + if x != nil { + return x.MacAddress + } + return "" +} + +type isNetConfig_Backend interface { + isNetConfig_Backend() +} + +type NetConfig_Tap struct { + Tap *TapConfig `protobuf:"bytes,2,opt,name=tap,proto3,oneof"` +} + +type NetConfig_VfioPci struct { + VfioPci *VfioPciConfig `protobuf:"bytes,3,opt,name=vfio_pci,json=vfioPci,proto3,oneof"` +} + +func (*NetConfig_Tap) isNetConfig_Backend() {} + +func (*NetConfig_VfioPci) isNetConfig_Backend() {} + +type TapConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TapName string `protobuf:"bytes,1,opt,name=tap_name,json=tapName,proto3" json:"tap_name,omitempty"` +} + +func (x *TapConfig) Reset() { + *x = TapConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TapConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TapConfig) ProtoMessage() {} + +func (x *TapConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_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 TapConfig.ProtoReflect.Descriptor instead. +func (*TapConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{15} +} + +func (x *TapConfig) GetTapName() string { + if x != nil { + return x.TapName + } + return "" +} + +type VfioPciConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bdf string `protobuf:"bytes,1,opt,name=bdf,proto3" json:"bdf,omitempty"` // e.g., "0000:03:00.0" +} + +func (x *VfioPciConfig) Reset() { + *x = VfioPciConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VfioPciConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VfioPciConfig) ProtoMessage() {} + +func (x *VfioPciConfig) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[16] + 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 VfioPciConfig.ProtoReflect.Descriptor instead. +func (*VfioPciConfig) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{16} +} + +func (x *VfioPciConfig) GetBdf() string { + if x != nil { + return x.Bdf + } + return "" +} + +type VmInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + State VmState `protobuf:"varint,2,opt,name=state,proto3,enum=feos.vm.vmm.api.v1.VmState" json:"state,omitempty"` + Config *VmConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *VmInfo) Reset() { + *x = VmInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VmInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmInfo) ProtoMessage() {} + +func (x *VmInfo) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[17] + 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 VmInfo.ProtoReflect.Descriptor instead. +func (*VmInfo) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{17} +} + +func (x *VmInfo) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *VmInfo) GetState() VmState { + if x != nil { + return x.State + } + return VmState_VM_STATE_UNSPECIFIED +} + +func (x *VmInfo) GetConfig() *VmConfig { + if x != nil { + return x.Config + } + return nil +} + +type PingVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *PingVmRequest) Reset() { + *x = PingVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PingVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PingVmRequest) ProtoMessage() {} + +func (x *PingVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[18] + 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 PingVmRequest.ProtoReflect.Descriptor instead. +func (*PingVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{18} +} + +func (x *PingVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type PingVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BuildVersion string `protobuf:"bytes,1,opt,name=build_version,json=buildVersion,proto3" json:"build_version,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Pid int64 `protobuf:"varint,3,opt,name=pid,proto3" json:"pid,omitempty"` + Features []string `protobuf:"bytes,4,rep,name=features,proto3" json:"features,omitempty"` +} + +func (x *PingVmResponse) Reset() { + *x = PingVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PingVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PingVmResponse) ProtoMessage() {} + +func (x *PingVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[19] + 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 PingVmResponse.ProtoReflect.Descriptor instead. +func (*PingVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{19} +} + +func (x *PingVmResponse) GetBuildVersion() string { + if x != nil { + return x.BuildVersion + } + return "" +} + +func (x *PingVmResponse) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PingVmResponse) GetPid() int64 { + if x != nil { + return x.Pid + } + return 0 +} + +func (x *PingVmResponse) GetFeatures() []string { + if x != nil { + return x.Features + } + return nil +} + +type DeleteVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *DeleteVmRequest) Reset() { + *x = DeleteVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVmRequest) ProtoMessage() {} + +func (x *DeleteVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[20] + 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 DeleteVmRequest.ProtoReflect.Descriptor instead. +func (*DeleteVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{20} +} + +func (x *DeleteVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type StartVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *StartVmRequest) Reset() { + *x = StartVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartVmRequest) ProtoMessage() {} + +func (x *StartVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[21] + 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 StartVmRequest.ProtoReflect.Descriptor instead. +func (*StartVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{21} +} + +func (x *StartVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type ListVmsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListVmsRequest) Reset() { + *x = ListVmsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListVmsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVmsRequest) ProtoMessage() {} + +func (x *ListVmsRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[22] + 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 ListVmsRequest.ProtoReflect.Descriptor instead. +func (*ListVmsRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{22} +} + +type ListVmsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Vms []*VmInfo `protobuf:"bytes,1,rep,name=vms,proto3" json:"vms,omitempty"` +} + +func (x *ListVmsResponse) Reset() { + *x = ListVmsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListVmsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVmsResponse) ProtoMessage() {} + +func (x *ListVmsResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[23] + 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 ListVmsResponse.ProtoReflect.Descriptor instead. +func (*ListVmsResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{23} +} + +func (x *ListVmsResponse) GetVms() []*VmInfo { + if x != nil { + return x.Vms + } + return nil +} + +type ShutdownVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *ShutdownVmRequest) Reset() { + *x = ShutdownVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownVmRequest) ProtoMessage() {} + +func (x *ShutdownVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[24] + 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 ShutdownVmRequest.ProtoReflect.Descriptor instead. +func (*ShutdownVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{24} +} + +func (x *ShutdownVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type PauseVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *PauseVmRequest) Reset() { + *x = PauseVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PauseVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseVmRequest) ProtoMessage() {} + +func (x *PauseVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[25] + 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 PauseVmRequest.ProtoReflect.Descriptor instead. +func (*PauseVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{25} +} + +func (x *PauseVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type ResumeVmRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` +} + +func (x *ResumeVmRequest) Reset() { + *x = ResumeVmRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumeVmRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeVmRequest) ProtoMessage() {} + +func (x *ResumeVmRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[26] + 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 ResumeVmRequest.ProtoReflect.Descriptor instead. +func (*ResumeVmRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{26} +} + +func (x *ResumeVmRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +type AttachDiskRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + Disk *DiskConfig `protobuf:"bytes,2,opt,name=disk,proto3" json:"disk,omitempty"` +} + +func (x *AttachDiskRequest) Reset() { + *x = AttachDiskRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttachDiskRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttachDiskRequest) ProtoMessage() {} + +func (x *AttachDiskRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttachDiskRequest.ProtoReflect.Descriptor instead. +func (*AttachDiskRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{27} +} + +func (x *AttachDiskRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *AttachDiskRequest) GetDisk() *DiskConfig { + if x != nil { + return x.Disk + } + return nil +} + +type AttachDiskResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` +} + +func (x *AttachDiskResponse) Reset() { + *x = AttachDiskResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttachDiskResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttachDiskResponse) ProtoMessage() {} + +func (x *AttachDiskResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttachDiskResponse.ProtoReflect.Descriptor instead. +func (*AttachDiskResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{28} +} + +func (x *AttachDiskResponse) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +type DetachDiskRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` +} + +func (x *DetachDiskRequest) Reset() { + *x = DetachDiskRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DetachDiskRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetachDiskRequest) ProtoMessage() {} + +func (x *DetachDiskRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[29] + 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 DetachDiskRequest.ProtoReflect.Descriptor instead. +func (*DetachDiskRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{29} +} + +func (x *DetachDiskRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *DetachDiskRequest) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +type AttachNicRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + Nic *NetConfig `protobuf:"bytes,2,opt,name=nic,proto3" json:"nic,omitempty"` +} + +func (x *AttachNicRequest) Reset() { + *x = AttachNicRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttachNicRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttachNicRequest) ProtoMessage() {} + +func (x *AttachNicRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttachNicRequest.ProtoReflect.Descriptor instead. +func (*AttachNicRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{30} +} + +func (x *AttachNicRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *AttachNicRequest) GetNic() *NetConfig { + if x != nil { + return x.Nic + } + return nil +} + +type AttachNicResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` +} + +func (x *AttachNicResponse) Reset() { + *x = AttachNicResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AttachNicResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttachNicResponse) ProtoMessage() {} + +func (x *AttachNicResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttachNicResponse.ProtoReflect.Descriptor instead. +func (*AttachNicResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{31} +} + +func (x *AttachNicResponse) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +type DetachNicRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"` + DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` +} + +func (x *DetachNicRequest) Reset() { + *x = DetachNicRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DetachNicRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetachNicRequest) ProtoMessage() {} + +func (x *DetachNicRequest) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DetachNicRequest.ProtoReflect.Descriptor instead. +func (*DetachNicRequest) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{32} +} + +func (x *DetachNicRequest) GetVmId() string { + if x != nil { + return x.VmId + } + return "" +} + +func (x *DetachNicRequest) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +type DetachNicResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DetachNicResponse) Reset() { + *x = DetachNicResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DetachNicResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetachNicResponse) ProtoMessage() {} + +func (x *DetachNicResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DetachNicResponse.ProtoReflect.Descriptor instead. +func (*DetachNicResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{33} +} + +type StartVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StartVmResponse) Reset() { + *x = StartVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartVmResponse) ProtoMessage() {} + +func (x *StartVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[34] + 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 StartVmResponse.ProtoReflect.Descriptor instead. +func (*StartVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{34} +} + +type DeleteVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteVmResponse) Reset() { + *x = DeleteVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVmResponse) ProtoMessage() {} + +func (x *DeleteVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[35] + 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 DeleteVmResponse.ProtoReflect.Descriptor instead. +func (*DeleteVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{35} +} + +type ShutdownVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ShutdownVmResponse) Reset() { + *x = ShutdownVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownVmResponse) ProtoMessage() {} + +func (x *ShutdownVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[36] + 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 ShutdownVmResponse.ProtoReflect.Descriptor instead. +func (*ShutdownVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{36} +} + +type PauseVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PauseVmResponse) Reset() { + *x = PauseVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PauseVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseVmResponse) ProtoMessage() {} + +func (x *PauseVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[37] + 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 PauseVmResponse.ProtoReflect.Descriptor instead. +func (*PauseVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{37} +} + +type ResumeVmResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ResumeVmResponse) Reset() { + *x = ResumeVmResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumeVmResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeVmResponse) ProtoMessage() {} + +func (x *ResumeVmResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[38] + 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 ResumeVmResponse.ProtoReflect.Descriptor instead. +func (*ResumeVmResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{38} +} + +type DetachDiskResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DetachDiskResponse) Reset() { + *x = DetachDiskResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_vm_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DetachDiskResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetachDiskResponse) ProtoMessage() {} + +func (x *DetachDiskResponse) ProtoReflect() protoreflect.Message { + mi := &file_v1_vm_proto_msgTypes[39] + 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 DetachDiskResponse.ProtoReflect.Descriptor instead. +func (*DetachDiskResponse) Descriptor() ([]byte, []int) { + return file_v1_vm_proto_rawDescGZIP(), []int{39} +} + +var File_v1_vm_proto protoreflect.FileDescriptor + +var file_v1_vm_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x76, 0x31, 0x2f, 0x76, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x01, 0x0a, + 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, + 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2b, 0x0a, + 0x14, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0b, 0x43, 0x6f, + 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, + 0x31, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x22, 0x67, 0x0a, 0x13, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x65, 0x77, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xdc, 0x01, 0x0a, 0x15, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x11, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x74, + 0x61, 0x69, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x00, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x19, + 0x0a, 0x07, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x74, 0x61, 0x69, 0x6c, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x74, 0x61, 0x69, + 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, + 0x00, 0x52, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, + 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x22, 0x7b, 0x0a, 0x07, 0x56, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x18, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x6d, 0x5f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x23, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, + 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, + 0x49, 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x08, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x31, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x63, 0x70, + 0x75, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x12, 0x34, 0x0a, 0x05, 0x64, 0x69, 0x73, + 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, + 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x12, + 0x2f, 0x0a, 0x03, 0x6e, 0x65, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x6e, 0x65, 0x74, + 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x67, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, + 0x0a, 0x09, 0x43, 0x70, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x62, + 0x6f, 0x6f, 0x74, 0x5f, 0x76, 0x63, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x56, 0x63, 0x70, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x78, 0x5f, 0x76, 0x63, 0x70, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, + 0x61, 0x78, 0x56, 0x63, 0x70, 0x75, 0x73, 0x22, 0x47, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x7a, 0x65, 0x5f, + 0x6d, 0x69, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x69, 0x7a, 0x65, 0x4d, + 0x69, 0x62, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x75, 0x67, 0x65, 0x70, 0x61, 0x67, 0x65, 0x73, + 0x22, 0xa6, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x08, 0x76, 0x66, 0x69, 0x6f, 0x5f, 0x70, 0x63, 0x69, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, + 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x66, 0x69, 0x6f, 0x50, 0x63, + 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x76, 0x66, 0x69, 0x6f, 0x50, + 0x63, 0x69, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x09, + 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x09, 0x4e, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x03, 0x74, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x70, 0x12, 0x3e, 0x0a, 0x08, 0x76, 0x66, 0x69, 0x6f, 0x5f, + 0x70, 0x63, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x66, 0x69, 0x6f, 0x50, 0x63, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, + 0x76, 0x66, 0x69, 0x6f, 0x50, 0x63, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, + 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, + 0x65, 0x6e, 0x64, 0x22, 0x26, 0x0a, 0x09, 0x54, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x21, 0x0a, 0x0d, 0x56, + 0x66, 0x69, 0x6f, 0x50, 0x63, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, + 0x62, 0x64, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x64, 0x66, 0x22, 0x86, + 0x01, 0x0a, 0x06, 0x56, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x12, 0x31, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x24, 0x0a, 0x0d, 0x50, 0x69, 0x6e, 0x67, 0x56, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x7d, 0x0a, + 0x0e, 0x50, 0x69, 0x6e, 0x67, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x76, 0x6d, 0x49, 0x64, 0x22, 0x25, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2c, 0x0a, 0x03, 0x76, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x76, 0x6d, 0x73, 0x22, 0x28, + 0x0a, 0x11, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x25, 0x0a, 0x0e, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, + 0x26, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, + 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, + 0x64, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x04, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x31, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x44, + 0x69, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x11, 0x44, 0x65, 0x74, 0x61, + 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, + 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, + 0x58, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x03, 0x6e, 0x69, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, + 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x6e, 0x69, 0x63, 0x22, 0x30, 0x0a, 0x11, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x10, 0x44, + 0x65, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x76, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x22, 0x13, 0x0a, 0x11, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x0a, + 0x12, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x61, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, + 0x74, 0x61, 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2a, 0xa7, 0x01, 0x0a, 0x07, 0x56, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x14, + 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, + 0x10, 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4d, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x14, + 0x0a, 0x10, 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, + 0x45, 0x44, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x44, 0x10, 0x06, 0x32, 0xbb, 0x0a, 0x0a, 0x09, 0x56, + 0x4d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x56, 0x6d, 0x12, 0x23, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, + 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x65, 0x6f, 0x73, + 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x52, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x6d, 0x12, 0x22, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x56, 0x6d, 0x12, 0x20, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5a, 0x0a, 0x0e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, + 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6d, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x55, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x56, 0x6d, 0x12, 0x23, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, + 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, + 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, + 0x12, 0x2a, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x43, 0x6f, + 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x56, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x52, 0x0a, + 0x07, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6d, 0x73, 0x12, 0x22, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x56, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x50, 0x69, 0x6e, 0x67, 0x56, 0x6d, 0x12, 0x21, 0x2e, 0x66, 0x65, + 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x56, 0x6d, + 0x12, 0x25, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x56, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, + 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x75, + 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x52, 0x0a, 0x07, 0x50, 0x61, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x12, 0x22, 0x2e, 0x66, 0x65, 0x6f, + 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x56, 0x6d, 0x12, + 0x23, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x56, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, + 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x56, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x41, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, + 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x61, 0x63, + 0x68, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, + 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x63, + 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x66, + 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, + 0x63, 0x12, 0x24, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, + 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, + 0x0a, 0x09, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x12, 0x24, 0x2e, 0x66, 0x65, + 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x65, 0x6f, 0x73, 0x2e, 0x76, 0x6d, 0x2e, 0x76, 0x6d, 0x6d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x4e, 0x69, 0x63, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x40, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x72, 0x6f, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2d, + 0x64, 0x65, 0x76, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x65, 0x6f, 0x73, + 0x2d, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x65, 0x6f, 0x73, 0x2f, 0x76, 0x6d, 0x2f, + 0x76, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_v1_vm_proto_rawDescOnce sync.Once + file_v1_vm_proto_rawDescData = file_v1_vm_proto_rawDesc +) + +func file_v1_vm_proto_rawDescGZIP() []byte { + file_v1_vm_proto_rawDescOnce.Do(func() { + file_v1_vm_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_vm_proto_rawDescData) + }) + return file_v1_vm_proto_rawDescData +} + +var file_v1_vm_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_v1_vm_proto_msgTypes = make([]protoimpl.MessageInfo, 40) +var file_v1_vm_proto_goTypes = []interface{}{ + (VmState)(0), // 0: feos.vm.vmm.api.v1.VmState + (*StreamVmConsoleRequest)(nil), // 1: feos.vm.vmm.api.v1.StreamVmConsoleRequest + (*AttachConsoleMessage)(nil), // 2: feos.vm.vmm.api.v1.AttachConsoleMessage + (*ConsoleData)(nil), // 3: feos.vm.vmm.api.v1.ConsoleData + (*StreamVmConsoleResponse)(nil), // 4: feos.vm.vmm.api.v1.StreamVmConsoleResponse + (*VmStateChangedEvent)(nil), // 5: feos.vm.vmm.api.v1.VmStateChangedEvent + (*StreamVmEventsRequest)(nil), // 6: feos.vm.vmm.api.v1.StreamVmEventsRequest + (*VmEvent)(nil), // 7: feos.vm.vmm.api.v1.VmEvent + (*CreateVmRequest)(nil), // 8: feos.vm.vmm.api.v1.CreateVmRequest + (*CreateVmResponse)(nil), // 9: feos.vm.vmm.api.v1.CreateVmResponse + (*GetVmRequest)(nil), // 10: feos.vm.vmm.api.v1.GetVmRequest + (*VmConfig)(nil), // 11: feos.vm.vmm.api.v1.VmConfig + (*CpuConfig)(nil), // 12: feos.vm.vmm.api.v1.CpuConfig + (*MemoryConfig)(nil), // 13: feos.vm.vmm.api.v1.MemoryConfig + (*DiskConfig)(nil), // 14: feos.vm.vmm.api.v1.DiskConfig + (*NetConfig)(nil), // 15: feos.vm.vmm.api.v1.NetConfig + (*TapConfig)(nil), // 16: feos.vm.vmm.api.v1.TapConfig + (*VfioPciConfig)(nil), // 17: feos.vm.vmm.api.v1.VfioPciConfig + (*VmInfo)(nil), // 18: feos.vm.vmm.api.v1.VmInfo + (*PingVmRequest)(nil), // 19: feos.vm.vmm.api.v1.PingVmRequest + (*PingVmResponse)(nil), // 20: feos.vm.vmm.api.v1.PingVmResponse + (*DeleteVmRequest)(nil), // 21: feos.vm.vmm.api.v1.DeleteVmRequest + (*StartVmRequest)(nil), // 22: feos.vm.vmm.api.v1.StartVmRequest + (*ListVmsRequest)(nil), // 23: feos.vm.vmm.api.v1.ListVmsRequest + (*ListVmsResponse)(nil), // 24: feos.vm.vmm.api.v1.ListVmsResponse + (*ShutdownVmRequest)(nil), // 25: feos.vm.vmm.api.v1.ShutdownVmRequest + (*PauseVmRequest)(nil), // 26: feos.vm.vmm.api.v1.PauseVmRequest + (*ResumeVmRequest)(nil), // 27: feos.vm.vmm.api.v1.ResumeVmRequest + (*AttachDiskRequest)(nil), // 28: feos.vm.vmm.api.v1.AttachDiskRequest + (*AttachDiskResponse)(nil), // 29: feos.vm.vmm.api.v1.AttachDiskResponse + (*DetachDiskRequest)(nil), // 30: feos.vm.vmm.api.v1.DetachDiskRequest + (*AttachNicRequest)(nil), // 31: feos.vm.vmm.api.v1.AttachNicRequest + (*AttachNicResponse)(nil), // 32: feos.vm.vmm.api.v1.AttachNicResponse + (*DetachNicRequest)(nil), // 33: feos.vm.vmm.api.v1.DetachNicRequest + (*DetachNicResponse)(nil), // 34: feos.vm.vmm.api.v1.DetachNicResponse + (*StartVmResponse)(nil), // 35: feos.vm.vmm.api.v1.StartVmResponse + (*DeleteVmResponse)(nil), // 36: feos.vm.vmm.api.v1.DeleteVmResponse + (*ShutdownVmResponse)(nil), // 37: feos.vm.vmm.api.v1.ShutdownVmResponse + (*PauseVmResponse)(nil), // 38: feos.vm.vmm.api.v1.PauseVmResponse + (*ResumeVmResponse)(nil), // 39: feos.vm.vmm.api.v1.ResumeVmResponse + (*DetachDiskResponse)(nil), // 40: feos.vm.vmm.api.v1.DetachDiskResponse + (*any1.Any)(nil), // 41: google.protobuf.Any +} +var file_v1_vm_proto_depIdxs = []int32{ + 2, // 0: feos.vm.vmm.api.v1.StreamVmConsoleRequest.attach:type_name -> feos.vm.vmm.api.v1.AttachConsoleMessage + 3, // 1: feos.vm.vmm.api.v1.StreamVmConsoleRequest.data:type_name -> feos.vm.vmm.api.v1.ConsoleData + 0, // 2: feos.vm.vmm.api.v1.VmStateChangedEvent.new_state:type_name -> feos.vm.vmm.api.v1.VmState + 41, // 3: feos.vm.vmm.api.v1.VmEvent.data:type_name -> google.protobuf.Any + 11, // 4: feos.vm.vmm.api.v1.CreateVmRequest.config:type_name -> feos.vm.vmm.api.v1.VmConfig + 12, // 5: feos.vm.vmm.api.v1.VmConfig.cpus:type_name -> feos.vm.vmm.api.v1.CpuConfig + 13, // 6: feos.vm.vmm.api.v1.VmConfig.memory:type_name -> feos.vm.vmm.api.v1.MemoryConfig + 14, // 7: feos.vm.vmm.api.v1.VmConfig.disks:type_name -> feos.vm.vmm.api.v1.DiskConfig + 15, // 8: feos.vm.vmm.api.v1.VmConfig.net:type_name -> feos.vm.vmm.api.v1.NetConfig + 17, // 9: feos.vm.vmm.api.v1.DiskConfig.vfio_pci:type_name -> feos.vm.vmm.api.v1.VfioPciConfig + 16, // 10: feos.vm.vmm.api.v1.NetConfig.tap:type_name -> feos.vm.vmm.api.v1.TapConfig + 17, // 11: feos.vm.vmm.api.v1.NetConfig.vfio_pci:type_name -> feos.vm.vmm.api.v1.VfioPciConfig + 0, // 12: feos.vm.vmm.api.v1.VmInfo.state:type_name -> feos.vm.vmm.api.v1.VmState + 11, // 13: feos.vm.vmm.api.v1.VmInfo.config:type_name -> feos.vm.vmm.api.v1.VmConfig + 18, // 14: feos.vm.vmm.api.v1.ListVmsResponse.vms:type_name -> feos.vm.vmm.api.v1.VmInfo + 14, // 15: feos.vm.vmm.api.v1.AttachDiskRequest.disk:type_name -> feos.vm.vmm.api.v1.DiskConfig + 15, // 16: feos.vm.vmm.api.v1.AttachNicRequest.nic:type_name -> feos.vm.vmm.api.v1.NetConfig + 8, // 17: feos.vm.vmm.api.v1.VMService.CreateVm:input_type -> feos.vm.vmm.api.v1.CreateVmRequest + 22, // 18: feos.vm.vmm.api.v1.VMService.StartVm:input_type -> feos.vm.vmm.api.v1.StartVmRequest + 10, // 19: feos.vm.vmm.api.v1.VMService.GetVm:input_type -> feos.vm.vmm.api.v1.GetVmRequest + 6, // 20: feos.vm.vmm.api.v1.VMService.StreamVmEvents:input_type -> feos.vm.vmm.api.v1.StreamVmEventsRequest + 21, // 21: feos.vm.vmm.api.v1.VMService.DeleteVm:input_type -> feos.vm.vmm.api.v1.DeleteVmRequest + 1, // 22: feos.vm.vmm.api.v1.VMService.StreamVmConsole:input_type -> feos.vm.vmm.api.v1.StreamVmConsoleRequest + 23, // 23: feos.vm.vmm.api.v1.VMService.ListVms:input_type -> feos.vm.vmm.api.v1.ListVmsRequest + 19, // 24: feos.vm.vmm.api.v1.VMService.PingVm:input_type -> feos.vm.vmm.api.v1.PingVmRequest + 25, // 25: feos.vm.vmm.api.v1.VMService.ShutdownVm:input_type -> feos.vm.vmm.api.v1.ShutdownVmRequest + 26, // 26: feos.vm.vmm.api.v1.VMService.PauseVm:input_type -> feos.vm.vmm.api.v1.PauseVmRequest + 27, // 27: feos.vm.vmm.api.v1.VMService.ResumeVm:input_type -> feos.vm.vmm.api.v1.ResumeVmRequest + 28, // 28: feos.vm.vmm.api.v1.VMService.AttachDisk:input_type -> feos.vm.vmm.api.v1.AttachDiskRequest + 30, // 29: feos.vm.vmm.api.v1.VMService.DetachDisk:input_type -> feos.vm.vmm.api.v1.DetachDiskRequest + 31, // 30: feos.vm.vmm.api.v1.VMService.AttachNic:input_type -> feos.vm.vmm.api.v1.AttachNicRequest + 33, // 31: feos.vm.vmm.api.v1.VMService.DetachNic:input_type -> feos.vm.vmm.api.v1.DetachNicRequest + 9, // 32: feos.vm.vmm.api.v1.VMService.CreateVm:output_type -> feos.vm.vmm.api.v1.CreateVmResponse + 35, // 33: feos.vm.vmm.api.v1.VMService.StartVm:output_type -> feos.vm.vmm.api.v1.StartVmResponse + 18, // 34: feos.vm.vmm.api.v1.VMService.GetVm:output_type -> feos.vm.vmm.api.v1.VmInfo + 7, // 35: feos.vm.vmm.api.v1.VMService.StreamVmEvents:output_type -> feos.vm.vmm.api.v1.VmEvent + 36, // 36: feos.vm.vmm.api.v1.VMService.DeleteVm:output_type -> feos.vm.vmm.api.v1.DeleteVmResponse + 4, // 37: feos.vm.vmm.api.v1.VMService.StreamVmConsole:output_type -> feos.vm.vmm.api.v1.StreamVmConsoleResponse + 24, // 38: feos.vm.vmm.api.v1.VMService.ListVms:output_type -> feos.vm.vmm.api.v1.ListVmsResponse + 20, // 39: feos.vm.vmm.api.v1.VMService.PingVm:output_type -> feos.vm.vmm.api.v1.PingVmResponse + 37, // 40: feos.vm.vmm.api.v1.VMService.ShutdownVm:output_type -> feos.vm.vmm.api.v1.ShutdownVmResponse + 38, // 41: feos.vm.vmm.api.v1.VMService.PauseVm:output_type -> feos.vm.vmm.api.v1.PauseVmResponse + 39, // 42: feos.vm.vmm.api.v1.VMService.ResumeVm:output_type -> feos.vm.vmm.api.v1.ResumeVmResponse + 29, // 43: feos.vm.vmm.api.v1.VMService.AttachDisk:output_type -> feos.vm.vmm.api.v1.AttachDiskResponse + 40, // 44: feos.vm.vmm.api.v1.VMService.DetachDisk:output_type -> feos.vm.vmm.api.v1.DetachDiskResponse + 32, // 45: feos.vm.vmm.api.v1.VMService.AttachNic:output_type -> feos.vm.vmm.api.v1.AttachNicResponse + 34, // 46: feos.vm.vmm.api.v1.VMService.DetachNic:output_type -> feos.vm.vmm.api.v1.DetachNicResponse + 32, // [32:47] is the sub-list for method output_type + 17, // [17:32] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name +} + +func init() { file_v1_vm_proto_init() } +func file_v1_vm_proto_init() { + if File_v1_vm_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_vm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamVmConsoleRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AttachConsoleMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsoleData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamVmConsoleResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VmStateChangedEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamVmEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VmEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VmConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CpuConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiskConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TapConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VfioPciConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VmInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListVmsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListVmsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PauseVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumeVmRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AttachDiskRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AttachDiskResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetachDiskRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AttachNicRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AttachNicResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetachNicRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetachNicResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PauseVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumeVmResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_vm_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetachDiskResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_v1_vm_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*StreamVmConsoleRequest_Attach)(nil), + (*StreamVmConsoleRequest_Data)(nil), + } + file_v1_vm_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*StreamVmEventsRequest_TailEvents)(nil), + (*StreamVmEventsRequest_TailId)(nil), + (*StreamVmEventsRequest_TailSeconds)(nil), + } + file_v1_vm_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_v1_vm_proto_msgTypes[10].OneofWrappers = []interface{}{} + file_v1_vm_proto_msgTypes[13].OneofWrappers = []interface{}{ + (*DiskConfig_Path)(nil), + (*DiskConfig_VfioPci)(nil), + } + file_v1_vm_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*NetConfig_Tap)(nil), + (*NetConfig_VfioPci)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_vm_proto_rawDesc, + NumEnums: 1, + NumMessages: 40, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_v1_vm_proto_goTypes, + DependencyIndexes: file_v1_vm_proto_depIdxs, + EnumInfos: file_v1_vm_proto_enumTypes, + MessageInfos: file_v1_vm_proto_msgTypes, + }.Build() + File_v1_vm_proto = out.File + file_v1_vm_proto_rawDesc = nil + file_v1_vm_proto_goTypes = nil + file_v1_vm_proto_depIdxs = nil +} diff --git a/go/feos-go/gen/feos/vm/vmm/api/v1/vm_grpc.pb.go b/go/feos-go/gen/feos/vm/vmm/api/v1/vm_grpc.pb.go new file mode 100644 index 0000000..05b7a02 --- /dev/null +++ b/go/feos-go/gen/feos/vm/vmm/api/v1/vm_grpc.pb.go @@ -0,0 +1,732 @@ +// SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +// SPDX-License-Identifier: Apache-2.0 +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.12.4 +// source: v1/vm.proto + +package v1 + +import ( + context "context" + + 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 + +const ( + VMService_CreateVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/CreateVm" + VMService_StartVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/StartVm" + VMService_GetVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/GetVm" + VMService_StreamVmEvents_FullMethodName = "/feos.vm.vmm.api.v1.VMService/StreamVmEvents" + VMService_DeleteVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/DeleteVm" + VMService_StreamVmConsole_FullMethodName = "/feos.vm.vmm.api.v1.VMService/StreamVmConsole" + VMService_ListVms_FullMethodName = "/feos.vm.vmm.api.v1.VMService/ListVms" + VMService_PingVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/PingVm" + VMService_ShutdownVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/ShutdownVm" + VMService_PauseVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/PauseVm" + VMService_ResumeVm_FullMethodName = "/feos.vm.vmm.api.v1.VMService/ResumeVm" + VMService_AttachDisk_FullMethodName = "/feos.vm.vmm.api.v1.VMService/AttachDisk" + VMService_DetachDisk_FullMethodName = "/feos.vm.vmm.api.v1.VMService/DetachDisk" + VMService_AttachNic_FullMethodName = "/feos.vm.vmm.api.v1.VMService/AttachNic" + VMService_DetachNic_FullMethodName = "/feos.vm.vmm.api.v1.VMService/DetachNic" +) + +// VMServiceClient is the client API for VMService 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 VMServiceClient interface { + // Creates a new Virtual Machine but does not boot it. + // This starts a cloud-hypervisor process, sets up its initial resources, + // and makes it ready for booting. The returned 'vm_id' must be used for + // all subsequent operations on this VM. + CreateVm(ctx context.Context, in *CreateVmRequest, opts ...grpc.CallOption) (*CreateVmResponse, error) + // Starts a previously created Virtual Machine. + StartVm(ctx context.Context, in *StartVmRequest, opts ...grpc.CallOption) (*StartVmResponse, error) + // Retrieves detailed information about a specific Virtual Machine. + GetVm(ctx context.Context, in *GetVmRequest, opts ...grpc.CallOption) (*VmInfo, error) + // Retrieves the events stream for a specific Virtual Machine. + StreamVmEvents(ctx context.Context, in *StreamVmEventsRequest, opts ...grpc.CallOption) (VMService_StreamVmEventsClient, error) + // Deletes an existing Virtual Machine and frees up its resources. + DeleteVm(ctx context.Context, in *DeleteVmRequest, opts ...grpc.CallOption) (*DeleteVmResponse, error) + // Provides an interactive console to a running VM. + // This is a bidirectional stream. The client first sends an 'attach' message + // with the VM ID, then streams user input. The server streams back the + // VM's console output. + StreamVmConsole(ctx context.Context, opts ...grpc.CallOption) (VMService_StreamVmConsoleClient, error) + // Lists all Virtual Machines currently managed by this service. + ListVms(ctx context.Context, in *ListVmsRequest, opts ...grpc.CallOption) (*ListVmsResponse, error) + // Pings the VMM process for a specific VM to check for liveness. + PingVm(ctx context.Context, in *PingVmRequest, opts ...grpc.CallOption) (*PingVmResponse, error) + // Shuts down a running Virtual Machine by sending an ACPI shutdown signal. + ShutdownVm(ctx context.Context, in *ShutdownVmRequest, opts ...grpc.CallOption) (*ShutdownVmResponse, error) + // Pauses a running Virtual Machine. + PauseVm(ctx context.Context, in *PauseVmRequest, opts ...grpc.CallOption) (*PauseVmResponse, error) + // Resumes a paused Virtual Machine. + ResumeVm(ctx context.Context, in *ResumeVmRequest, opts ...grpc.CallOption) (*ResumeVmResponse, error) + // Hot-plugs a new disk to a running VM. + AttachDisk(ctx context.Context, in *AttachDiskRequest, opts ...grpc.CallOption) (*AttachDiskResponse, error) + // Hot-unplugs a disk from a running VM. + DetachDisk(ctx context.Context, in *DetachDiskRequest, opts ...grpc.CallOption) (*DetachDiskResponse, error) + // Hot-plugs a new network interface to a running VM. + AttachNic(ctx context.Context, in *AttachNicRequest, opts ...grpc.CallOption) (*AttachNicResponse, error) + // Hot-unplugs a network interface from a running VM. + DetachNic(ctx context.Context, in *DetachNicRequest, opts ...grpc.CallOption) (*DetachNicResponse, error) +} + +type vMServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewVMServiceClient(cc grpc.ClientConnInterface) VMServiceClient { + return &vMServiceClient{cc} +} + +func (c *vMServiceClient) CreateVm(ctx context.Context, in *CreateVmRequest, opts ...grpc.CallOption) (*CreateVmResponse, error) { + out := new(CreateVmResponse) + err := c.cc.Invoke(ctx, VMService_CreateVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) StartVm(ctx context.Context, in *StartVmRequest, opts ...grpc.CallOption) (*StartVmResponse, error) { + out := new(StartVmResponse) + err := c.cc.Invoke(ctx, VMService_StartVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) GetVm(ctx context.Context, in *GetVmRequest, opts ...grpc.CallOption) (*VmInfo, error) { + out := new(VmInfo) + err := c.cc.Invoke(ctx, VMService_GetVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) StreamVmEvents(ctx context.Context, in *StreamVmEventsRequest, opts ...grpc.CallOption) (VMService_StreamVmEventsClient, error) { + stream, err := c.cc.NewStream(ctx, &VMService_ServiceDesc.Streams[0], VMService_StreamVmEvents_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &vMServiceStreamVmEventsClient{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 VMService_StreamVmEventsClient interface { + Recv() (*VmEvent, error) + grpc.ClientStream +} + +type vMServiceStreamVmEventsClient struct { + grpc.ClientStream +} + +func (x *vMServiceStreamVmEventsClient) Recv() (*VmEvent, error) { + m := new(VmEvent) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *vMServiceClient) DeleteVm(ctx context.Context, in *DeleteVmRequest, opts ...grpc.CallOption) (*DeleteVmResponse, error) { + out := new(DeleteVmResponse) + err := c.cc.Invoke(ctx, VMService_DeleteVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) StreamVmConsole(ctx context.Context, opts ...grpc.CallOption) (VMService_StreamVmConsoleClient, error) { + stream, err := c.cc.NewStream(ctx, &VMService_ServiceDesc.Streams[1], VMService_StreamVmConsole_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &vMServiceStreamVmConsoleClient{stream} + return x, nil +} + +type VMService_StreamVmConsoleClient interface { + Send(*StreamVmConsoleRequest) error + Recv() (*StreamVmConsoleResponse, error) + grpc.ClientStream +} + +type vMServiceStreamVmConsoleClient struct { + grpc.ClientStream +} + +func (x *vMServiceStreamVmConsoleClient) Send(m *StreamVmConsoleRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *vMServiceStreamVmConsoleClient) Recv() (*StreamVmConsoleResponse, error) { + m := new(StreamVmConsoleResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *vMServiceClient) ListVms(ctx context.Context, in *ListVmsRequest, opts ...grpc.CallOption) (*ListVmsResponse, error) { + out := new(ListVmsResponse) + err := c.cc.Invoke(ctx, VMService_ListVms_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) PingVm(ctx context.Context, in *PingVmRequest, opts ...grpc.CallOption) (*PingVmResponse, error) { + out := new(PingVmResponse) + err := c.cc.Invoke(ctx, VMService_PingVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) ShutdownVm(ctx context.Context, in *ShutdownVmRequest, opts ...grpc.CallOption) (*ShutdownVmResponse, error) { + out := new(ShutdownVmResponse) + err := c.cc.Invoke(ctx, VMService_ShutdownVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) PauseVm(ctx context.Context, in *PauseVmRequest, opts ...grpc.CallOption) (*PauseVmResponse, error) { + out := new(PauseVmResponse) + err := c.cc.Invoke(ctx, VMService_PauseVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) ResumeVm(ctx context.Context, in *ResumeVmRequest, opts ...grpc.CallOption) (*ResumeVmResponse, error) { + out := new(ResumeVmResponse) + err := c.cc.Invoke(ctx, VMService_ResumeVm_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) AttachDisk(ctx context.Context, in *AttachDiskRequest, opts ...grpc.CallOption) (*AttachDiskResponse, error) { + out := new(AttachDiskResponse) + err := c.cc.Invoke(ctx, VMService_AttachDisk_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) DetachDisk(ctx context.Context, in *DetachDiskRequest, opts ...grpc.CallOption) (*DetachDiskResponse, error) { + out := new(DetachDiskResponse) + err := c.cc.Invoke(ctx, VMService_DetachDisk_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) AttachNic(ctx context.Context, in *AttachNicRequest, opts ...grpc.CallOption) (*AttachNicResponse, error) { + out := new(AttachNicResponse) + err := c.cc.Invoke(ctx, VMService_AttachNic_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *vMServiceClient) DetachNic(ctx context.Context, in *DetachNicRequest, opts ...grpc.CallOption) (*DetachNicResponse, error) { + out := new(DetachNicResponse) + err := c.cc.Invoke(ctx, VMService_DetachNic_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// VMServiceServer is the server API for VMService service. +// All implementations must embed UnimplementedVMServiceServer +// for forward compatibility +type VMServiceServer interface { + // Creates a new Virtual Machine but does not boot it. + // This starts a cloud-hypervisor process, sets up its initial resources, + // and makes it ready for booting. The returned 'vm_id' must be used for + // all subsequent operations on this VM. + CreateVm(context.Context, *CreateVmRequest) (*CreateVmResponse, error) + // Starts a previously created Virtual Machine. + StartVm(context.Context, *StartVmRequest) (*StartVmResponse, error) + // Retrieves detailed information about a specific Virtual Machine. + GetVm(context.Context, *GetVmRequest) (*VmInfo, error) + // Retrieves the events stream for a specific Virtual Machine. + StreamVmEvents(*StreamVmEventsRequest, VMService_StreamVmEventsServer) error + // Deletes an existing Virtual Machine and frees up its resources. + DeleteVm(context.Context, *DeleteVmRequest) (*DeleteVmResponse, error) + // Provides an interactive console to a running VM. + // This is a bidirectional stream. The client first sends an 'attach' message + // with the VM ID, then streams user input. The server streams back the + // VM's console output. + StreamVmConsole(VMService_StreamVmConsoleServer) error + // Lists all Virtual Machines currently managed by this service. + ListVms(context.Context, *ListVmsRequest) (*ListVmsResponse, error) + // Pings the VMM process for a specific VM to check for liveness. + PingVm(context.Context, *PingVmRequest) (*PingVmResponse, error) + // Shuts down a running Virtual Machine by sending an ACPI shutdown signal. + ShutdownVm(context.Context, *ShutdownVmRequest) (*ShutdownVmResponse, error) + // Pauses a running Virtual Machine. + PauseVm(context.Context, *PauseVmRequest) (*PauseVmResponse, error) + // Resumes a paused Virtual Machine. + ResumeVm(context.Context, *ResumeVmRequest) (*ResumeVmResponse, error) + // Hot-plugs a new disk to a running VM. + AttachDisk(context.Context, *AttachDiskRequest) (*AttachDiskResponse, error) + // Hot-unplugs a disk from a running VM. + DetachDisk(context.Context, *DetachDiskRequest) (*DetachDiskResponse, error) + // Hot-plugs a new network interface to a running VM. + AttachNic(context.Context, *AttachNicRequest) (*AttachNicResponse, error) + // Hot-unplugs a network interface from a running VM. + DetachNic(context.Context, *DetachNicRequest) (*DetachNicResponse, error) + mustEmbedUnimplementedVMServiceServer() +} + +// UnimplementedVMServiceServer must be embedded to have forward compatible implementations. +type UnimplementedVMServiceServer struct { +} + +func (UnimplementedVMServiceServer) CreateVm(context.Context, *CreateVmRequest) (*CreateVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateVm not implemented") +} +func (UnimplementedVMServiceServer) StartVm(context.Context, *StartVmRequest) (*StartVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartVm not implemented") +} +func (UnimplementedVMServiceServer) GetVm(context.Context, *GetVmRequest) (*VmInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetVm not implemented") +} +func (UnimplementedVMServiceServer) StreamVmEvents(*StreamVmEventsRequest, VMService_StreamVmEventsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamVmEvents not implemented") +} +func (UnimplementedVMServiceServer) DeleteVm(context.Context, *DeleteVmRequest) (*DeleteVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteVm not implemented") +} +func (UnimplementedVMServiceServer) StreamVmConsole(VMService_StreamVmConsoleServer) error { + return status.Errorf(codes.Unimplemented, "method StreamVmConsole not implemented") +} +func (UnimplementedVMServiceServer) ListVms(context.Context, *ListVmsRequest) (*ListVmsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListVms not implemented") +} +func (UnimplementedVMServiceServer) PingVm(context.Context, *PingVmRequest) (*PingVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PingVm not implemented") +} +func (UnimplementedVMServiceServer) ShutdownVm(context.Context, *ShutdownVmRequest) (*ShutdownVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShutdownVm not implemented") +} +func (UnimplementedVMServiceServer) PauseVm(context.Context, *PauseVmRequest) (*PauseVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseVm not implemented") +} +func (UnimplementedVMServiceServer) ResumeVm(context.Context, *ResumeVmRequest) (*ResumeVmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResumeVm not implemented") +} +func (UnimplementedVMServiceServer) AttachDisk(context.Context, *AttachDiskRequest) (*AttachDiskResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AttachDisk not implemented") +} +func (UnimplementedVMServiceServer) DetachDisk(context.Context, *DetachDiskRequest) (*DetachDiskResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DetachDisk not implemented") +} +func (UnimplementedVMServiceServer) AttachNic(context.Context, *AttachNicRequest) (*AttachNicResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AttachNic not implemented") +} +func (UnimplementedVMServiceServer) DetachNic(context.Context, *DetachNicRequest) (*DetachNicResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DetachNic not implemented") +} +func (UnimplementedVMServiceServer) mustEmbedUnimplementedVMServiceServer() {} + +// UnsafeVMServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to VMServiceServer will +// result in compilation errors. +type UnsafeVMServiceServer interface { + mustEmbedUnimplementedVMServiceServer() +} + +func RegisterVMServiceServer(s grpc.ServiceRegistrar, srv VMServiceServer) { + s.RegisterService(&VMService_ServiceDesc, srv) +} + +func _VMService_CreateVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).CreateVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_CreateVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).CreateVm(ctx, req.(*CreateVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_StartVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).StartVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_StartVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).StartVm(ctx, req.(*StartVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_GetVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).GetVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_GetVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).GetVm(ctx, req.(*GetVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_StreamVmEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamVmEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(VMServiceServer).StreamVmEvents(m, &vMServiceStreamVmEventsServer{stream}) +} + +type VMService_StreamVmEventsServer interface { + Send(*VmEvent) error + grpc.ServerStream +} + +type vMServiceStreamVmEventsServer struct { + grpc.ServerStream +} + +func (x *vMServiceStreamVmEventsServer) Send(m *VmEvent) error { + return x.ServerStream.SendMsg(m) +} + +func _VMService_DeleteVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).DeleteVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_DeleteVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).DeleteVm(ctx, req.(*DeleteVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_StreamVmConsole_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(VMServiceServer).StreamVmConsole(&vMServiceStreamVmConsoleServer{stream}) +} + +type VMService_StreamVmConsoleServer interface { + Send(*StreamVmConsoleResponse) error + Recv() (*StreamVmConsoleRequest, error) + grpc.ServerStream +} + +type vMServiceStreamVmConsoleServer struct { + grpc.ServerStream +} + +func (x *vMServiceStreamVmConsoleServer) Send(m *StreamVmConsoleResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *vMServiceStreamVmConsoleServer) Recv() (*StreamVmConsoleRequest, error) { + m := new(StreamVmConsoleRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _VMService_ListVms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListVmsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).ListVms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_ListVms_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).ListVms(ctx, req.(*ListVmsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_PingVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).PingVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_PingVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).PingVm(ctx, req.(*PingVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_ShutdownVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ShutdownVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).ShutdownVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_ShutdownVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).ShutdownVm(ctx, req.(*ShutdownVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_PauseVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PauseVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).PauseVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_PauseVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).PauseVm(ctx, req.(*PauseVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_ResumeVm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResumeVmRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).ResumeVm(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_ResumeVm_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).ResumeVm(ctx, req.(*ResumeVmRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_AttachDisk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AttachDiskRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).AttachDisk(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_AttachDisk_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).AttachDisk(ctx, req.(*AttachDiskRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_DetachDisk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DetachDiskRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).DetachDisk(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_DetachDisk_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).DetachDisk(ctx, req.(*DetachDiskRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_AttachNic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AttachNicRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).AttachNic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_AttachNic_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).AttachNic(ctx, req.(*AttachNicRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _VMService_DetachNic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DetachNicRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VMServiceServer).DetachNic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: VMService_DetachNic_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VMServiceServer).DetachNic(ctx, req.(*DetachNicRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// VMService_ServiceDesc is the grpc.ServiceDesc for VMService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var VMService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "feos.vm.vmm.api.v1.VMService", + HandlerType: (*VMServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateVm", + Handler: _VMService_CreateVm_Handler, + }, + { + MethodName: "StartVm", + Handler: _VMService_StartVm_Handler, + }, + { + MethodName: "GetVm", + Handler: _VMService_GetVm_Handler, + }, + { + MethodName: "DeleteVm", + Handler: _VMService_DeleteVm_Handler, + }, + { + MethodName: "ListVms", + Handler: _VMService_ListVms_Handler, + }, + { + MethodName: "PingVm", + Handler: _VMService_PingVm_Handler, + }, + { + MethodName: "ShutdownVm", + Handler: _VMService_ShutdownVm_Handler, + }, + { + MethodName: "PauseVm", + Handler: _VMService_PauseVm_Handler, + }, + { + MethodName: "ResumeVm", + Handler: _VMService_ResumeVm_Handler, + }, + { + MethodName: "AttachDisk", + Handler: _VMService_AttachDisk_Handler, + }, + { + MethodName: "DetachDisk", + Handler: _VMService_DetachDisk_Handler, + }, + { + MethodName: "AttachNic", + Handler: _VMService_AttachNic_Handler, + }, + { + MethodName: "DetachNic", + Handler: _VMService_DetachNic_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamVmEvents", + Handler: _VMService_StreamVmEvents_Handler, + ServerStreams: true, + }, + { + StreamName: "StreamVmConsole", + Handler: _VMService_StreamVmConsole_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "v1/vm.proto", +} diff --git a/go/feos-go/go.mod b/go/feos-go/go.mod new file mode 100644 index 0000000..f18fb39 --- /dev/null +++ b/go/feos-go/go.mod @@ -0,0 +1,3 @@ +module github.com/ironcore-dev/feos/go/feos-go + +go 1.22.5 diff --git a/go/feos-go/hack/generate-proto.sh b/go/feos-go/hack/generate-proto.sh new file mode 100755 index 0000000..b45f822 --- /dev/null +++ b/go/feos-go/hack/generate-proto.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors +# SPDX-License-Identifier: Apache-2.0 + +set -e + +BASEDIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +GO_PROJECT_ROOT="$BASEDIR/.." + +FEOS_ROOT="$GO_PROJECT_ROOT/../.." + +"$BASEDIR/get_version.sh" > "$GO_PROJECT_ROOT/generated_from.txt" + +echo "Generating FeOS protobuf Go files..." + +PROTO_PATH_ROOT="$FEOS_ROOT/proto" + +PROTO_FILES_V1="$FEOS_ROOT/proto/v1/*.proto" + +GO_MODULE_NAME="github.com/ironcore-dev/feos/go/feos-go" + +OUTPUT_DIR="$GO_PROJECT_ROOT" + +mkdir -p "$OUTPUT_DIR" + +protoc --experimental_allow_proto3_optional \ + --proto_path="$PROTO_PATH_ROOT" \ + --go_out="$OUTPUT_DIR" \ + --go_opt=module="$GO_MODULE_NAME" \ + --go-grpc_out="$OUTPUT_DIR" \ + --go-grpc_opt=module="$GO_MODULE_NAME" \ + $PROTO_FILES_V1 + +echo "Protobuf generation complete." + +BOILERPLATE_FILE="$BASEDIR/boilerplate.go.txt" + +if [ ! -f "$BOILERPLATE_FILE" ]; then + echo "Warning: boilerplate.go.txt not found, skipping license header." +else + for file in $(find "$OUTPUT_DIR" -name '*.pb.go'); do + boilerplate="$(cat "$BOILERPLATE_FILE")" + echo -e "$boilerplate\n$(cat "$file")" > "$file" + done + echo "Applied license boilerplate." +fi diff --git a/go/feos-go/hack/get_version.sh b/go/feos-go/hack/get_version.sh new file mode 100755 index 0000000..196cebe --- /dev/null +++ b/go/feos-go/hack/get_version.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# For non-tagged commits, this is a simple "vX.X.X-XX-gXXXXXXX" +# For feos tagged commits, this is "vX.X.X" +# For feos-go tagged commits, this is "go/dpservice-go/vX.X.X-XX-gXXXXXXX" +GITVER=$(git describe --tags --always) + +# The solution is to simply print the last item of an array created by splitting the Git version +ARRAY=(${GITVER//\// }) +echo ${ARRAY[*]: -1} diff --git a/proto/v1/container.proto b/proto/v1/container.proto index 90d9348..ed3ff94 100644 --- a/proto/v1/container.proto +++ b/proto/v1/container.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package feos.container.v1; +option go_package = "github.com/ironcore-dev/feos/go/feos-go/gen/feos/container/v1"; + import "google/protobuf/any.proto"; // ContainerService manages the lifecycle of containers. It provides an diff --git a/proto/v1/host.proto b/proto/v1/host.proto index c1cde71..3a629ce 100644 --- a/proto/v1/host.proto +++ b/proto/v1/host.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package feos.host.v1; +option go_package = "github.com/ironcore-dev/feos/go/feos-go/gen/feos/host/v1"; + import "google/protobuf/timestamp.proto"; // HostService provides information about the host system. diff --git a/proto/v1/image.proto b/proto/v1/image.proto index cb6b764..7b48683 100644 --- a/proto/v1/image.proto +++ b/proto/v1/image.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package feos.image.vmm.api.v1; +option go_package = "github.com/ironcore-dev/feos/go/feos-go/gen/feos/image/vmm/api/v1"; + // Image Service // ImageService handles the lifecycle of OCI images used for booting VMs. diff --git a/proto/v1/task.proto b/proto/v1/task.proto index de5e4b1..834db07 100644 --- a/proto/v1/task.proto +++ b/proto/v1/task.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package feos.task.v1; +option go_package = "github.com/ironcore-dev/feos/go/feos-go/gen/feos/task/v1"; + // TaskService is an internal-only API implemented by the `feos --shim` process. // It provides a low-level interface for the container-service to manage the // lifecycle of a single container using an OCI runtime like `youki`. diff --git a/proto/v1/vm.proto b/proto/v1/vm.proto index ac58bfb..4104060 100644 --- a/proto/v1/vm.proto +++ b/proto/v1/vm.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package feos.vm.vmm.api.v1; +option go_package = "github.com/ironcore-dev/feos/go/feos-go/gen/feos/vm/vmm/api/v1"; + import "google/protobuf/any.proto"; // VMService is a service that manages multiple Cloud Hypervisor