diff --git a/common/common.pb.go b/common/common.pb.go index c153d0a3..df29510b 100644 --- a/common/common.pb.go +++ b/common/common.pb.go @@ -110,6 +110,8 @@ type RemoteDownload struct { // It can be either an IPv4 address or an IPv6 address, depending on the // connection's destination address. SourceAddress string `protobuf:"bytes,4,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"` + // Optional source vrf used to initiate connections from the device. + SourceVrf string `protobuf:"bytes,5,opt,name=source_vrf,json=sourceVrf,proto3" json:"source_vrf,omitempty"` } func (x *RemoteDownload) Reset() { @@ -172,13 +174,20 @@ func (x *RemoteDownload) GetSourceAddress() string { return "" } +func (x *RemoteDownload) GetSourceVrf() string { + if x != nil { + return x.SourceVrf + } + return "" +} + var File_common_common_proto protoreflect.FileDescriptor var file_common_common_proto_rawDesc = []byte{ 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, 0x11, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, @@ -191,13 +200,15 @@ var file_common_common_proto_rawDesc = []byte{ 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x22, 0x3f, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x46, 0x54, - 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x50, 0x10, - 0x04, 0x42, 0x23, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x72, 0x66, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x72, 0x66, 0x22, + 0x3f, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x46, 0x54, 0x50, + 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, + 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x50, 0x10, 0x04, + 0x42, 0x23, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, 0x2f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/common/common.proto b/common/common.proto index 8d8a2e79..913c9fc6 100644 --- a/common/common.proto +++ b/common/common.proto @@ -46,4 +46,7 @@ message RemoteDownload { // It can be either an IPv4 address or an IPv6 address, depending on the // connection's destination address. string source_address = 4; + + // Optional source vrf used to initiate connections from the device. + string source_vrf = 5; } diff --git a/containerz/containerz.pb.go b/containerz/containerz.pb.go new file mode 100644 index 00000000..7cbcc73b --- /dev/null +++ b/containerz/containerz.pb.go @@ -0,0 +1,2210 @@ +// +// Copyright 2023 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file defines the gNOI APIs used to perform container operations on a +// network device. This specification is still under design and subject to +// change. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v4.23.2 +// source: containerz/containerz.proto + +package containerz + +import ( + common "github.com/openconfig/gnoi/common" + _ "github.com/openconfig/gnoi/types" + status "google.golang.org/genproto/googleapis/rpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type RemoveResponse_Code int32 + +const ( + // An unspecified error. Must use the detail value to describe the issue. + RemoveResponse_UNSPECIFIED RemoveResponse_Code = 0 + // Indicates the image was not found in the remote location. + RemoveResponse_NOT_FOUND RemoveResponse_Code = 1 + // Indicates that a container using this image is running. + RemoveResponse_RUNNING RemoveResponse_Code = 2 + // The container image was successfully removed. + RemoveResponse_SUCCESS RemoveResponse_Code = 3 +) + +// Enum value maps for RemoveResponse_Code. +var ( + RemoveResponse_Code_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NOT_FOUND", + 2: "RUNNING", + 3: "SUCCESS", + } + RemoveResponse_Code_value = map[string]int32{ + "UNSPECIFIED": 0, + "NOT_FOUND": 1, + "RUNNING": 2, + "SUCCESS": 3, + } +) + +func (x RemoveResponse_Code) Enum() *RemoveResponse_Code { + p := new(RemoveResponse_Code) + *p = x + return p +} + +func (x RemoveResponse_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RemoveResponse_Code) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[0].Descriptor() +} + +func (RemoveResponse_Code) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[0] +} + +func (x RemoveResponse_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RemoveResponse_Code.Descriptor instead. +func (RemoveResponse_Code) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{8, 0} +} + +type ListResponse_Status int32 + +const ( + // An unspecified state. + ListResponse_UNSPECIFIED ListResponse_Status = 0 + // Container was running and is now stopped. + ListResponse_STOPPED ListResponse_Status = 1 + // Container is running. + ListResponse_RUNNING ListResponse_Status = 2 + // Container has never been run but exists on the target. + ListResponse_PRESENT ListResponse_Status = 3 + // The container does not exist on the target. + ListResponse_NOT_FOUND ListResponse_Status = 4 +) + +// Enum value maps for ListResponse_Status. +var ( + ListResponse_Status_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "STOPPED", + 2: "RUNNING", + 3: "PRESENT", + 4: "NOT_FOUND", + } + ListResponse_Status_value = map[string]int32{ + "UNSPECIFIED": 0, + "STOPPED": 1, + "RUNNING": 2, + "PRESENT": 3, + "NOT_FOUND": 4, + } +) + +func (x ListResponse_Status) Enum() *ListResponse_Status { + p := new(ListResponse_Status) + *p = x + return p +} + +func (x ListResponse_Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListResponse_Status) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[1].Descriptor() +} + +func (ListResponse_Status) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[1] +} + +func (x ListResponse_Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListResponse_Status.Descriptor instead. +func (ListResponse_Status) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{10, 0} +} + +type StartError_Code int32 + +const ( + // An unspecified error. The details field should provide more information. + StartError_UNSPECIFIED StartError_Code = 0 + // The container image was not found. + StartError_NOT_FOUND StartError_Code = 1 + // Exposed port is already used by another container. + StartError_PORT_USED StartError_Code = 2 +) + +// Enum value maps for StartError_Code. +var ( + StartError_Code_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NOT_FOUND", + 2: "PORT_USED", + } + StartError_Code_value = map[string]int32{ + "UNSPECIFIED": 0, + "NOT_FOUND": 1, + "PORT_USED": 2, + } +) + +func (x StartError_Code) Enum() *StartError_Code { + p := new(StartError_Code) + *p = x + return p +} + +func (x StartError_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StartError_Code) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[2].Descriptor() +} + +func (StartError_Code) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[2] +} + +func (x StartError_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StartError_Code.Descriptor instead. +func (StartError_Code) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{14, 0} +} + +type StopResponse_Code int32 + +const ( + // An unspecified error. The details field should provide more information. + StopResponse_UNSPECIFIED StopResponse_Code = 0 + // Container is busy. + StopResponse_BUSY StopResponse_Code = 1 + // Instance was not found on the target. + StopResponse_NOT_FOUND StopResponse_Code = 2 + // The container was removed. + StopResponse_SUCCESS StopResponse_Code = 3 +) + +// Enum value maps for StopResponse_Code. +var ( + StopResponse_Code_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "BUSY", + 2: "NOT_FOUND", + 3: "SUCCESS", + } + StopResponse_Code_value = map[string]int32{ + "UNSPECIFIED": 0, + "BUSY": 1, + "NOT_FOUND": 2, + "SUCCESS": 3, + } +) + +func (x StopResponse_Code) Enum() *StopResponse_Code { + p := new(StopResponse_Code) + *p = x + return p +} + +func (x StopResponse_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StopResponse_Code) Descriptor() protoreflect.EnumDescriptor { + return file_containerz_containerz_proto_enumTypes[3].Descriptor() +} + +func (StopResponse_Code) Type() protoreflect.EnumType { + return &file_containerz_containerz_proto_enumTypes[3] +} + +func (x StopResponse_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StopResponse_Code.Descriptor instead. +func (StopResponse_Code) EnumDescriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16, 0} +} + +type DeployRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Request: + // + // *DeployRequest_ImageTransfer + // *DeployRequest_Content + // *DeployRequest_ImageTransferEnd + Request isDeployRequest_Request `protobuf_oneof:"request"` +} + +func (x *DeployRequest) Reset() { + *x = DeployRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployRequest) ProtoMessage() {} + +func (x *DeployRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 DeployRequest.ProtoReflect.Descriptor instead. +func (*DeployRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{0} +} + +func (m *DeployRequest) GetRequest() isDeployRequest_Request { + if m != nil { + return m.Request + } + return nil +} + +func (x *DeployRequest) GetImageTransfer() *ImageTransfer { + if x, ok := x.GetRequest().(*DeployRequest_ImageTransfer); ok { + return x.ImageTransfer + } + return nil +} + +func (x *DeployRequest) GetContent() []byte { + if x, ok := x.GetRequest().(*DeployRequest_Content); ok { + return x.Content + } + return nil +} + +func (x *DeployRequest) GetImageTransferEnd() *ImageTransferEnd { + if x, ok := x.GetRequest().(*DeployRequest_ImageTransferEnd); ok { + return x.ImageTransferEnd + } + return nil +} + +type isDeployRequest_Request interface { + isDeployRequest_Request() +} + +type DeployRequest_ImageTransfer struct { + ImageTransfer *ImageTransfer `protobuf:"bytes,1,opt,name=image_transfer,json=imageTransfer,proto3,oneof"` +} + +type DeployRequest_Content struct { + Content []byte `protobuf:"bytes,2,opt,name=content,proto3,oneof"` +} + +type DeployRequest_ImageTransferEnd struct { + ImageTransferEnd *ImageTransferEnd `protobuf:"bytes,3,opt,name=image_transfer_end,json=imageTransferEnd,proto3,oneof"` +} + +func (*DeployRequest_ImageTransfer) isDeployRequest_Request() {} + +func (*DeployRequest_Content) isDeployRequest_Request() {} + +func (*DeployRequest_ImageTransferEnd) isDeployRequest_Request() {} + +type ImageTransfer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The image name. This is the name the container image must have after the + // is completed. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The tag is a version identifier for this container image. After the + // transfer successfully completes, the tag must be applied to the + // container image. + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + // Optional. Indicates the size (in bytes) of the container image. + ImageSize uint64 `protobuf:"varint,3,opt,name=image_size,json=imageSize,proto3" json:"image_size,omitempty"` + // Optional. Instructs the target to fetch the image from a remote location. + // The above name and tag must be applied to the container once downloaded. + RemoteDownload *common.RemoteDownload `protobuf:"bytes,4,opt,name=remote_download,json=remoteDownload,proto3" json:"remote_download,omitempty"` +} + +func (x *ImageTransfer) Reset() { + *x = ImageTransfer{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransfer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransfer) ProtoMessage() {} + +func (x *ImageTransfer) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ImageTransfer.ProtoReflect.Descriptor instead. +func (*ImageTransfer) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{1} +} + +func (x *ImageTransfer) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ImageTransfer) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *ImageTransfer) GetImageSize() uint64 { + if x != nil { + return x.ImageSize + } + return 0 +} + +func (x *ImageTransfer) GetRemoteDownload() *common.RemoteDownload { + if x != nil { + return x.RemoteDownload + } + return nil +} + +// ImageTransferEnd indicates to the target that the client is finished sending +// and therefore no more content will be sent. Any content sent after this +// message should be discarded. This message serves as a signal to the target +// to begin integrity verifications on the received data. +type ImageTransferEnd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ImageTransferEnd) Reset() { + *x = ImageTransferEnd{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransferEnd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransferEnd) ProtoMessage() {} + +func (x *ImageTransferEnd) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ImageTransferEnd.ProtoReflect.Descriptor instead. +func (*ImageTransferEnd) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{2} +} + +type DeployResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Response: + // + // *DeployResponse_ImageTransferReady + // *DeployResponse_ImageTransferProgress + // *DeployResponse_ImageTransferSuccess + // *DeployResponse_ImageTransferError + Response isDeployResponse_Response `protobuf_oneof:"response"` +} + +func (x *DeployResponse) Reset() { + *x = DeployResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployResponse) ProtoMessage() {} + +func (x *DeployResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 DeployResponse.ProtoReflect.Descriptor instead. +func (*DeployResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{3} +} + +func (m *DeployResponse) GetResponse() isDeployResponse_Response { + if m != nil { + return m.Response + } + return nil +} + +func (x *DeployResponse) GetImageTransferReady() *ImageTransferReady { + if x, ok := x.GetResponse().(*DeployResponse_ImageTransferReady); ok { + return x.ImageTransferReady + } + return nil +} + +func (x *DeployResponse) GetImageTransferProgress() *ImageTransferProgress { + if x, ok := x.GetResponse().(*DeployResponse_ImageTransferProgress); ok { + return x.ImageTransferProgress + } + return nil +} + +func (x *DeployResponse) GetImageTransferSuccess() *ImageTransferSuccess { + if x, ok := x.GetResponse().(*DeployResponse_ImageTransferSuccess); ok { + return x.ImageTransferSuccess + } + return nil +} + +func (x *DeployResponse) GetImageTransferError() *status.Status { + if x, ok := x.GetResponse().(*DeployResponse_ImageTransferError); ok { + return x.ImageTransferError + } + return nil +} + +type isDeployResponse_Response interface { + isDeployResponse_Response() +} + +type DeployResponse_ImageTransferReady struct { + ImageTransferReady *ImageTransferReady `protobuf:"bytes,1,opt,name=image_transfer_ready,json=imageTransferReady,proto3,oneof"` +} + +type DeployResponse_ImageTransferProgress struct { + ImageTransferProgress *ImageTransferProgress `protobuf:"bytes,2,opt,name=image_transfer_progress,json=imageTransferProgress,proto3,oneof"` +} + +type DeployResponse_ImageTransferSuccess struct { + ImageTransferSuccess *ImageTransferSuccess `protobuf:"bytes,3,opt,name=image_transfer_success,json=imageTransferSuccess,proto3,oneof"` +} + +type DeployResponse_ImageTransferError struct { + ImageTransferError *status.Status `protobuf:"bytes,4,opt,name=image_transfer_error,json=imageTransferError,proto3,oneof"` +} + +func (*DeployResponse_ImageTransferReady) isDeployResponse_Response() {} + +func (*DeployResponse_ImageTransferProgress) isDeployResponse_Response() {} + +func (*DeployResponse_ImageTransferSuccess) isDeployResponse_Response() {} + +func (*DeployResponse_ImageTransferError) isDeployResponse_Response() {} + +// ImageTransferReady indicates to the client that the target is ready to +// receive the container image content. +type ImageTransferReady struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Indicates the size of the chunks that the client should break the + // container into as it is transferred. + ChunkSize int32 `protobuf:"varint,1,opt,name=chunk_size,json=chunkSize,proto3" json:"chunk_size,omitempty"` +} + +func (x *ImageTransferReady) Reset() { + *x = ImageTransferReady{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransferReady) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransferReady) ProtoMessage() {} + +func (x *ImageTransferReady) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ImageTransferReady.ProtoReflect.Descriptor instead. +func (*ImageTransferReady) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{4} +} + +func (x *ImageTransferReady) GetChunkSize() int32 { + if x != nil { + return x.ChunkSize + } + return 0 +} + +// ImageTransferProgress is sent periodically to the client during the transfer. +type ImageTransferProgress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of bytes transferred so far. + BytesReceived uint64 `protobuf:"varint,1,opt,name=bytes_received,json=bytesReceived,proto3" json:"bytes_received,omitempty"` +} + +func (x *ImageTransferProgress) Reset() { + *x = ImageTransferProgress{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransferProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransferProgress) ProtoMessage() {} + +func (x *ImageTransferProgress) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ImageTransferProgress.ProtoReflect.Descriptor instead. +func (*ImageTransferProgress) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{5} +} + +func (x *ImageTransferProgress) GetBytesReceived() uint64 { + if x != nil { + return x.BytesReceived + } + return 0 +} + +// ImageTransferSuccess indicates to the client that the container image +// transfer was successful. +type ImageTransferSuccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the container image. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The tag of the container image. + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + // The total size of the image. + ImageSize uint64 `protobuf:"varint,3,opt,name=image_size,json=imageSize,proto3" json:"image_size,omitempty"` +} + +func (x *ImageTransferSuccess) Reset() { + *x = ImageTransferSuccess{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageTransferSuccess) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageTransferSuccess) ProtoMessage() {} + +func (x *ImageTransferSuccess) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ImageTransferSuccess.ProtoReflect.Descriptor instead. +func (*ImageTransferSuccess) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{6} +} + +func (x *ImageTransferSuccess) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ImageTransferSuccess) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *ImageTransferSuccess) GetImageSize() uint64 { + if x != nil { + return x.ImageSize + } + return 0 +} + +type RemoveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The container image name to be removed. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The container tag to be removed. + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + // If force is set, the target should attempt to forcibly remove the + // container. + Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` +} + +func (x *RemoveRequest) Reset() { + *x = RemoveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveRequest) ProtoMessage() {} + +func (x *RemoveRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 RemoveRequest.ProtoReflect.Descriptor instead. +func (*RemoveRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{7} +} + +func (x *RemoveRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RemoveRequest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *RemoveRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type RemoveResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RemoveResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.RemoveResponse_Code" json:"code,omitempty"` + Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` +} + +func (x *RemoveResponse) Reset() { + *x = RemoveResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveResponse) ProtoMessage() {} + +func (x *RemoveResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 RemoveResponse.ProtoReflect.Descriptor instead. +func (*RemoveResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{8} +} + +func (x *RemoveResponse) GetCode() RemoveResponse_Code { + if x != nil { + return x.Code + } + return RemoveResponse_UNSPECIFIED +} + +func (x *RemoveResponse) GetDetail() string { + if x != nil { + return x.Detail + } + return "" +} + +type ListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List all containers, by default only running ones are returned. + All bool `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"` + // Only return limit number of containers. + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Filter *ListRequest_Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListRequest) Reset() { + *x = ListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest) ProtoMessage() {} + +func (x *ListRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ListRequest.ProtoReflect.Descriptor instead. +func (*ListRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{9} +} + +func (x *ListRequest) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *ListRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListRequest) GetFilter() *ListRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +type ListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ImageName string `protobuf:"bytes,3,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + Status ListResponse_Status `protobuf:"varint,4,opt,name=status,proto3,enum=gnoi.containerz.ListResponse_Status" json:"status,omitempty"` +} + +func (x *ListResponse) Reset() { + *x = ListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ListResponse.ProtoReflect.Descriptor instead. +func (*ListResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{10} +} + +func (x *ListResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListResponse) GetImageName() string { + if x != nil { + return x.ImageName + } + return "" +} + +func (x *ListResponse) GetStatus() ListResponse_Status { + if x != nil { + return x.Status + } + return ListResponse_UNSPECIFIED +} + +type StartRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name and tag of the container to start. + ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + Cmd string `protobuf:"bytes,3,opt,name=cmd,proto3" json:"cmd,omitempty"` + // Optional. The name to give the running continer. If none is specified, + // the target should assign one. + InstanceName string `protobuf:"bytes,4,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + // List of internal ports to expose outside the container. + Ports []*StartRequest_Port `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"` + // Environment to set in the container. + Environment map[string]string `protobuf:"bytes,6,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *StartRequest) Reset() { + *x = StartRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[11] + 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_containerz_containerz_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 StartRequest.ProtoReflect.Descriptor instead. +func (*StartRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{11} +} + +func (x *StartRequest) GetImageName() string { + if x != nil { + return x.ImageName + } + return "" +} + +func (x *StartRequest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *StartRequest) GetCmd() string { + if x != nil { + return x.Cmd + } + return "" +} + +func (x *StartRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *StartRequest) GetPorts() []*StartRequest_Port { + if x != nil { + return x.Ports + } + return nil +} + +func (x *StartRequest) GetEnvironment() map[string]string { + if x != nil { + return x.Environment + } + return nil +} + +type StartResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Response: + // + // *StartResponse_StartOk + // *StartResponse_StartError + Response isStartResponse_Response `protobuf_oneof:"response"` +} + +func (x *StartResponse) Reset() { + *x = StartResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[12] + 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_containerz_containerz_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 StartResponse.ProtoReflect.Descriptor instead. +func (*StartResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{12} +} + +func (m *StartResponse) GetResponse() isStartResponse_Response { + if m != nil { + return m.Response + } + return nil +} + +func (x *StartResponse) GetStartOk() *StartOK { + if x, ok := x.GetResponse().(*StartResponse_StartOk); ok { + return x.StartOk + } + return nil +} + +func (x *StartResponse) GetStartError() *StartError { + if x, ok := x.GetResponse().(*StartResponse_StartError); ok { + return x.StartError + } + return nil +} + +type isStartResponse_Response interface { + isStartResponse_Response() +} + +type StartResponse_StartOk struct { + StartOk *StartOK `protobuf:"bytes,1,opt,name=start_ok,json=startOk,proto3,oneof"` +} + +type StartResponse_StartError struct { + StartError *StartError `protobuf:"bytes,2,opt,name=start_error,json=startError,proto3,oneof"` +} + +func (*StartResponse_StartOk) isStartResponse_Response() {} + +func (*StartResponse_StartError) isStartResponse_Response() {} + +type StartOK struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The running containers name. + InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` +} + +func (x *StartOK) Reset() { + *x = StartOK{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartOK) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartOK) ProtoMessage() {} + +func (x *StartOK) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 StartOK.ProtoReflect.Descriptor instead. +func (*StartOK) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{13} +} + +func (x *StartOK) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +type StartError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ErrorCode StartError_Code `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=gnoi.containerz.StartError_Code" json:"error_code,omitempty"` + Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *StartError) Reset() { + *x = StartError{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartError) ProtoMessage() {} + +func (x *StartError) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 StartError.ProtoReflect.Descriptor instead. +func (*StartError) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{14} +} + +func (x *StartError) GetErrorCode() StartError_Code { + if x != nil { + return x.ErrorCode + } + return StartError_UNSPECIFIED +} + +func (x *StartError) GetDetails() string { + if x != nil { + return x.Details + } + return "" +} + +type StopRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + // If force is set, the target should attempt to forcibly kill the container. + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` +} + +func (x *StopRequest) Reset() { + *x = StopRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopRequest) ProtoMessage() {} + +func (x *StopRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 StopRequest.ProtoReflect.Descriptor instead. +func (*StopRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{15} +} + +func (x *StopRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *StopRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type StopResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code StopResponse_Code `protobuf:"varint,1,opt,name=code,proto3,enum=gnoi.containerz.StopResponse_Code" json:"code,omitempty"` + Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *StopResponse) Reset() { + *x = StopResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopResponse) ProtoMessage() {} + +func (x *StopResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 StopResponse.ProtoReflect.Descriptor instead. +func (*StopResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{16} +} + +func (x *StopResponse) GetCode() StopResponse_Code { + if x != nil { + return x.Code + } + return StopResponse_UNSPECIFIED +} + +func (x *StopResponse) GetDetails() string { + if x != nil { + return x.Details + } + return "" +} + +type LogRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"` + // If set, the stream remains open until the client cancels it. + Follow bool `protobuf:"varint,2,opt,name=follow,proto3" json:"follow,omitempty"` +} + +func (x *LogRequest) Reset() { + *x = LogRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogRequest) ProtoMessage() {} + +func (x *LogRequest) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 LogRequest.ProtoReflect.Descriptor instead. +func (*LogRequest) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{17} +} + +func (x *LogRequest) GetInstanceName() string { + if x != nil { + return x.InstanceName + } + return "" +} + +func (x *LogRequest) GetFollow() bool { + if x != nil { + return x.Follow + } + return false +} + +type LogResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *LogResponse) Reset() { + *x = LogResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LogResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogResponse) ProtoMessage() {} + +func (x *LogResponse) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 LogResponse.ProtoReflect.Descriptor instead. +func (*LogResponse) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{18} +} + +func (x *LogResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// A filter is a mapping from a key to a list of values. +// TODO(alshabib) document possible keys +type ListRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"` +} + +func (x *ListRequest_Filter) Reset() { + *x = ListRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest_Filter) ProtoMessage() {} + +func (x *ListRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 ListRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListRequest_Filter) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *ListRequest_Filter) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ListRequest_Filter) GetValue() []string { + if x != nil { + return x.Value + } + return nil +} + +type StartRequest_Port struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Internal uint32 `protobuf:"varint,1,opt,name=internal,proto3" json:"internal,omitempty"` + External uint32 `protobuf:"varint,2,opt,name=external,proto3" json:"external,omitempty"` +} + +func (x *StartRequest_Port) Reset() { + *x = StartRequest_Port{} + if protoimpl.UnsafeEnabled { + mi := &file_containerz_containerz_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartRequest_Port) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartRequest_Port) ProtoMessage() {} + +func (x *StartRequest_Port) ProtoReflect() protoreflect.Message { + mi := &file_containerz_containerz_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 StartRequest_Port.ProtoReflect.Descriptor instead. +func (*StartRequest_Port) Descriptor() ([]byte, []int) { + return file_containerz_containerz_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *StartRequest_Port) GetInternal() uint32 { + if x != nil { + return x.Internal + } + return 0 +} + +func (x *StartRequest_Port) GetExternal() uint32 { + if x != nil { + return x.External + } + return 0 +} + +var File_containerz_containerz_proto protoreflect.FileDescriptor + +var file_containerz_containerz_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, + 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x1a, 0x13, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xd2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x47, 0x0a, 0x0e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x45, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x22, 0x12, 0x0a, 0x10, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x45, 0x6e, 0x64, 0x22, 0xfe, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x48, 0x00, 0x52, 0x12, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, + 0x79, 0x12, 0x60, 0x0a, 0x17, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x15, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x14, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x46, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x3e, 0x0a, 0x15, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 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, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0xa4, 0x01, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x1a, 0x30, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, + 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x04, 0x22, 0x82, 0x03, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x38, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3e, 0x0a, 0x04, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0x3e, 0x0a, 0x10, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 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, 0x92, 0x01, 0x0a, 0x0d, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, + 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x4b, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x4f, 0x6b, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2e, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x4b, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x3f, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 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, 0x0d, 0x0a, 0x09, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, + 0x02, 0x22, 0x48, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0c, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6e, 0x6f, + 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x3d, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x53, 0x59, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x22, 0x49, 0x0a, + 0x0a, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x1f, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x32, 0xca, 0x03, 0x0a, 0x0a, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x12, 0x4f, 0x0a, 0x06, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x06, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, + 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x48, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x04, 0x53, 0x74, 0x6f, + 0x70, 0x12, 0x1c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x7a, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x44, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x1b, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x2f, 0xd2, 0x3e, 0x05, 0x30, 0x2e, 0x31, 0x2e, 0x31, + 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_containerz_containerz_proto_rawDescOnce sync.Once + file_containerz_containerz_proto_rawDescData = file_containerz_containerz_proto_rawDesc +) + +func file_containerz_containerz_proto_rawDescGZIP() []byte { + file_containerz_containerz_proto_rawDescOnce.Do(func() { + file_containerz_containerz_proto_rawDescData = protoimpl.X.CompressGZIP(file_containerz_containerz_proto_rawDescData) + }) + return file_containerz_containerz_proto_rawDescData +} + +var file_containerz_containerz_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_containerz_containerz_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_containerz_containerz_proto_goTypes = []interface{}{ + (RemoveResponse_Code)(0), // 0: gnoi.containerz.RemoveResponse.Code + (ListResponse_Status)(0), // 1: gnoi.containerz.ListResponse.Status + (StartError_Code)(0), // 2: gnoi.containerz.StartError.Code + (StopResponse_Code)(0), // 3: gnoi.containerz.StopResponse.Code + (*DeployRequest)(nil), // 4: gnoi.containerz.DeployRequest + (*ImageTransfer)(nil), // 5: gnoi.containerz.ImageTransfer + (*ImageTransferEnd)(nil), // 6: gnoi.containerz.ImageTransferEnd + (*DeployResponse)(nil), // 7: gnoi.containerz.DeployResponse + (*ImageTransferReady)(nil), // 8: gnoi.containerz.ImageTransferReady + (*ImageTransferProgress)(nil), // 9: gnoi.containerz.ImageTransferProgress + (*ImageTransferSuccess)(nil), // 10: gnoi.containerz.ImageTransferSuccess + (*RemoveRequest)(nil), // 11: gnoi.containerz.RemoveRequest + (*RemoveResponse)(nil), // 12: gnoi.containerz.RemoveResponse + (*ListRequest)(nil), // 13: gnoi.containerz.ListRequest + (*ListResponse)(nil), // 14: gnoi.containerz.ListResponse + (*StartRequest)(nil), // 15: gnoi.containerz.StartRequest + (*StartResponse)(nil), // 16: gnoi.containerz.StartResponse + (*StartOK)(nil), // 17: gnoi.containerz.StartOK + (*StartError)(nil), // 18: gnoi.containerz.StartError + (*StopRequest)(nil), // 19: gnoi.containerz.StopRequest + (*StopResponse)(nil), // 20: gnoi.containerz.StopResponse + (*LogRequest)(nil), // 21: gnoi.containerz.LogRequest + (*LogResponse)(nil), // 22: gnoi.containerz.LogResponse + (*ListRequest_Filter)(nil), // 23: gnoi.containerz.ListRequest.Filter + (*StartRequest_Port)(nil), // 24: gnoi.containerz.StartRequest.Port + nil, // 25: gnoi.containerz.StartRequest.EnvironmentEntry + (*common.RemoteDownload)(nil), // 26: gnoi.common.RemoteDownload + (*status.Status)(nil), // 27: google.rpc.Status +} +var file_containerz_containerz_proto_depIdxs = []int32{ + 5, // 0: gnoi.containerz.DeployRequest.image_transfer:type_name -> gnoi.containerz.ImageTransfer + 6, // 1: gnoi.containerz.DeployRequest.image_transfer_end:type_name -> gnoi.containerz.ImageTransferEnd + 26, // 2: gnoi.containerz.ImageTransfer.remote_download:type_name -> gnoi.common.RemoteDownload + 8, // 3: gnoi.containerz.DeployResponse.image_transfer_ready:type_name -> gnoi.containerz.ImageTransferReady + 9, // 4: gnoi.containerz.DeployResponse.image_transfer_progress:type_name -> gnoi.containerz.ImageTransferProgress + 10, // 5: gnoi.containerz.DeployResponse.image_transfer_success:type_name -> gnoi.containerz.ImageTransferSuccess + 27, // 6: gnoi.containerz.DeployResponse.image_transfer_error:type_name -> google.rpc.Status + 0, // 7: gnoi.containerz.RemoveResponse.code:type_name -> gnoi.containerz.RemoveResponse.Code + 23, // 8: gnoi.containerz.ListRequest.filter:type_name -> gnoi.containerz.ListRequest.Filter + 1, // 9: gnoi.containerz.ListResponse.status:type_name -> gnoi.containerz.ListResponse.Status + 24, // 10: gnoi.containerz.StartRequest.ports:type_name -> gnoi.containerz.StartRequest.Port + 25, // 11: gnoi.containerz.StartRequest.environment:type_name -> gnoi.containerz.StartRequest.EnvironmentEntry + 17, // 12: gnoi.containerz.StartResponse.start_ok:type_name -> gnoi.containerz.StartOK + 18, // 13: gnoi.containerz.StartResponse.start_error:type_name -> gnoi.containerz.StartError + 2, // 14: gnoi.containerz.StartError.error_code:type_name -> gnoi.containerz.StartError.Code + 3, // 15: gnoi.containerz.StopResponse.code:type_name -> gnoi.containerz.StopResponse.Code + 4, // 16: gnoi.containerz.Containerz.Deploy:input_type -> gnoi.containerz.DeployRequest + 11, // 17: gnoi.containerz.Containerz.Remove:input_type -> gnoi.containerz.RemoveRequest + 13, // 18: gnoi.containerz.Containerz.List:input_type -> gnoi.containerz.ListRequest + 15, // 19: gnoi.containerz.Containerz.Start:input_type -> gnoi.containerz.StartRequest + 19, // 20: gnoi.containerz.Containerz.Stop:input_type -> gnoi.containerz.StopRequest + 21, // 21: gnoi.containerz.Containerz.Log:input_type -> gnoi.containerz.LogRequest + 7, // 22: gnoi.containerz.Containerz.Deploy:output_type -> gnoi.containerz.DeployResponse + 12, // 23: gnoi.containerz.Containerz.Remove:output_type -> gnoi.containerz.RemoveResponse + 14, // 24: gnoi.containerz.Containerz.List:output_type -> gnoi.containerz.ListResponse + 16, // 25: gnoi.containerz.Containerz.Start:output_type -> gnoi.containerz.StartResponse + 20, // 26: gnoi.containerz.Containerz.Stop:output_type -> gnoi.containerz.StopResponse + 22, // 27: gnoi.containerz.Containerz.Log:output_type -> gnoi.containerz.LogResponse + 22, // [22:28] is the sub-list for method output_type + 16, // [16:22] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_containerz_containerz_proto_init() } +func file_containerz_containerz_proto_init() { + if File_containerz_containerz_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_containerz_containerz_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeployRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransfer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransferEnd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeployResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransferReady); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransferProgress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageTransferSuccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[11].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_containerz_containerz_proto_msgTypes[12].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_containerz_containerz_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartOK); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LogResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_containerz_containerz_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartRequest_Port); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_containerz_containerz_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*DeployRequest_ImageTransfer)(nil), + (*DeployRequest_Content)(nil), + (*DeployRequest_ImageTransferEnd)(nil), + } + file_containerz_containerz_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*DeployResponse_ImageTransferReady)(nil), + (*DeployResponse_ImageTransferProgress)(nil), + (*DeployResponse_ImageTransferSuccess)(nil), + (*DeployResponse_ImageTransferError)(nil), + } + file_containerz_containerz_proto_msgTypes[12].OneofWrappers = []interface{}{ + (*StartResponse_StartOk)(nil), + (*StartResponse_StartError)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_containerz_containerz_proto_rawDesc, + NumEnums: 4, + NumMessages: 22, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_containerz_containerz_proto_goTypes, + DependencyIndexes: file_containerz_containerz_proto_depIdxs, + EnumInfos: file_containerz_containerz_proto_enumTypes, + MessageInfos: file_containerz_containerz_proto_msgTypes, + }.Build() + File_containerz_containerz_proto = out.File + file_containerz_containerz_proto_rawDesc = nil + file_containerz_containerz_proto_goTypes = nil + file_containerz_containerz_proto_depIdxs = nil +} diff --git a/containerz/containerz.proto b/containerz/containerz.proto index 071a9a63..0539a5bb 100644 --- a/containerz/containerz.proto +++ b/containerz/containerz.proto @@ -26,7 +26,7 @@ import "google/rpc/status.proto"; import "types/types.proto"; option go_package = "github.com/openconfig/gnoi/containerz"; -option (types.gnoi_version) = "0.1.0"; +option (types.gnoi_version) = "0.1.1"; service Containerz { // Deploy sets a container image on the target. The container is sent as diff --git a/containerz/containerz_grpc.pb.go b/containerz/containerz_grpc.pb.go new file mode 100644 index 00000000..8e4c2cba --- /dev/null +++ b/containerz/containerz_grpc.pb.go @@ -0,0 +1,437 @@ +// +// Copyright 2023 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file defines the gNOI APIs used to perform container operations on a +// network device. This specification is still under design and subject to +// change. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.23.2 +// source: containerz/containerz.proto + +package containerz + +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 ( + Containerz_Deploy_FullMethodName = "/gnoi.containerz.Containerz/Deploy" + Containerz_Remove_FullMethodName = "/gnoi.containerz.Containerz/Remove" + Containerz_List_FullMethodName = "/gnoi.containerz.Containerz/List" + Containerz_Start_FullMethodName = "/gnoi.containerz.Containerz/Start" + Containerz_Stop_FullMethodName = "/gnoi.containerz.Containerz/Stop" + Containerz_Log_FullMethodName = "/gnoi.containerz.Containerz/Log" +) + +// ContainerzClient is the client API for Containerz 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 ContainerzClient interface { + // Deploy sets a container image on the target. The container is sent as + // a sequential stream of messages containing up to 64KB of data. Upon + // reception of a valid container, the target must load it into its registry. + // Whether the registry is local or remote is target and deployment specific. + // A valid container is one that has passed its checksum. + Deploy(ctx context.Context, opts ...grpc.CallOption) (Containerz_DeployClient, error) + // Remove deletes containers that match the spec defined in the request. If + // the specified container does not exist, this operation is a no-op. + Remove(ctx context.Context, in *RemoveRequest, opts ...grpc.CallOption) (*RemoveResponse, error) + // List returns all containers that match the spec defined in the request. + List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (Containerz_ListClient, error) + // Start starts a container. If the image does not exist on the target, + // Start returns an error. A started container is identified by an instance + // name, which can optionally be supplied by the caller otherwise the target + // should provide one. If the instance name already exists, the target should + // return an error. + Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error) + // Stop stops a container. If the container does not exist or is not running + // this operation returns an error. This operation can, optionally, force + // (i.e. kill) a container. + Stop(ctx context.Context, in *StopRequest, opts ...grpc.CallOption) (*StopResponse, error) + // Log streams the logs of a running container. If the container if no longer + // running this operation streams the latest logs and returns. + Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (Containerz_LogClient, error) +} + +type containerzClient struct { + cc grpc.ClientConnInterface +} + +func NewContainerzClient(cc grpc.ClientConnInterface) ContainerzClient { + return &containerzClient{cc} +} + +func (c *containerzClient) Deploy(ctx context.Context, opts ...grpc.CallOption) (Containerz_DeployClient, error) { + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[0], Containerz_Deploy_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &containerzDeployClient{stream} + return x, nil +} + +type Containerz_DeployClient interface { + Send(*DeployRequest) error + Recv() (*DeployResponse, error) + grpc.ClientStream +} + +type containerzDeployClient struct { + grpc.ClientStream +} + +func (x *containerzDeployClient) Send(m *DeployRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *containerzDeployClient) Recv() (*DeployResponse, error) { + m := new(DeployResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *containerzClient) Remove(ctx context.Context, in *RemoveRequest, opts ...grpc.CallOption) (*RemoveResponse, error) { + out := new(RemoveResponse) + err := c.cc.Invoke(ctx, Containerz_Remove_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerzClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (Containerz_ListClient, error) { + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[1], Containerz_List_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &containerzListClient{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 Containerz_ListClient interface { + Recv() (*ListResponse, error) + grpc.ClientStream +} + +type containerzListClient struct { + grpc.ClientStream +} + +func (x *containerzListClient) Recv() (*ListResponse, error) { + m := new(ListResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *containerzClient) Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error) { + out := new(StartResponse) + err := c.cc.Invoke(ctx, Containerz_Start_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerzClient) Stop(ctx context.Context, in *StopRequest, opts ...grpc.CallOption) (*StopResponse, error) { + out := new(StopResponse) + err := c.cc.Invoke(ctx, Containerz_Stop_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *containerzClient) Log(ctx context.Context, in *LogRequest, opts ...grpc.CallOption) (Containerz_LogClient, error) { + stream, err := c.cc.NewStream(ctx, &Containerz_ServiceDesc.Streams[2], Containerz_Log_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &containerzLogClient{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 Containerz_LogClient interface { + Recv() (*LogResponse, error) + grpc.ClientStream +} + +type containerzLogClient struct { + grpc.ClientStream +} + +func (x *containerzLogClient) Recv() (*LogResponse, error) { + m := new(LogResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// ContainerzServer is the server API for Containerz service. +// All implementations must embed UnimplementedContainerzServer +// for forward compatibility +type ContainerzServer interface { + // Deploy sets a container image on the target. The container is sent as + // a sequential stream of messages containing up to 64KB of data. Upon + // reception of a valid container, the target must load it into its registry. + // Whether the registry is local or remote is target and deployment specific. + // A valid container is one that has passed its checksum. + Deploy(Containerz_DeployServer) error + // Remove deletes containers that match the spec defined in the request. If + // the specified container does not exist, this operation is a no-op. + Remove(context.Context, *RemoveRequest) (*RemoveResponse, error) + // List returns all containers that match the spec defined in the request. + List(*ListRequest, Containerz_ListServer) error + // Start starts a container. If the image does not exist on the target, + // Start returns an error. A started container is identified by an instance + // name, which can optionally be supplied by the caller otherwise the target + // should provide one. If the instance name already exists, the target should + // return an error. + Start(context.Context, *StartRequest) (*StartResponse, error) + // Stop stops a container. If the container does not exist or is not running + // this operation returns an error. This operation can, optionally, force + // (i.e. kill) a container. + Stop(context.Context, *StopRequest) (*StopResponse, error) + // Log streams the logs of a running container. If the container if no longer + // running this operation streams the latest logs and returns. + Log(*LogRequest, Containerz_LogServer) error + mustEmbedUnimplementedContainerzServer() +} + +// UnimplementedContainerzServer must be embedded to have forward compatible implementations. +type UnimplementedContainerzServer struct { +} + +func (UnimplementedContainerzServer) Deploy(Containerz_DeployServer) error { + return status.Errorf(codes.Unimplemented, "method Deploy not implemented") +} +func (UnimplementedContainerzServer) Remove(context.Context, *RemoveRequest) (*RemoveResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Remove not implemented") +} +func (UnimplementedContainerzServer) List(*ListRequest, Containerz_ListServer) error { + return status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedContainerzServer) Start(context.Context, *StartRequest) (*StartResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") +} +func (UnimplementedContainerzServer) Stop(context.Context, *StopRequest) (*StopResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") +} +func (UnimplementedContainerzServer) Log(*LogRequest, Containerz_LogServer) error { + return status.Errorf(codes.Unimplemented, "method Log not implemented") +} +func (UnimplementedContainerzServer) mustEmbedUnimplementedContainerzServer() {} + +// UnsafeContainerzServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ContainerzServer will +// result in compilation errors. +type UnsafeContainerzServer interface { + mustEmbedUnimplementedContainerzServer() +} + +func RegisterContainerzServer(s grpc.ServiceRegistrar, srv ContainerzServer) { + s.RegisterService(&Containerz_ServiceDesc, srv) +} + +func _Containerz_Deploy_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(ContainerzServer).Deploy(&containerzDeployServer{stream}) +} + +type Containerz_DeployServer interface { + Send(*DeployResponse) error + Recv() (*DeployRequest, error) + grpc.ServerStream +} + +type containerzDeployServer struct { + grpc.ServerStream +} + +func (x *containerzDeployServer) Send(m *DeployResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *containerzDeployServer) Recv() (*DeployRequest, error) { + m := new(DeployRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _Containerz_Remove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerzServer).Remove(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Containerz_Remove_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerzServer).Remove(ctx, req.(*RemoveRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Containerz_List_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ListRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ContainerzServer).List(m, &containerzListServer{stream}) +} + +type Containerz_ListServer interface { + Send(*ListResponse) error + grpc.ServerStream +} + +type containerzListServer struct { + grpc.ServerStream +} + +func (x *containerzListServer) Send(m *ListResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _Containerz_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.(ContainerzServer).Start(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Containerz_Start_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerzServer).Start(ctx, req.(*StartRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Containerz_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContainerzServer).Stop(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Containerz_Stop_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContainerzServer).Stop(ctx, req.(*StopRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Containerz_Log_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(LogRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ContainerzServer).Log(m, &containerzLogServer{stream}) +} + +type Containerz_LogServer interface { + Send(*LogResponse) error + grpc.ServerStream +} + +type containerzLogServer struct { + grpc.ServerStream +} + +func (x *containerzLogServer) Send(m *LogResponse) error { + return x.ServerStream.SendMsg(m) +} + +// Containerz_ServiceDesc is the grpc.ServiceDesc for Containerz service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Containerz_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "gnoi.containerz.Containerz", + HandlerType: (*ContainerzServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Remove", + Handler: _Containerz_Remove_Handler, + }, + { + MethodName: "Start", + Handler: _Containerz_Start_Handler, + }, + { + MethodName: "Stop", + Handler: _Containerz_Stop_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Deploy", + Handler: _Containerz_Deploy_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "List", + Handler: _Containerz_List_Handler, + ServerStreams: true, + }, + { + StreamName: "Log", + Handler: _Containerz_Log_Handler, + ServerStreams: true, + }, + }, + Metadata: "containerz/containerz.proto", +} diff --git a/system/system.pb.go b/system/system.pb.go index 6d735e30..11d30002 100644 --- a/system/system.pb.go +++ b/system/system.pb.go @@ -1963,7 +1963,7 @@ var file_system_system_proto_rawDesc = []byte{ 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x6e, 0x6f, 0x69, 0x2e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2b, 0xd2, - 0x3e, 0x05, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x3e, 0x05, 0x31, 0x2e, 0x31, 0x2e, 0x31, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6f, 0x69, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, diff --git a/system/system.proto b/system/system.proto index 99d868c9..ae4b1f8c 100644 --- a/system/system.proto +++ b/system/system.proto @@ -29,7 +29,7 @@ import "types/types.proto"; option go_package = "github.com/openconfig/gnoi/system"; -option (types.gnoi_version) = "1.1.0"; +option (types.gnoi_version) = "1.1.1"; // The gNOI service is a collection of operational RPC's that allow for the // management of a target outside of the configuration and telemetry pipeline.