pod ali create&list

This commit is contained in:
zhouqunjie 2022-04-05 12:22:47 +08:00
parent ebdd241633
commit 250bf6b4d4
9 changed files with 722 additions and 163 deletions

View File

@ -12,6 +12,33 @@ import (
"github.com/pkg/errors"
)
func CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod.CreatePodResp, error) {
var (
pod poder.Poder
)
tenanters, err := tenanter.GetTenanters(req.Provider)
if err != nil {
return nil, errors.WithMessage(err, "getTenanters error")
}
region, err := tenanter.NewRegion(req.Provider, req.RegionId)
if err != nil {
return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId)
}
for _, tenanter := range tenanters {
if req.AccountName == "" || tenanter.AccountName() == req.AccountName {
if pod, err = poder.NewPodClient(req.Provider, region, tenanter); err != nil {
return nil, errors.WithMessage(err, "NewPodClient error")
}
break
}
}
return pod.CreatePod(ctx, req)
}
func ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (*pbpod.ListPodDetailResp, error) {
var (
pod poder.Poder

View File

@ -45,6 +45,33 @@ func newAliEciClient(region tenanter.Region, tenant tenanter.Tenanter) (Poder, e
}, nil
}
func (eci *AliEci) CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod.CreatePodResp, error) {
request := alieci.CreateCreateContainerGroupRequest()
request.RegionId = eci.region.GetName()
request.ContainerGroupName = req.PodName
requestContainer := make([]alieci.CreateContainerGroupContainer, 1)
requestContainer[0].Image = req.ContainerImage
requestContainer[0].Name = req.ContainerName
request.Container = &requestContainer
resp, err := eci.cli.CreateContainerGroup(request)
if err != nil {
return nil, errors.Wrap(err, "Aliyun CreatePod error")
}
isFinished := false
if len(resp.ContainerGroupId) > 0 {
isFinished = true
}
return &pbpod.CreatePodResp{
Pods: nil,
Finished: isFinished,
RequestId: resp.RequestId,
}, nil
}
func (eci *AliEci) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (*pbpod.ListPodDetailResp, error) {
request := alieci.CreateDescribeContainerGroupsRequest()
request.NextToken = req.NextToken
@ -60,7 +87,7 @@ func (eci *AliEci) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailRe
AccountName: eci.tenanter.AccountName(),
PodId: v.ContainerGroupId,
PodName: v.ContainerGroupName,
RegionName: eci.region.GetName(),
RegionId: 0,
ContainerImage: v.Containers[k].Image,
ContainerName: v.Containers[k].Name,
CpuPod: v.Cpu,
@ -88,38 +115,6 @@ func (eci *AliEci) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailRe
}, nil
}
//
//// CreateContainerGroup 创建
//func CreateContainerGroup(cloudStack string, akskPath string, configPath string) string {
//
// var client *eci.Client
// configCommon, _ := config.PCMconfig(configPath)
// configAksk, _ := aksk.AkskConfig(cloudStack, akskPath)
//
// //创建客户端
// client, _ = eci.NewClientWithAccessKey(configCommon.RegionId, configAksk.AccessKey, configAksk.SecretKey)
// // 生成创建请求
// createContainerRequest := eci.CreateCreateContainerGroupRequest()
// // 必需参数
// //区域ID
// createContainerRequest.RegionId = configCommon.RegionId
// //POD名称
// createContainerRequest.ContainerGroupName = configCommon.ContainerGroupName
// //容器名称和镜像名称
// createContainerRequestContainer := make([]eci.CreateContainerGroupContainer, 1)
// createContainerRequestContainer[0].Image = configCommon.ContainerImage
// createContainerRequestContainer[0].Name = configCommon.ContainerName
// createContainerRequest.Container = &createContainerRequestContainer
//
// client.GetConfig().MaxRetryTime = 0
// createContainerGroupResponse, err := client.CreateContainerGroup(createContainerRequest)
// if err != nil {
// panic(err)
// }
// containerGroupId := createContainerGroupResponse.ContainerGroupId
// fmt.Println("Alibaba ContainerGroup created:", containerGroupId)
// return containerGroupId
//}
//
//// DescribeContainerGroup 查询Pod
//func DescribeContainerGroup(cloudStack string, akskPath string, configPath string) eci.DescribeContainerGroupsContainerGroup0 {

View File

@ -17,6 +17,7 @@ var (
type Poder interface {
ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (resp *pbpod.ListPodDetailResp, err error)
CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (resp *pbpod.CreatePodResp, err error)
}
func NewPodClient(provider pbtenant.CloudProvider, region tenanter.Region, tenant tenanter.Tenanter) (poder Poder, err error) {

View File

@ -10,6 +10,15 @@ import (
"google.golang.org/grpc/status"
)
func (s *Server) CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod.CreatePodResp, error) {
resp, err := pod.CreatePod(ctx, req)
if err != nil {
glog.Errorf("CreatePod error %+v", err)
return nil, status.Errorf(codes.Internal, err.Error())
}
return resp, nil
}
func (s *Server) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (*pbpod.ListPodDetailResp, error) {
resp, err := pod.ListPodDetail(ctx, req)
if err != nil {

View File

@ -16,7 +16,7 @@ message PodInstance {
//
string pod_name = 4;
//
string region_name = 5;
int32 region_id = 5;
//
string container_image = 6;
//
@ -48,7 +48,7 @@ message CreatePodReq {
//
string pod_name = 4;
//
string region_name = 5;
int32 region_id = 5;
//
string container_image = 6;
//

View File

@ -36,7 +36,7 @@ type PodInstance struct {
// 实例名称
PodName string `protobuf:"bytes,4,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"`
// 地域,数据中心
RegionName string `protobuf:"bytes,5,opt,name=region_name,json=regionName,proto3" json:"region_name,omitempty"`
RegionId int32 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"`
// 镜像
ContainerImage string `protobuf:"bytes,6,opt,name=container_image,json=containerImage,proto3" json:"container_image,omitempty"`
// 容器名称
@ -115,11 +115,11 @@ func (x *PodInstance) GetPodName() string {
return ""
}
func (x *PodInstance) GetRegionName() string {
func (x *PodInstance) GetRegionId() int32 {
if x != nil {
return x.RegionName
return x.RegionId
}
return ""
return 0
}
func (x *PodInstance) GetContainerImage() string {
@ -178,6 +178,228 @@ func (x *PodInstance) GetNamespace() string {
return ""
}
type CreatePodReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// 云类型
Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"`
// 账号名称
AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"`
// 实例id
PodId string `protobuf:"bytes,3,opt,name=pod_id,json=podId,proto3" json:"pod_id,omitempty"`
// 实例名称
PodName string `protobuf:"bytes,4,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"`
// 地域,数据中心
RegionId int32 `protobuf:"varint,5,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"`
// 镜像
ContainerImage string `protobuf:"bytes,6,opt,name=container_image,json=containerImage,proto3" json:"container_image,omitempty"`
// 容器名称
ContainerName string `protobuf:"bytes,7,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"`
// v cpu数
CpuPod float32 `protobuf:"fixed32,8,opt,name=cpu_pod,json=cpuPod,proto3" json:"cpu_pod,omitempty"`
// 内存MB
MemoryPod float32 `protobuf:"fixed32,9,opt,name=memory_pod,json=memoryPod,proto3" json:"memory_pod,omitempty"`
//安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)
SecurityGroupId string `protobuf:"bytes,10,opt,name=security_group_id,json=securityGroupId,proto3" json:"security_group_id,omitempty"`
//子网ID 对应腾讯 SubnetId(腾讯必需)
SubnetId string `protobuf:"bytes,11,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
//VPC ID 对应腾讯 VpcId(腾讯必需)
VpcId string `protobuf:"bytes,12,opt,name=vpc_id,json=vpcId,proto3" json:"vpc_id,omitempty"`
//名空间
Namespace string `protobuf:"bytes,13,opt,name=namespace,proto3" json:"namespace,omitempty"`
}
func (x *CreatePodReq) Reset() {
*x = CreatePodReq{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePodReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePodReq) ProtoMessage() {}
func (x *CreatePodReq) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_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 CreatePodReq.ProtoReflect.Descriptor instead.
func (*CreatePodReq) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{1}
}
func (x *CreatePodReq) GetProvider() pbtenant.CloudProvider {
if x != nil {
return x.Provider
}
return pbtenant.CloudProvider(0)
}
func (x *CreatePodReq) GetAccountName() string {
if x != nil {
return x.AccountName
}
return ""
}
func (x *CreatePodReq) GetPodId() string {
if x != nil {
return x.PodId
}
return ""
}
func (x *CreatePodReq) GetPodName() string {
if x != nil {
return x.PodName
}
return ""
}
func (x *CreatePodReq) GetRegionId() int32 {
if x != nil {
return x.RegionId
}
return 0
}
func (x *CreatePodReq) GetContainerImage() string {
if x != nil {
return x.ContainerImage
}
return ""
}
func (x *CreatePodReq) GetContainerName() string {
if x != nil {
return x.ContainerName
}
return ""
}
func (x *CreatePodReq) GetCpuPod() float32 {
if x != nil {
return x.CpuPod
}
return 0
}
func (x *CreatePodReq) GetMemoryPod() float32 {
if x != nil {
return x.MemoryPod
}
return 0
}
func (x *CreatePodReq) GetSecurityGroupId() string {
if x != nil {
return x.SecurityGroupId
}
return ""
}
func (x *CreatePodReq) GetSubnetId() string {
if x != nil {
return x.SubnetId
}
return ""
}
func (x *CreatePodReq) GetVpcId() string {
if x != nil {
return x.VpcId
}
return ""
}
func (x *CreatePodReq) GetNamespace() string {
if x != nil {
return x.Namespace
}
return ""
}
type CreatePodResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Pod集合
Pods []*PodInstance `protobuf:"bytes,1,rep,name=pods,proto3" json:"pods,omitempty"`
// 查询是否完成,如果为否-false则可以将下面三个分页参数填入到请求中继续查询
Finished bool `protobuf:"varint,2,opt,name=finished,proto3" json:"finished,omitempty"`
// 请求id出现问题后提供给云厂商排查问题
RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
}
func (x *CreatePodResp) Reset() {
*x = CreatePodResp{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreatePodResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreatePodResp) ProtoMessage() {}
func (x *CreatePodResp) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_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 CreatePodResp.ProtoReflect.Descriptor instead.
func (*CreatePodResp) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{2}
}
func (x *CreatePodResp) GetPods() []*PodInstance {
if x != nil {
return x.Pods
}
return nil
}
func (x *CreatePodResp) GetFinished() bool {
if x != nil {
return x.Finished
}
return false
}
func (x *CreatePodResp) GetRequestId() string {
if x != nil {
return x.RequestId
}
return ""
}
type ListPodDetailReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -202,7 +424,7 @@ type ListPodDetailReq struct {
func (x *ListPodDetailReq) Reset() {
*x = ListPodDetailReq{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[1]
mi := &file_idl_pbpod_pod_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -215,7 +437,7 @@ func (x *ListPodDetailReq) String() string {
func (*ListPodDetailReq) ProtoMessage() {}
func (x *ListPodDetailReq) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_proto_msgTypes[1]
mi := &file_idl_pbpod_pod_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -228,7 +450,7 @@ func (x *ListPodDetailReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListPodDetailReq.ProtoReflect.Descriptor instead.
func (*ListPodDetailReq) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{1}
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{3}
}
func (x *ListPodDetailReq) GetProvider() pbtenant.CloudProvider {
@ -302,7 +524,7 @@ type ListPodDetailResp struct {
func (x *ListPodDetailResp) Reset() {
*x = ListPodDetailResp{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[2]
mi := &file_idl_pbpod_pod_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -315,7 +537,7 @@ func (x *ListPodDetailResp) String() string {
func (*ListPodDetailResp) ProtoMessage() {}
func (x *ListPodDetailResp) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_proto_msgTypes[2]
mi := &file_idl_pbpod_pod_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -328,7 +550,7 @@ func (x *ListPodDetailResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListPodDetailResp.ProtoReflect.Descriptor instead.
func (*ListPodDetailResp) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{2}
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{4}
}
func (x *ListPodDetailResp) GetPods() []*PodInstance {
@ -385,7 +607,7 @@ type ListPodReq struct {
func (x *ListPodReq) Reset() {
*x = ListPodReq{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[3]
mi := &file_idl_pbpod_pod_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -398,7 +620,7 @@ func (x *ListPodReq) String() string {
func (*ListPodReq) ProtoMessage() {}
func (x *ListPodReq) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_proto_msgTypes[3]
mi := &file_idl_pbpod_pod_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -411,7 +633,7 @@ func (x *ListPodReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListPodReq.ProtoReflect.Descriptor instead.
func (*ListPodReq) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{3}
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{5}
}
func (x *ListPodReq) GetProvider() pbtenant.CloudProvider {
@ -433,7 +655,7 @@ type ListPodResp struct {
func (x *ListPodResp) Reset() {
*x = ListPodResp{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[4]
mi := &file_idl_pbpod_pod_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -446,7 +668,7 @@ func (x *ListPodResp) String() string {
func (*ListPodResp) ProtoMessage() {}
func (x *ListPodResp) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_proto_msgTypes[4]
mi := &file_idl_pbpod_pod_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -459,7 +681,7 @@ func (x *ListPodResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListPodResp.ProtoReflect.Descriptor instead.
func (*ListPodResp) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{4}
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{6}
}
func (x *ListPodResp) GetPods() []*PodInstance {
@ -478,7 +700,7 @@ type ListPodAllReq struct {
func (x *ListPodAllReq) Reset() {
*x = ListPodAllReq{}
if protoimpl.UnsafeEnabled {
mi := &file_idl_pbpod_pod_proto_msgTypes[5]
mi := &file_idl_pbpod_pod_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -491,7 +713,7 @@ func (x *ListPodAllReq) String() string {
func (*ListPodAllReq) ProtoMessage() {}
func (x *ListPodAllReq) ProtoReflect() protoreflect.Message {
mi := &file_idl_pbpod_pod_proto_msgTypes[5]
mi := &file_idl_pbpod_pod_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -504,7 +726,7 @@ func (x *ListPodAllReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListPodAllReq.ProtoReflect.Descriptor instead.
func (*ListPodAllReq) Descriptor() ([]byte, []int) {
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{5}
return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{7}
}
var File_idl_pbpod_pod_proto protoreflect.FileDescriptor
@ -515,7 +737,7 @@ var file_idl_pbpod_pod_proto_rawDesc = []byte{
0x6c, 0x2f, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e,
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbe, 0x03, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xba, 0x03, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61,
0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
@ -525,83 +747,123 @@ var file_idl_pbpod_pod_proto_rawDesc = []byte{
0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70,
0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d,
0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
0x02, 0x52, 0x06, 0x63, 0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d,
0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d,
0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f,
0x75, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69,
0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49,
0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50,
0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70,
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64,
0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f,
0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61,
0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67,
0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64,
0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f,
0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f,
0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63,
0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07,
0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x63,
0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f,
0x70, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
0x79, 0x50, 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64,
0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a,
0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
0x70, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
0x63, 0x65, 0x22, 0xbb, 0x03, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64,
0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08,
0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70,
0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64,
0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a,
0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70,
0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x63, 0x70, 0x75,
0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f,
0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50,
0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67,
0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1b,
0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76,
0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63,
0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x22, 0x72, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73,
0x70, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e,
0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e,
0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x49, 0x64, 0x22, 0xfb, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64,
0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f,
0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62,
0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21,
0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x15,
0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75,
0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65,
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0xd3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x50,
0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73,
0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
0x70, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a,
0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65,
0x78, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74,
0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e,
0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x0b, 0x4c,
0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f,
0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64,
0x2e, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f,
0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1f,
0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12,
0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0a, 0x4c, 0x69,
0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74,
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69,
0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x35, 0x0a,
0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x04,
0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x70,
0x6f, 0x64, 0x2e, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04,
0x70, 0x6f, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41,
0x6c, 0x6c, 0x52, 0x65, 0x71, 0x32, 0x87, 0x02, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44,
0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x18,
0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15,
0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x64, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x46, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64,
0x12, 0x11, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64,
0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x22,
0x09, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x50, 0x0a,
0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x12, 0x14, 0x2e, 0x70, 0x62,
0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65,
0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f,
0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f,
0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x61, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, 0x42,
0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x63,
0x6e, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2f, 0x50, 0x43, 0x4d, 0x2f, 0x6c, 0x61, 0x6e, 0x5f, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c,
0x52, 0x65, 0x71, 0x32, 0xdc, 0x02, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12,
0x13, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f,
0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50,
0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65,
0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f,
0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x64,
0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x46, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74,
0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x0e, 0x22, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x3a, 0x01, 0x2a,
0x12, 0x50, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x12, 0x14,
0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c,
0x6c, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12,
0x22, 0x0d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x61, 0x6c, 0x6c, 0x3a,
0x01, 0x2a, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x6f, 0x72,
0x67, 0x2e, 0x63, 0x6e, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2f, 0x50, 0x43, 0x4d, 0x2f, 0x6c, 0x61,
0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x70, 0x6f,
0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -616,33 +878,39 @@ func file_idl_pbpod_pod_proto_rawDescGZIP() []byte {
return file_idl_pbpod_pod_proto_rawDescData
}
var file_idl_pbpod_pod_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_idl_pbpod_pod_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_idl_pbpod_pod_proto_goTypes = []interface{}{
(*PodInstance)(nil), // 0: pbpod.PodInstance
(*ListPodDetailReq)(nil), // 1: pbpod.ListPodDetailReq
(*ListPodDetailResp)(nil), // 2: pbpod.ListPodDetailResp
(*ListPodReq)(nil), // 3: pbpod.ListPodReq
(*ListPodResp)(nil), // 4: pbpod.ListPodResp
(*ListPodAllReq)(nil), // 5: pbpod.ListPodAllReq
(pbtenant.CloudProvider)(0), // 6: pbtenant.CloudProvider
(*CreatePodReq)(nil), // 1: pbpod.CreatePodReq
(*CreatePodResp)(nil), // 2: pbpod.CreatePodResp
(*ListPodDetailReq)(nil), // 3: pbpod.ListPodDetailReq
(*ListPodDetailResp)(nil), // 4: pbpod.ListPodDetailResp
(*ListPodReq)(nil), // 5: pbpod.ListPodReq
(*ListPodResp)(nil), // 6: pbpod.ListPodResp
(*ListPodAllReq)(nil), // 7: pbpod.ListPodAllReq
(pbtenant.CloudProvider)(0), // 8: pbtenant.CloudProvider
}
var file_idl_pbpod_pod_proto_depIdxs = []int32{
6, // 0: pbpod.PodInstance.provider:type_name -> pbtenant.CloudProvider
6, // 1: pbpod.ListPodDetailReq.provider:type_name -> pbtenant.CloudProvider
0, // 2: pbpod.ListPodDetailResp.pods:type_name -> pbpod.PodInstance
6, // 3: pbpod.ListPodReq.provider:type_name -> pbtenant.CloudProvider
0, // 4: pbpod.ListPodResp.pods:type_name -> pbpod.PodInstance
1, // 5: pbpod.PodService.ListPodDetail:input_type -> pbpod.ListPodDetailReq
3, // 6: pbpod.PodService.ListPod:input_type -> pbpod.ListPodReq
5, // 7: pbpod.PodService.ListPodAll:input_type -> pbpod.ListPodAllReq
2, // 8: pbpod.PodService.ListPodDetail:output_type -> pbpod.ListPodDetailResp
4, // 9: pbpod.PodService.ListPod:output_type -> pbpod.ListPodResp
4, // 10: pbpod.PodService.ListPodAll:output_type -> pbpod.ListPodResp
8, // [8:11] is the sub-list for method output_type
5, // [5:8] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
8, // 0: pbpod.PodInstance.provider:type_name -> pbtenant.CloudProvider
8, // 1: pbpod.CreatePodReq.provider:type_name -> pbtenant.CloudProvider
0, // 2: pbpod.CreatePodResp.pods:type_name -> pbpod.PodInstance
8, // 3: pbpod.ListPodDetailReq.provider:type_name -> pbtenant.CloudProvider
0, // 4: pbpod.ListPodDetailResp.pods:type_name -> pbpod.PodInstance
8, // 5: pbpod.ListPodReq.provider:type_name -> pbtenant.CloudProvider
0, // 6: pbpod.ListPodResp.pods:type_name -> pbpod.PodInstance
1, // 7: pbpod.PodService.CreatePod:input_type -> pbpod.CreatePodReq
3, // 8: pbpod.PodService.ListPodDetail:input_type -> pbpod.ListPodDetailReq
5, // 9: pbpod.PodService.ListPod:input_type -> pbpod.ListPodReq
7, // 10: pbpod.PodService.ListPodAll:input_type -> pbpod.ListPodAllReq
2, // 11: pbpod.PodService.CreatePod:output_type -> pbpod.CreatePodResp
4, // 12: pbpod.PodService.ListPodDetail:output_type -> pbpod.ListPodDetailResp
6, // 13: pbpod.PodService.ListPod:output_type -> pbpod.ListPodResp
6, // 14: pbpod.PodService.ListPodAll:output_type -> pbpod.ListPodResp
11, // [11:15] is the sub-list for method output_type
7, // [7:11] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
}
func init() { file_idl_pbpod_pod_proto_init() }
@ -664,7 +932,7 @@ func file_idl_pbpod_pod_proto_init() {
}
}
file_idl_pbpod_pod_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodDetailReq); i {
switch v := v.(*CreatePodReq); i {
case 0:
return &v.state
case 1:
@ -676,7 +944,7 @@ func file_idl_pbpod_pod_proto_init() {
}
}
file_idl_pbpod_pod_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodDetailResp); i {
switch v := v.(*CreatePodResp); i {
case 0:
return &v.state
case 1:
@ -688,7 +956,7 @@ func file_idl_pbpod_pod_proto_init() {
}
}
file_idl_pbpod_pod_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodReq); i {
switch v := v.(*ListPodDetailReq); i {
case 0:
return &v.state
case 1:
@ -700,7 +968,7 @@ func file_idl_pbpod_pod_proto_init() {
}
}
file_idl_pbpod_pod_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodResp); i {
switch v := v.(*ListPodDetailResp); i {
case 0:
return &v.state
case 1:
@ -712,6 +980,30 @@ func file_idl_pbpod_pod_proto_init() {
}
}
file_idl_pbpod_pod_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_idl_pbpod_pod_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_idl_pbpod_pod_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListPodAllReq); i {
case 0:
return &v.state
@ -730,7 +1022,7 @@ func file_idl_pbpod_pod_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_idl_pbpod_pod_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumMessages: 8,
NumExtensions: 0,
NumServices: 1,
},

View File

@ -31,6 +31,40 @@ var _ = runtime.String
var _ = utilities.NewDoubleArray
var _ = metadata.Join
func request_PodService_CreatePod_0(ctx context.Context, marshaler runtime.Marshaler, client PodServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq CreatePodReq
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.CreatePod(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PodService_CreatePod_0(ctx context.Context, marshaler runtime.Marshaler, server PodServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq CreatePodReq
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.CreatePod(ctx, &protoReq)
return msg, metadata, err
}
func request_PodService_ListPodDetail_0(ctx context.Context, marshaler runtime.Marshaler, client PodServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListPodDetailReq
var metadata runtime.ServerMetadata
@ -139,6 +173,30 @@ func local_request_PodService_ListPodAll_0(ctx context.Context, marshaler runtim
// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPodServiceHandlerFromEndpoint instead.
func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PodServiceServer) error {
mux.Handle("POST", pattern_PodService_CreatePod_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/CreatePod", runtime.WithHTTPPathPattern("/apis/pod/create"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PodService_CreatePod_0(ctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PodService_CreatePod_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_PodService_ListPodDetail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -252,6 +310,27 @@ func RegisterPodServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn
// "PodServiceClient" to call the correct interceptors.
func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PodServiceClient) error {
mux.Handle("POST", pattern_PodService_CreatePod_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
var err error
ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/CreatePod", runtime.WithHTTPPathPattern("/apis/pod/create"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PodService_CreatePod_0(ctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PodService_CreatePod_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_PodService_ListPodDetail_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -319,6 +398,8 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
}
var (
pattern_PodService_CreatePod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "create"}, ""))
pattern_PodService_ListPodDetail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "detail"}, ""))
pattern_PodService_ListPod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"apis", "pod"}, ""))
@ -327,6 +408,8 @@ var (
)
var (
forward_PodService_CreatePod_0 = runtime.ForwardResponseMessage
forward_PodService_ListPodDetail_0 = runtime.ForwardResponseMessage
forward_PodService_ListPod_0 = runtime.ForwardResponseMessage

View File

@ -22,7 +22,9 @@ const _ = grpc.SupportPackageIsVersion7
//
// 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 PodServiceClient interface {
// 查询ECS明细 - 支持云类型、区域、账户、分页等过滤条件
// 创建Pod
CreatePod(ctx context.Context, in *CreatePodReq, opts ...grpc.CallOption) (*CreatePodResp, error)
// 查询Pod明细
ListPodDetail(ctx context.Context, in *ListPodDetailReq, opts ...grpc.CallOption) (*ListPodDetailResp, error)
// 查询Pod全量 - 根据云类型
ListPod(ctx context.Context, in *ListPodReq, opts ...grpc.CallOption) (*ListPodResp, error)
@ -38,6 +40,15 @@ func NewPodServiceClient(cc grpc.ClientConnInterface) PodServiceClient {
return &podServiceClient{cc}
}
func (c *podServiceClient) CreatePod(ctx context.Context, in *CreatePodReq, opts ...grpc.CallOption) (*CreatePodResp, error) {
out := new(CreatePodResp)
err := c.cc.Invoke(ctx, "/pbpod.PodService/CreatePod", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *podServiceClient) ListPodDetail(ctx context.Context, in *ListPodDetailReq, opts ...grpc.CallOption) (*ListPodDetailResp, error) {
out := new(ListPodDetailResp)
err := c.cc.Invoke(ctx, "/pbpod.PodService/ListPodDetail", in, out, opts...)
@ -69,7 +80,9 @@ func (c *podServiceClient) ListPodAll(ctx context.Context, in *ListPodAllReq, op
// All implementations must embed UnimplementedPodServiceServer
// for forward compatibility
type PodServiceServer interface {
// 查询ECS明细 - 支持云类型、区域、账户、分页等过滤条件
// 创建Pod
CreatePod(context.Context, *CreatePodReq) (*CreatePodResp, error)
// 查询Pod明细
ListPodDetail(context.Context, *ListPodDetailReq) (*ListPodDetailResp, error)
// 查询Pod全量 - 根据云类型
ListPod(context.Context, *ListPodReq) (*ListPodResp, error)
@ -82,6 +95,9 @@ type PodServiceServer interface {
type UnimplementedPodServiceServer struct {
}
func (UnimplementedPodServiceServer) CreatePod(context.Context, *CreatePodReq) (*CreatePodResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreatePod not implemented")
}
func (UnimplementedPodServiceServer) ListPodDetail(context.Context, *ListPodDetailReq) (*ListPodDetailResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListPodDetail not implemented")
}
@ -104,6 +120,24 @@ func RegisterPodServiceServer(s grpc.ServiceRegistrar, srv PodServiceServer) {
s.RegisterService(&PodService_ServiceDesc, srv)
}
func _PodService_CreatePod_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreatePodReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PodServiceServer).CreatePod(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pbpod.PodService/CreatePod",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PodServiceServer).CreatePod(ctx, req.(*CreatePodReq))
}
return interceptor(ctx, in, info, handler)
}
func _PodService_ListPodDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListPodDetailReq)
if err := dec(in); err != nil {
@ -165,6 +199,10 @@ var PodService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pbpod.PodService",
HandlerType: (*PodServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CreatePod",
Handler: _PodService_CreatePod_Handler,
},
{
MethodName: "ListPodDetail",
Handler: _PodService_ListPodDetail_Handler,

View File

@ -82,9 +82,42 @@
]
}
},
"/apis/pod/create": {
"post": {
"summary": "创建Pod",
"operationId": "PodService_CreatePod",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/pbpodCreatePodResp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/pbpodCreatePodReq"
}
}
],
"tags": [
"PodService"
]
}
},
"/apis/pod/detail": {
"post": {
"summary": "查询ECS明细 - 支持云类型、区域、账户、分页等过滤条件",
"summary": "查询Pod明细",
"operationId": "PodService_ListPodDetail",
"responses": {
"200": {
@ -117,6 +150,86 @@
}
},
"definitions": {
"pbpodCreatePodReq": {
"type": "object",
"properties": {
"provider": {
"$ref": "#/definitions/pbtenantCloudProvider",
"title": "云类型"
},
"accountName": {
"type": "string",
"title": "账号名称"
},
"podId": {
"type": "string",
"title": "实例id"
},
"podName": {
"type": "string",
"title": "实例名称"
},
"regionId": {
"type": "integer",
"format": "int32",
"title": "地域,数据中心"
},
"containerImage": {
"type": "string",
"title": "镜像"
},
"containerName": {
"type": "string",
"title": "容器名称"
},
"cpuPod": {
"type": "number",
"format": "float",
"title": "v cpu数"
},
"memoryPod": {
"type": "number",
"format": "float",
"title": "内存MB"
},
"securityGroupId": {
"type": "string",
"title": "安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)"
},
"subnetId": {
"type": "string",
"title": "子网ID 对应腾讯 SubnetId(腾讯必需)"
},
"vpcId": {
"type": "string",
"title": "VPC ID 对应腾讯 VpcId(腾讯必需)"
},
"namespace": {
"type": "string",
"title": "名空间"
}
}
},
"pbpodCreatePodResp": {
"type": "object",
"properties": {
"pods": {
"type": "array",
"items": {
"$ref": "#/definitions/pbpodPodInstance"
},
"title": "Pod集合"
},
"finished": {
"type": "boolean",
"title": "查询是否完成,如果为否-false则可以将下面三个分页参数填入到请求中继续查询"
},
"requestId": {
"type": "string",
"title": "请求id出现问题后提供给云厂商排查问题"
}
}
},
"pbpodListPodAllReq": {
"type": "object"
},
@ -231,8 +344,9 @@
"type": "string",
"title": "实例名称"
},
"regionName": {
"type": "string",
"regionId": {
"type": "integer",
"format": "int32",
"title": "地域,数据中心"
},
"containerImage": {