diff --git a/adaptor/vm_adaptor/server/ecs/list.go b/adaptor/vm_adaptor/server/ecs/list.go index 1d0507d2..8957ffdd 100644 --- a/adaptor/vm_adaptor/server/ecs/list.go +++ b/adaptor/vm_adaptor/server/ecs/list.go @@ -4,34 +4,50 @@ import ( "context" "sync" + "github.com/golang/glog" + "github.com/pkg/errors" "gitlink.org.cn/JCCE/PCM/adaptor/vm_adaptor/service/ecser" "gitlink.org.cn/JCCE/PCM/common/tenanter" "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" - - "github.com/golang/glog" - "github.com/pkg/errors" ) -//CreateMultipleEcs 创建多家云ECS -func CreateMultipleEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs.CreateEcsResp, error) { +//CreateMultipleEcs 创建多云ECS +func CreateMultipleEcs(ctx context.Context, reqs *pbecs.CreateEcsMultipleReq) (*pbecs.CreateEcsMultipleResp, error) { var ( - ecs ecser.Ecser + wg sync.WaitGroup + requestIds = make([]string, 0) ) - tenanters, err := tenanter.GetTenanters(req.Provider) - region, err := tenanter.NewRegion(req.Provider, req.RegionId) - if err != nil { - return nil, errors.Wrap(err, "get tenanters failed") - } - for _, tenanter := range tenanters { - if req.AccountName == "" || tenanter.AccountName() == req.AccountName { - if ecs, err = ecser.NewEcsClient(req.Provider, region, tenanter); err != nil { - return nil, errors.WithMessage(err, "NewEcsClient error") + wg.Add(len(reqs.GetCreateEcsReqs())) + c := make(chan string, len(reqs.GetCreateEcsReqs())) + for _, k := range reqs.GetCreateEcsReqs() { + k := k + go func() { + defer wg.Done() + resp, err := CreateEcs(ctx, k) + if err != nil { + glog.Errorf(k.Provider.String()+"CreateEcs error: %v", err) + c <- k.Provider.String() + return } - break - } + c <- resp.GetRequestId() + }() } - return ecs.CreateEcs(ctx, req) + go func() { + defer close(c) + wg.Wait() + }() + for v := range c { + requestIds = append(requestIds, v) + } + isFinished := false + if len(requestIds) > 0 { + isFinished = true + } + return &pbecs.CreateEcsMultipleResp{ + RequestId: requestIds, + Finished: isFinished, + }, nil } func CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs.CreateEcsResp, error) { diff --git a/adaptor/vm_adaptor/service/ecser/ali.go b/adaptor/vm_adaptor/service/ecser/ali.go index ff62b435..5f221323 100644 --- a/adaptor/vm_adaptor/service/ecser/ali.go +++ b/adaptor/vm_adaptor/service/ecser/ali.go @@ -4,20 +4,16 @@ import ( "context" "sync" - "github.com/alibabacloud-go/tea/tea" - - "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" - openapi "github.com/alibabacloud-go/darabonba-openapi/client" - - "github.com/golang/glog" - string_ "github.com/alibabacloud-go/darabonba-string/client" aliecs "github.com/alibabacloud-go/ecs-20140526/v2/client" util "github.com/alibabacloud-go/tea-utils/service" + "github.com/alibabacloud-go/tea/tea" + "github.com/golang/glog" "github.com/pkg/errors" "gitlink.org.cn/JCCE/PCM/common/tenanter" "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" + "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" ) var aliClientMutex sync.Mutex @@ -90,7 +86,6 @@ func (ecs *AliEcs) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbe InstanceChargeType: &InstanceChargeType, } // 创建并运行实例 - glog.Infof("CreateEcs req: %+v", req) resp, err := ecs.cli.RunInstances(request) if err != nil { return nil, errors.Wrap(err, "Ali Create ECS error") @@ -100,6 +95,8 @@ func (ecs *AliEcs) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbe if len(resp.Body.InstanceIdSets.InstanceIdSet) > 0 { isFinished = true } + glog.Infof("--------------------阿里ECS实例创建成功--------------------") + glog.Infof(*util.ToJSONString(util.ToMap(resp))) requestId := *resp.Body.RequestId //订单ID。该参数只有创建包年包月ECS实例(请求参数InstanceChargeType=PrePaid)时有返回值。 OrderId := "" @@ -117,7 +114,7 @@ func (ecs *AliEcs) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbe return &pbecs.CreateEcsResp{ OrderId: OrderId, TradePrice: TradePrice, - RequestId: requestId, + RequestId: "Ali ECS RequestId: " + requestId, InstanceIdSets: InstanceIds, Finished: isFinished, }, nil diff --git a/adaptor/vm_adaptor/service/ecser/huawei.go b/adaptor/vm_adaptor/service/ecser/huawei.go index 8f182a37..92c925eb 100644 --- a/adaptor/vm_adaptor/service/ecser/huawei.go +++ b/adaptor/vm_adaptor/service/ecser/huawei.go @@ -4,17 +4,10 @@ import ( "context" "strconv" - "github.com/golang/glog" - string_ "github.com/alibabacloud-go/darabonba-string/client" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" - - "gitlink.org.cn/JCCE/PCM/common/tenanter" - "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" - "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" - + "github.com/golang/glog" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" hwecs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2/model" @@ -23,6 +16,9 @@ import ( iammodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/model" iamregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/region" "github.com/pkg/errors" + "gitlink.org.cn/JCCE/PCM/common/tenanter" + "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" + "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" ) type HuaweiEcs struct { @@ -133,7 +129,7 @@ func (ecs *HuaweiEcs) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (* } return &pbecs.CreateEcsResp{ OrderId: OrderId, - RequestId: *resp.JobId, + RequestId: "Huawei ECS RequestId: " + *resp.JobId, InstanceIdSets: InstanceIds, Finished: isFinished, }, nil diff --git a/adaptor/vm_adaptor/service/ecser/tencent.go b/adaptor/vm_adaptor/service/ecser/tencent.go index 4907f525..953d8859 100644 --- a/adaptor/vm_adaptor/service/ecser/tencent.go +++ b/adaptor/vm_adaptor/service/ecser/tencent.go @@ -4,21 +4,16 @@ import ( "context" string_ "github.com/alibabacloud-go/darabonba-string/client" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" - "github.com/golang/glog" - - "gitlink.org.cn/JCCE/PCM/common/tenanter" - - "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" - "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" - "github.com/pkg/errors" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + "gitlink.org.cn/JCCE/PCM/common/tenanter" + "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs" + "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbtenant" ) type TencentCvm struct { @@ -68,7 +63,6 @@ func (ecs *TencentCvm) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) ( Zone: &ZoneId, } resp, err := ecs.cli.RunInstances(request) - glog.Infof("CreateEcs req: %+v", req) if err != nil { return nil, errors.Wrap(err, "Tencent Create ECS error") } @@ -80,8 +74,10 @@ func (ecs *TencentCvm) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) ( if len(resp.Response.InstanceIdSet) > 0 { isFinished = true } + glog.Infof("--------------------腾讯ECS实例创建成功--------------------") + glog.Infof(*util.ToJSONString(util.ToMap(resp))) return &pbecs.CreateEcsResp{ - RequestId: *resp.Response.RequestId, + RequestId: "Tencent ECS RequestId: " + *resp.Response.RequestId, InstanceIdSets: InstanceIds, Finished: isFinished, }, nil @@ -100,9 +96,10 @@ func (ecs *TencentCvm) DeleteEcs(ctx context.Context, req *pbecs.DeleteEcsReq) ( if err != nil { return nil, errors.Wrap(err, "Tencent Delete ECS error") } - glog.Infof("--------------------实例释放成功--------------------") + glog.Infof("--------------------腾讯ECS实例释放成功--------------------") glog.Infof(*util.ToJSONString(util.ToMap(resp))) return &pbecs.DeleteEcsResp{ + Provider: req.Provider, RequestId: *resp.Response.RequestId, AccountName: req.AccountName, RegionId: req.RegionId, @@ -124,7 +121,7 @@ func (ecs *TencentCvm) UpdateEcs(ctx context.Context, req *pbecs.UpdateEcsReq) ( if err != nil { return nil, errors.Wrap(err, "Tencent Update ECS error") } - glog.Infof("--------------------实例修改成功--------------------") + glog.Infof("--------------------腾讯ECS实例修改成功--------------------") glog.Infof(*util.ToJSONString(util.ToMap(resp))) return &pbecs.UpdateEcsResp{ RequestId: *resp.Response.RequestId, diff --git a/common/server/server_ecs.go b/common/server/server_ecs.go index b31a809a..bb40a2fb 100644 --- a/common/server/server_ecs.go +++ b/common/server/server_ecs.go @@ -11,6 +11,16 @@ import ( "google.golang.org/grpc/status" ) +// CreateMultipleEcs return create cloudy ecs +func (s *Server) CreateMultipleEcs(ctx context.Context, reqs *pbecs.CreateEcsMultipleReq) (*pbecs.CreateEcsMultipleResp, error) { + resp, err := ecs.CreateMultipleEcs(ctx, reqs) + if err != nil { + glog.Errorf("ListEcsDetail error %+v", err) + return nil, status.Errorf(codes.Internal, err.Error()) + } + return resp, nil +} + // CreateEcs return create ecs func (s *Server) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs.CreateEcsResp, error) { resp, err := ecs.CreateEcs(ctx, req) diff --git a/idl/pbecs/ecs.proto b/idl/pbecs/ecs.proto index 82ec3eae..e282082b 100644 --- a/idl/pbecs/ecs.proto +++ b/idl/pbecs/ecs.proto @@ -6,6 +6,7 @@ option go_package = "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs"; import "idl/pbtenant/tenant.proto"; import "google/api/annotations.proto"; +//ECS 实例 message EcsInstance { // 云类型 pbtenant.CloudProvider provider = 1; @@ -51,6 +52,19 @@ enum InternetChargeType { PayByTraffic = 1; } +//创建多家云ECS入参 +message CreateEcsMultipleReq { + repeated CreateEcsReq createEcsReqs = 1; +} +//创建多家云ECS返回值 +message CreateEcsMultipleResp { + // 请求ID + repeated string request_id = 1; + // 查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询 + bool finished = 2; +} + +//创建ECS入参 message CreateEcsReq { // 云类型 pbtenant.CloudProvider provider = 1; @@ -92,6 +106,7 @@ message CreateEcsReq { string subnet_id =19; } +//系统磁盘 message SystemDisk { //系统盘大小,单位为GiB。取值范围:20~500。该参数的取值必须大于或者等于max{20, ImageSize}。默认值:max{40, 参数ImageId对应的镜像大小} string size = 1; @@ -107,6 +122,7 @@ message SystemDisk { string auto_snapshot_policy_id = 6; } +//创建ECS返回值 message CreateEcsResp { // 云名称 pbtenant.CloudProvider provider = 1; @@ -126,6 +142,7 @@ message CreateEcsResp { bool finished = 8; } +//删除ECS入参 message DeleteEcsReq { // 云类型 pbtenant.CloudProvider provider = 1; @@ -151,6 +168,7 @@ message DeleteEcsReq { string delete_volume = 9; } +//删除ECS返回值 message DeleteEcsResp { // 云名称 pbtenant.CloudProvider provider = 1; @@ -162,6 +180,7 @@ message DeleteEcsResp { string request_id = 4; } +//更新ECS入参 message UpdateEcsReq { // 云类型 pbtenant.CloudProvider provider = 1; @@ -183,6 +202,7 @@ message UpdateEcsReq { string security_group_ids = 9; } +//更新ECS返回值 message UpdateEcsResp { // 云名称 pbtenant.CloudProvider provider = 1; @@ -194,6 +214,7 @@ message UpdateEcsResp { string request_id = 4; } +//查询ECS入参 message ListDetailReq { // 云名称 pbtenant.CloudProvider provider = 1; @@ -209,6 +230,7 @@ message ListDetailReq { string next_token = 6; } +//查询ECS返回值 message ListDetailResp { // Ecs 机器集合 repeated EcsInstance ecses = 1; @@ -244,6 +266,14 @@ message ListAllReq{} // 亚马逊云 - EC2 service EcsService { + // 创建多家云ECS + rpc CreateMultipleEcs(CreateEcsMultipleReq) returns (CreateEcsMultipleResp) { + option (google.api.http) = { + post : "/apis/ecs/createMultiple" + body : "*" + }; + } + // 创建ECS rpc CreateEcs(CreateEcsReq) returns (CreateEcsResp) { option (google.api.http) = { diff --git a/lan_trans/idl/pbecs/ecs.pb.go b/lan_trans/idl/pbecs/ecs.pb.go index 3131a725..1bd2bc17 100644 --- a/lan_trans/idl/pbecs/ecs.pb.go +++ b/lan_trans/idl/pbecs/ecs.pb.go @@ -71,6 +71,7 @@ func (InternetChargeType) EnumDescriptor() ([]byte, []int) { return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{0} } +//ECS 实例 type EcsInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -263,6 +264,113 @@ func (x *EcsInstance) GetInstanceChargeType() string { return "" } +//创建多家云ECS入参 +type CreateEcsMultipleReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreateEcsReqs []*CreateEcsReq `protobuf:"bytes,1,rep,name=createEcsReqs,proto3" json:"createEcsReqs,omitempty"` +} + +func (x *CreateEcsMultipleReq) Reset() { + *x = CreateEcsMultipleReq{} + if protoimpl.UnsafeEnabled { + mi := &file_idl_pbecs_ecs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateEcsMultipleReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEcsMultipleReq) ProtoMessage() {} + +func (x *CreateEcsMultipleReq) ProtoReflect() protoreflect.Message { + mi := &file_idl_pbecs_ecs_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 CreateEcsMultipleReq.ProtoReflect.Descriptor instead. +func (*CreateEcsMultipleReq) Descriptor() ([]byte, []int) { + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateEcsMultipleReq) GetCreateEcsReqs() []*CreateEcsReq { + if x != nil { + return x.CreateEcsReqs + } + return nil +} + +//创建多家云ECS返回值 +type CreateEcsMultipleResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 请求ID + RequestId []string `protobuf:"bytes,1,rep,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + // 查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询 + Finished bool `protobuf:"varint,2,opt,name=finished,proto3" json:"finished,omitempty"` +} + +func (x *CreateEcsMultipleResp) Reset() { + *x = CreateEcsMultipleResp{} + if protoimpl.UnsafeEnabled { + mi := &file_idl_pbecs_ecs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateEcsMultipleResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEcsMultipleResp) ProtoMessage() {} + +func (x *CreateEcsMultipleResp) ProtoReflect() protoreflect.Message { + mi := &file_idl_pbecs_ecs_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 CreateEcsMultipleResp.ProtoReflect.Descriptor instead. +func (*CreateEcsMultipleResp) Descriptor() ([]byte, []int) { + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{2} +} + +func (x *CreateEcsMultipleResp) GetRequestId() []string { + if x != nil { + return x.RequestId + } + return nil +} + +func (x *CreateEcsMultipleResp) GetFinished() bool { + if x != nil { + return x.Finished + } + return false +} + +//创建ECS入参 type CreateEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -311,7 +419,7 @@ type CreateEcsReq struct { func (x *CreateEcsReq) Reset() { *x = CreateEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[1] + mi := &file_idl_pbecs_ecs_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -324,7 +432,7 @@ func (x *CreateEcsReq) String() string { func (*CreateEcsReq) ProtoMessage() {} func (x *CreateEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[1] + mi := &file_idl_pbecs_ecs_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -337,7 +445,7 @@ func (x *CreateEcsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEcsReq.ProtoReflect.Descriptor instead. func (*CreateEcsReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{1} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{3} } func (x *CreateEcsReq) GetProvider() pbtenant.CloudProvider { @@ -473,6 +581,7 @@ func (x *CreateEcsReq) GetSubnetId() string { return "" } +//系统磁盘 type SystemDisk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -495,7 +604,7 @@ type SystemDisk struct { func (x *SystemDisk) Reset() { *x = SystemDisk{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[2] + mi := &file_idl_pbecs_ecs_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -508,7 +617,7 @@ func (x *SystemDisk) String() string { func (*SystemDisk) ProtoMessage() {} func (x *SystemDisk) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[2] + mi := &file_idl_pbecs_ecs_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -521,7 +630,7 @@ func (x *SystemDisk) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemDisk.ProtoReflect.Descriptor instead. func (*SystemDisk) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{2} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{4} } func (x *SystemDisk) GetSize() string { @@ -566,6 +675,7 @@ func (x *SystemDisk) GetAutoSnapshotPolicyId() string { return "" } +//创建ECS返回值 type CreateEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -592,7 +702,7 @@ type CreateEcsResp struct { func (x *CreateEcsResp) Reset() { *x = CreateEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[3] + mi := &file_idl_pbecs_ecs_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -605,7 +715,7 @@ func (x *CreateEcsResp) String() string { func (*CreateEcsResp) ProtoMessage() {} func (x *CreateEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[3] + mi := &file_idl_pbecs_ecs_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -618,7 +728,7 @@ func (x *CreateEcsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEcsResp.ProtoReflect.Descriptor instead. func (*CreateEcsResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{3} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{5} } func (x *CreateEcsResp) GetProvider() pbtenant.CloudProvider { @@ -677,6 +787,7 @@ func (x *CreateEcsResp) GetFinished() bool { return false } +//删除ECS入参 type DeleteEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -709,7 +820,7 @@ type DeleteEcsReq struct { func (x *DeleteEcsReq) Reset() { *x = DeleteEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[4] + mi := &file_idl_pbecs_ecs_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -722,7 +833,7 @@ func (x *DeleteEcsReq) String() string { func (*DeleteEcsReq) ProtoMessage() {} func (x *DeleteEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[4] + mi := &file_idl_pbecs_ecs_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -735,7 +846,7 @@ func (x *DeleteEcsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEcsReq.ProtoReflect.Descriptor instead. func (*DeleteEcsReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{4} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{6} } func (x *DeleteEcsReq) GetProvider() pbtenant.CloudProvider { @@ -801,6 +912,7 @@ func (x *DeleteEcsReq) GetDeleteVolume() string { return "" } +//删除ECS返回值 type DeleteEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -819,7 +931,7 @@ type DeleteEcsResp struct { func (x *DeleteEcsResp) Reset() { *x = DeleteEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[5] + mi := &file_idl_pbecs_ecs_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -832,7 +944,7 @@ func (x *DeleteEcsResp) String() string { func (*DeleteEcsResp) ProtoMessage() {} func (x *DeleteEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[5] + mi := &file_idl_pbecs_ecs_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -845,7 +957,7 @@ func (x *DeleteEcsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEcsResp.ProtoReflect.Descriptor instead. func (*DeleteEcsResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{5} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{7} } func (x *DeleteEcsResp) GetProvider() pbtenant.CloudProvider { @@ -876,6 +988,7 @@ func (x *DeleteEcsResp) GetRequestId() string { return "" } +//更新ECS入参 type UpdateEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -904,7 +1017,7 @@ type UpdateEcsReq struct { func (x *UpdateEcsReq) Reset() { *x = UpdateEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[6] + mi := &file_idl_pbecs_ecs_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1030,7 @@ func (x *UpdateEcsReq) String() string { func (*UpdateEcsReq) ProtoMessage() {} func (x *UpdateEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[6] + mi := &file_idl_pbecs_ecs_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1043,7 @@ func (x *UpdateEcsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateEcsReq.ProtoReflect.Descriptor instead. func (*UpdateEcsReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{6} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{8} } func (x *UpdateEcsReq) GetProvider() pbtenant.CloudProvider { @@ -996,6 +1109,7 @@ func (x *UpdateEcsReq) GetSecurityGroupIds() string { return "" } +//更新ECS返回值 type UpdateEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1014,7 +1128,7 @@ type UpdateEcsResp struct { func (x *UpdateEcsResp) Reset() { *x = UpdateEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[7] + mi := &file_idl_pbecs_ecs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1027,7 +1141,7 @@ func (x *UpdateEcsResp) String() string { func (*UpdateEcsResp) ProtoMessage() {} func (x *UpdateEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[7] + mi := &file_idl_pbecs_ecs_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1040,7 +1154,7 @@ func (x *UpdateEcsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateEcsResp.ProtoReflect.Descriptor instead. func (*UpdateEcsResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{7} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{9} } func (x *UpdateEcsResp) GetProvider() pbtenant.CloudProvider { @@ -1071,6 +1185,7 @@ func (x *UpdateEcsResp) GetRequestId() string { return "" } +//查询ECS入参 type ListDetailReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1093,7 +1208,7 @@ type ListDetailReq struct { func (x *ListDetailReq) Reset() { *x = ListDetailReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[8] + mi := &file_idl_pbecs_ecs_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1106,7 +1221,7 @@ func (x *ListDetailReq) String() string { func (*ListDetailReq) ProtoMessage() {} func (x *ListDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[8] + mi := &file_idl_pbecs_ecs_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1119,7 +1234,7 @@ func (x *ListDetailReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDetailReq.ProtoReflect.Descriptor instead. func (*ListDetailReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{8} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{10} } func (x *ListDetailReq) GetProvider() pbtenant.CloudProvider { @@ -1164,6 +1279,7 @@ func (x *ListDetailReq) GetNextToken() string { return "" } +//查询ECS返回值 type ListDetailResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1186,7 +1302,7 @@ type ListDetailResp struct { func (x *ListDetailResp) Reset() { *x = ListDetailResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[9] + mi := &file_idl_pbecs_ecs_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1199,7 +1315,7 @@ func (x *ListDetailResp) String() string { func (*ListDetailResp) ProtoMessage() {} func (x *ListDetailResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[9] + mi := &file_idl_pbecs_ecs_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1212,7 +1328,7 @@ func (x *ListDetailResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDetailResp.ProtoReflect.Descriptor instead. func (*ListDetailResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{9} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{11} } func (x *ListDetailResp) GetEcses() []*EcsInstance { @@ -1269,7 +1385,7 @@ type ListReq struct { func (x *ListReq) Reset() { *x = ListReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[10] + mi := &file_idl_pbecs_ecs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1282,7 +1398,7 @@ func (x *ListReq) String() string { func (*ListReq) ProtoMessage() {} func (x *ListReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[10] + mi := &file_idl_pbecs_ecs_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1295,7 +1411,7 @@ func (x *ListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReq.ProtoReflect.Descriptor instead. func (*ListReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{10} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{12} } func (x *ListReq) GetProvider() pbtenant.CloudProvider { @@ -1317,7 +1433,7 @@ type ListResp struct { func (x *ListResp) Reset() { *x = ListResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[11] + mi := &file_idl_pbecs_ecs_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1330,7 +1446,7 @@ func (x *ListResp) String() string { func (*ListResp) ProtoMessage() {} func (x *ListResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[11] + mi := &file_idl_pbecs_ecs_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1343,7 +1459,7 @@ func (x *ListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResp.ProtoReflect.Descriptor instead. func (*ListResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{11} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{13} } func (x *ListResp) GetEcses() []*EcsInstance { @@ -1362,7 +1478,7 @@ type ListAllReq struct { func (x *ListAllReq) Reset() { *x = ListAllReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[12] + mi := &file_idl_pbecs_ecs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1375,7 +1491,7 @@ func (x *ListAllReq) String() string { func (*ListAllReq) ProtoMessage() {} func (x *ListAllReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[12] + mi := &file_idl_pbecs_ecs_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1388,7 +1504,7 @@ func (x *ListAllReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAllReq.ProtoReflect.Descriptor instead. func (*ListAllReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{12} + return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{14} } var File_idl_pbecs_ecs_proto protoreflect.FileDescriptor @@ -1436,223 +1552,241 @@ var file_idl_pbecs_ecs_proto_rawDesc = []byte{ 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x22, 0xe0, 0x05, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, - 0x63, 0x73, 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, 0x19, 0x0a, 0x08, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x76, 0x5f, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x69, 0x73, 0x6b, - 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4b, 0x0a, 0x14, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x4f, 0x75, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, - 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x22, 0xdf, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0xa5, 0x02, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 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, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0a, 0x74, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x22, 0xda, 0x02, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x51, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, + 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x39, 0x0a, 0x0d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x73, 0x22, 0x52, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x63, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 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, 0x22, 0xe0, 0x05, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 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, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0b, 0x76, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x32, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, + 0x69, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, + 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, + 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x4b, 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, + 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, + 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x61, + 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, + 0x63, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x22, 0xdf, + 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, + 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, + 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x17, 0x61, 0x75, 0x74, + 0x6f, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, + 0x22, 0xa5, 0x02, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 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, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, - 0x75, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xa3, - 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, - 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, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x22, 0xd4, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, - 0x63, 0x73, 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, 0x21, 0x0a, 0x0c, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, - 0x12, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x0d, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 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, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 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, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 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, 0x05, 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, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, - 0x45, 0x63, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x65, 0x63, 0x73, - 0x65, 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, 0x3e, 0x0a, 0x07, 0x4c, 0x69, - 0x73, 0x74, 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, 0x34, 0x0a, 0x08, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x63, - 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, - 0x22, 0x0c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x2a, 0x3a, - 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x42, 0x79, 0x42, 0x61, 0x6e, - 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x42, - 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x10, 0x01, 0x32, 0xeb, 0x03, 0x0a, 0x0a, 0x45, - 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, - 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x53, - 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x12, 0x13, 0x2e, 0x70, 0x62, - 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, - 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, - 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x3a, 0x01, 0x2a, 0x12, 0x53, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, - 0x12, 0x13, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x15, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x63, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, - 0x15, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, - 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x3d, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x12, 0x0e, 0x2e, 0x70, 0x62, - 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, - 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x12, - 0x47, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x41, 0x6c, 0x6c, 0x12, 0x11, 0x2e, - 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, - 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x61, 0x6c, 0x6c, 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, 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 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, 0x17, + 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x35, 0x0a, + 0x16, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x70, + 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 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, 0x1d, 0x0a, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd4, 0x02, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 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, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, + 0x52, 0x65, 0x73, 0x70, 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, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 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, + 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, + 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, 0x05, 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, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x28, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x63, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x05, 0x65, 0x63, 0x73, 0x65, 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, 0x3e, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 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, 0x34, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, + 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, + 0x62, 0x65, 0x63, 0x73, 0x2e, 0x45, 0x63, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, 0x22, 0x0c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x2a, 0x3a, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x50, + 0x61, 0x79, 0x42, 0x79, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x42, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x10, + 0x01, 0x32, 0xe0, 0x04, 0x0a, 0x0a, 0x45, 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x73, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x45, 0x63, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x63, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x65, 0x63, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x53, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, + 0x63, 0x73, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, + 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x53, 0x0a, 0x09, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, + 0x62, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0x53, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x12, 0x13, 0x2e, 0x70, + 0x62, 0x65, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x1a, + 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, + 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x3d, 0x0a, 0x07, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, + 0x12, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x41, 0x6c, 0x6c, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x65, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, + 0x62, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, + 0x2f, 0x61, 0x6c, 0x6c, 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, + 0x65, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1668,55 +1802,60 @@ func file_idl_pbecs_ecs_proto_rawDescGZIP() []byte { } var file_idl_pbecs_ecs_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_idl_pbecs_ecs_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_idl_pbecs_ecs_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_idl_pbecs_ecs_proto_goTypes = []interface{}{ - (InternetChargeType)(0), // 0: pbecs.InternetChargeType - (*EcsInstance)(nil), // 1: pbecs.EcsInstance - (*CreateEcsReq)(nil), // 2: pbecs.CreateEcsReq - (*SystemDisk)(nil), // 3: pbecs.SystemDisk - (*CreateEcsResp)(nil), // 4: pbecs.CreateEcsResp - (*DeleteEcsReq)(nil), // 5: pbecs.DeleteEcsReq - (*DeleteEcsResp)(nil), // 6: pbecs.DeleteEcsResp - (*UpdateEcsReq)(nil), // 7: pbecs.UpdateEcsReq - (*UpdateEcsResp)(nil), // 8: pbecs.UpdateEcsResp - (*ListDetailReq)(nil), // 9: pbecs.ListDetailReq - (*ListDetailResp)(nil), // 10: pbecs.ListDetailResp - (*ListReq)(nil), // 11: pbecs.ListReq - (*ListResp)(nil), // 12: pbecs.ListResp - (*ListAllReq)(nil), // 13: pbecs.ListAllReq - (pbtenant.CloudProvider)(0), // 14: pbtenant.CloudProvider + (InternetChargeType)(0), // 0: pbecs.InternetChargeType + (*EcsInstance)(nil), // 1: pbecs.EcsInstance + (*CreateEcsMultipleReq)(nil), // 2: pbecs.CreateEcsMultipleReq + (*CreateEcsMultipleResp)(nil), // 3: pbecs.CreateEcsMultipleResp + (*CreateEcsReq)(nil), // 4: pbecs.CreateEcsReq + (*SystemDisk)(nil), // 5: pbecs.SystemDisk + (*CreateEcsResp)(nil), // 6: pbecs.CreateEcsResp + (*DeleteEcsReq)(nil), // 7: pbecs.DeleteEcsReq + (*DeleteEcsResp)(nil), // 8: pbecs.DeleteEcsResp + (*UpdateEcsReq)(nil), // 9: pbecs.UpdateEcsReq + (*UpdateEcsResp)(nil), // 10: pbecs.UpdateEcsResp + (*ListDetailReq)(nil), // 11: pbecs.ListDetailReq + (*ListDetailResp)(nil), // 12: pbecs.ListDetailResp + (*ListReq)(nil), // 13: pbecs.ListReq + (*ListResp)(nil), // 14: pbecs.ListResp + (*ListAllReq)(nil), // 15: pbecs.ListAllReq + (pbtenant.CloudProvider)(0), // 16: pbtenant.CloudProvider } var file_idl_pbecs_ecs_proto_depIdxs = []int32{ - 14, // 0: pbecs.EcsInstance.provider:type_name -> pbtenant.CloudProvider - 14, // 1: pbecs.CreateEcsReq.provider:type_name -> pbtenant.CloudProvider - 3, // 2: pbecs.CreateEcsReq.system_disk:type_name -> pbecs.SystemDisk - 0, // 3: pbecs.CreateEcsReq.internet_charge_type:type_name -> pbecs.InternetChargeType - 14, // 4: pbecs.CreateEcsResp.provider:type_name -> pbtenant.CloudProvider - 14, // 5: pbecs.DeleteEcsReq.provider:type_name -> pbtenant.CloudProvider - 14, // 6: pbecs.DeleteEcsResp.provider:type_name -> pbtenant.CloudProvider - 14, // 7: pbecs.UpdateEcsReq.provider:type_name -> pbtenant.CloudProvider - 14, // 8: pbecs.UpdateEcsResp.provider:type_name -> pbtenant.CloudProvider - 14, // 9: pbecs.ListDetailReq.provider:type_name -> pbtenant.CloudProvider - 1, // 10: pbecs.ListDetailResp.ecses:type_name -> pbecs.EcsInstance - 14, // 11: pbecs.ListReq.provider:type_name -> pbtenant.CloudProvider - 1, // 12: pbecs.ListResp.ecses:type_name -> pbecs.EcsInstance - 2, // 13: pbecs.EcsService.CreateEcs:input_type -> pbecs.CreateEcsReq - 5, // 14: pbecs.EcsService.DeleteEcs:input_type -> pbecs.DeleteEcsReq - 7, // 15: pbecs.EcsService.UpdateEcs:input_type -> pbecs.UpdateEcsReq - 9, // 16: pbecs.EcsService.ListEcsDetail:input_type -> pbecs.ListDetailReq - 11, // 17: pbecs.EcsService.ListEcs:input_type -> pbecs.ListReq - 13, // 18: pbecs.EcsService.ListEcsAll:input_type -> pbecs.ListAllReq - 4, // 19: pbecs.EcsService.CreateEcs:output_type -> pbecs.CreateEcsResp - 6, // 20: pbecs.EcsService.DeleteEcs:output_type -> pbecs.DeleteEcsResp - 8, // 21: pbecs.EcsService.UpdateEcs:output_type -> pbecs.UpdateEcsResp - 10, // 22: pbecs.EcsService.ListEcsDetail:output_type -> pbecs.ListDetailResp - 12, // 23: pbecs.EcsService.ListEcs:output_type -> pbecs.ListResp - 12, // 24: pbecs.EcsService.ListEcsAll:output_type -> pbecs.ListResp - 19, // [19:25] is the sub-list for method output_type - 13, // [13:19] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 16, // 0: pbecs.EcsInstance.provider:type_name -> pbtenant.CloudProvider + 4, // 1: pbecs.CreateEcsMultipleReq.createEcsReqs:type_name -> pbecs.CreateEcsReq + 16, // 2: pbecs.CreateEcsReq.provider:type_name -> pbtenant.CloudProvider + 5, // 3: pbecs.CreateEcsReq.system_disk:type_name -> pbecs.SystemDisk + 0, // 4: pbecs.CreateEcsReq.internet_charge_type:type_name -> pbecs.InternetChargeType + 16, // 5: pbecs.CreateEcsResp.provider:type_name -> pbtenant.CloudProvider + 16, // 6: pbecs.DeleteEcsReq.provider:type_name -> pbtenant.CloudProvider + 16, // 7: pbecs.DeleteEcsResp.provider:type_name -> pbtenant.CloudProvider + 16, // 8: pbecs.UpdateEcsReq.provider:type_name -> pbtenant.CloudProvider + 16, // 9: pbecs.UpdateEcsResp.provider:type_name -> pbtenant.CloudProvider + 16, // 10: pbecs.ListDetailReq.provider:type_name -> pbtenant.CloudProvider + 1, // 11: pbecs.ListDetailResp.ecses:type_name -> pbecs.EcsInstance + 16, // 12: pbecs.ListReq.provider:type_name -> pbtenant.CloudProvider + 1, // 13: pbecs.ListResp.ecses:type_name -> pbecs.EcsInstance + 2, // 14: pbecs.EcsService.CreateMultipleEcs:input_type -> pbecs.CreateEcsMultipleReq + 4, // 15: pbecs.EcsService.CreateEcs:input_type -> pbecs.CreateEcsReq + 7, // 16: pbecs.EcsService.DeleteEcs:input_type -> pbecs.DeleteEcsReq + 9, // 17: pbecs.EcsService.UpdateEcs:input_type -> pbecs.UpdateEcsReq + 11, // 18: pbecs.EcsService.ListEcsDetail:input_type -> pbecs.ListDetailReq + 13, // 19: pbecs.EcsService.ListEcs:input_type -> pbecs.ListReq + 15, // 20: pbecs.EcsService.ListEcsAll:input_type -> pbecs.ListAllReq + 3, // 21: pbecs.EcsService.CreateMultipleEcs:output_type -> pbecs.CreateEcsMultipleResp + 6, // 22: pbecs.EcsService.CreateEcs:output_type -> pbecs.CreateEcsResp + 8, // 23: pbecs.EcsService.DeleteEcs:output_type -> pbecs.DeleteEcsResp + 10, // 24: pbecs.EcsService.UpdateEcs:output_type -> pbecs.UpdateEcsResp + 12, // 25: pbecs.EcsService.ListEcsDetail:output_type -> pbecs.ListDetailResp + 14, // 26: pbecs.EcsService.ListEcs:output_type -> pbecs.ListResp + 14, // 27: pbecs.EcsService.ListEcsAll:output_type -> pbecs.ListResp + 21, // [21:28] is the sub-list for method output_type + 14, // [14:21] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_idl_pbecs_ecs_proto_init() } @@ -1738,7 +1877,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateEcsReq); i { + switch v := v.(*CreateEcsMultipleReq); i { case 0: return &v.state case 1: @@ -1750,7 +1889,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemDisk); i { + switch v := v.(*CreateEcsMultipleResp); i { case 0: return &v.state case 1: @@ -1762,7 +1901,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateEcsResp); i { + switch v := v.(*CreateEcsReq); i { case 0: return &v.state case 1: @@ -1774,7 +1913,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteEcsReq); i { + switch v := v.(*SystemDisk); i { case 0: return &v.state case 1: @@ -1786,7 +1925,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteEcsResp); i { + switch v := v.(*CreateEcsResp); i { case 0: return &v.state case 1: @@ -1798,7 +1937,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateEcsReq); i { + switch v := v.(*DeleteEcsReq); i { case 0: return &v.state case 1: @@ -1810,7 +1949,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateEcsResp); i { + switch v := v.(*DeleteEcsResp); i { case 0: return &v.state case 1: @@ -1822,7 +1961,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDetailReq); i { + switch v := v.(*UpdateEcsReq); i { case 0: return &v.state case 1: @@ -1834,7 +1973,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDetailResp); i { + switch v := v.(*UpdateEcsResp); i { case 0: return &v.state case 1: @@ -1846,7 +1985,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReq); i { + switch v := v.(*ListDetailReq); i { case 0: return &v.state case 1: @@ -1858,7 +1997,7 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListResp); i { + switch v := v.(*ListDetailResp); i { case 0: return &v.state case 1: @@ -1870,6 +2009,30 @@ func file_idl_pbecs_ecs_proto_init() { } } file_idl_pbecs_ecs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_idl_pbecs_ecs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_idl_pbecs_ecs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllReq); i { case 0: return &v.state @@ -1888,7 +2051,7 @@ func file_idl_pbecs_ecs_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_idl_pbecs_ecs_proto_rawDesc, NumEnums: 1, - NumMessages: 13, + NumMessages: 15, NumExtensions: 0, NumServices: 1, }, diff --git a/lan_trans/idl/pbecs/ecs.pb.gw.go b/lan_trans/idl/pbecs/ecs.pb.gw.go index 3078b76c..20ef7d4f 100644 --- a/lan_trans/idl/pbecs/ecs.pb.gw.go +++ b/lan_trans/idl/pbecs/ecs.pb.gw.go @@ -31,6 +31,40 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join +func request_EcsService_CreateMultipleEcs_0(ctx context.Context, marshaler runtime.Marshaler, client EcsServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateEcsMultipleReq + 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.CreateMultipleEcs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EcsService_CreateMultipleEcs_0(ctx context.Context, marshaler runtime.Marshaler, server EcsServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateEcsMultipleReq + 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.CreateMultipleEcs(ctx, &protoReq) + return msg, metadata, err + +} + func request_EcsService_CreateEcs_0(ctx context.Context, marshaler runtime.Marshaler, client EcsServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq CreateEcsReq var metadata runtime.ServerMetadata @@ -229,6 +263,29 @@ func local_request_EcsService_ListEcsAll_0(ctx context.Context, marshaler runtim // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterEcsServiceHandlerFromEndpoint instead. func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server EcsServiceServer) error { + mux.Handle("POST", pattern_EcsService_CreateMultipleEcs_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) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/CreateMultipleEcs") + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EcsService_CreateMultipleEcs_0(rctx, 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_EcsService_CreateMultipleEcs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_EcsService_CreateEcs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -408,6 +465,26 @@ func RegisterEcsServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn // "EcsServiceClient" to call the correct interceptors. func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client EcsServiceClient) error { + mux.Handle("POST", pattern_EcsService_CreateMultipleEcs_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) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/CreateMultipleEcs") + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EcsService_CreateMultipleEcs_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_EcsService_CreateMultipleEcs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_EcsService_CreateEcs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -532,6 +609,8 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, } var ( + pattern_EcsService_CreateMultipleEcs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "ecs", "createMultiple"}, "")) + pattern_EcsService_CreateEcs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "ecs", "create"}, "")) pattern_EcsService_DeleteEcs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "ecs", "delete"}, "")) @@ -546,6 +625,8 @@ var ( ) var ( + forward_EcsService_CreateMultipleEcs_0 = runtime.ForwardResponseMessage + forward_EcsService_CreateEcs_0 = runtime.ForwardResponseMessage forward_EcsService_DeleteEcs_0 = runtime.ForwardResponseMessage diff --git a/lan_trans/idl/pbecs/ecs_grpc.pb.go b/lan_trans/idl/pbecs/ecs_grpc.pb.go index ccae9cd1..847975fb 100644 --- a/lan_trans/idl/pbecs/ecs_grpc.pb.go +++ b/lan_trans/idl/pbecs/ecs_grpc.pb.go @@ -22,6 +22,8 @@ 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 EcsServiceClient interface { + // 创建多家云ECS + CreateMultipleEcs(ctx context.Context, in *CreateEcsMultipleReq, opts ...grpc.CallOption) (*CreateEcsMultipleResp, error) // 创建ECS CreateEcs(ctx context.Context, in *CreateEcsReq, opts ...grpc.CallOption) (*CreateEcsResp, error) // 删除ECS @@ -44,6 +46,15 @@ func NewEcsServiceClient(cc grpc.ClientConnInterface) EcsServiceClient { return &ecsServiceClient{cc} } +func (c *ecsServiceClient) CreateMultipleEcs(ctx context.Context, in *CreateEcsMultipleReq, opts ...grpc.CallOption) (*CreateEcsMultipleResp, error) { + out := new(CreateEcsMultipleResp) + err := c.cc.Invoke(ctx, "/pbecs.EcsService/CreateMultipleEcs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *ecsServiceClient) CreateEcs(ctx context.Context, in *CreateEcsReq, opts ...grpc.CallOption) (*CreateEcsResp, error) { out := new(CreateEcsResp) err := c.cc.Invoke(ctx, "/pbecs.EcsService/CreateEcs", in, out, opts...) @@ -102,6 +113,8 @@ func (c *ecsServiceClient) ListEcsAll(ctx context.Context, in *ListAllReq, opts // All implementations must embed UnimplementedEcsServiceServer // for forward compatibility type EcsServiceServer interface { + // 创建多家云ECS + CreateMultipleEcs(context.Context, *CreateEcsMultipleReq) (*CreateEcsMultipleResp, error) // 创建ECS CreateEcs(context.Context, *CreateEcsReq) (*CreateEcsResp, error) // 删除ECS @@ -121,6 +134,9 @@ type EcsServiceServer interface { type UnimplementedEcsServiceServer struct { } +func (UnimplementedEcsServiceServer) CreateMultipleEcs(context.Context, *CreateEcsMultipleReq) (*CreateEcsMultipleResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateMultipleEcs not implemented") +} func (UnimplementedEcsServiceServer) CreateEcs(context.Context, *CreateEcsReq) (*CreateEcsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateEcs not implemented") } @@ -152,6 +168,24 @@ func RegisterEcsServiceServer(s grpc.ServiceRegistrar, srv EcsServiceServer) { s.RegisterService(&EcsService_ServiceDesc, srv) } +func _EcsService_CreateMultipleEcs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateEcsMultipleReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EcsServiceServer).CreateMultipleEcs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pbecs.EcsService/CreateMultipleEcs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EcsServiceServer).CreateMultipleEcs(ctx, req.(*CreateEcsMultipleReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EcsService_CreateEcs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateEcsReq) if err := dec(in); err != nil { @@ -267,6 +301,10 @@ var EcsService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "pbecs.EcsService", HandlerType: (*EcsServiceServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "CreateMultipleEcs", + Handler: _EcsService_CreateMultipleEcs_Handler, + }, { MethodName: "CreateEcs", Handler: _EcsService_CreateEcs_Handler, diff --git a/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json b/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json index 1b1965b9..4d80323c 100644 --- a/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json +++ b/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json @@ -111,6 +111,39 @@ ] } }, + "/apis/ecs/createMultiple": { + "post": { + "summary": "创建多家云ECS", + "operationId": "EcsService_CreateMultipleEcs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/pbecsCreateEcsMultipleResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/pbecsCreateEcsMultipleReq" + } + } + ], + "tags": [ + "EcsService" + ] + } + }, "/apis/ecs/delete": { "post": { "summary": "删除ECS", @@ -256,6 +289,35 @@ } }, "definitions": { + "pbecsCreateEcsMultipleReq": { + "type": "object", + "properties": { + "createEcsReqs": { + "type": "array", + "items": { + "$ref": "#/definitions/pbecsCreateEcsReq" + } + } + }, + "title": "创建多家云ECS入参" + }, + "pbecsCreateEcsMultipleResp": { + "type": "object", + "properties": { + "requestId": { + "type": "array", + "items": { + "type": "string" + }, + "title": "请求ID" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + } + }, + "title": "创建多家云ECS返回值" + }, "pbecsCreateEcsReq": { "type": "object", "properties": { @@ -338,7 +400,8 @@ "type": "string", "title": "待创建云服务器所在的子网信息。需要指定vpcid对应VPC下已创建的子网(subnet)的网络ID,UUID格式。华为云必需" } - } + }, + "title": "创建ECS入参" }, "pbecsCreateEcsResp": { "type": "object", @@ -380,7 +443,8 @@ "type": "boolean", "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" } - } + }, + "title": "创建ECS返回值" }, "pbecsDeleteEcsReq": { "type": "object", @@ -422,7 +486,8 @@ "type": "string", "title": "配置删除云服务器是否删除云服务器对应的数据盘,如果选择不删除,则系统仅做卸载操作,保留云硬盘资源。默认为false。\n取值为true或false。默认false;华为云" } - } + }, + "title": "删除ECS入参" }, "pbecsDeleteEcsResp": { "type": "object", @@ -444,7 +509,8 @@ "type": "string", "title": "请求ID" } - } + }, + "title": "删除ECS返回值" }, "pbecsEcsInstance": { "type": "object", @@ -525,7 +591,8 @@ "type": "string", "title": "收费类型" } - } + }, + "title": "ECS 实例" }, "pbecsInternetChargeType": { "type": "string", @@ -569,7 +636,8 @@ "type": "string", "title": "请求id,出现问题后提供给云厂商,排查问题" } - } + }, + "title": "查询ECS返回值" }, "pbecsListResp": { "type": "object", @@ -610,7 +678,8 @@ "type": "string", "title": "系统盘采用的自动快照策略ID。" } - } + }, + "title": "系统磁盘" }, "pbecsUpdateEcsReq": { "type": "object", @@ -652,7 +721,8 @@ "type": "string", "title": "实例重新加入的安全组列表,安全组ID不能重复。以”,“分割" } - } + }, + "title": "更新ECS入参" }, "pbecsUpdateEcsResp": { "type": "object", @@ -674,7 +744,8 @@ "type": "string", "title": "请求ID" } - } + }, + "title": "更新ECS返回值" }, "pbtenantCloudProvider": { "type": "string",