From 7764bd30991a579004dfe5cb88801d420ad149ea Mon Sep 17 00:00:00 2001 From: devad Date: Fri, 21 Oct 2022 19:17:45 +0800 Subject: [PATCH] feat:grpc-gateway refactor Signed-off-by: devad --- README.md | 6 + buf.gen.yaml | 24 - common/config/init.go | 34 + common/global/globalVar.go | 10 + common/model/config.go | 87 ++ common/server/grpc.go | 34 + common/server/server.go | 21 - common/tenanter/main_test.go | 2 +- common/tenanter/region.go | 3 +- common/tenanter/region_test.go | 3 +- common/tenanter/tenanter.go | 5 +- config-test.yaml | 62 + examples/pod/pcm_ali.go | 2 +- examples/pod/pcm_huawei.go | 4 +- examples/pod/pcm_tencent.go | 2 +- examples/slurm/submit_example/submit_job.go | 32 +- gateway/main.go | 65 + gen.sh | 18 +- go.mod | 14 +- idl/demo/demo.proto | 35 - lan_trans/idl/demo/demo.pb.go | 213 --- lan_trans/idl/demo/demo.pb.gw.go | 169 --- lan_trans/idl/demo/demo_grpc.pb.go | 107 -- .../openapiv2/idl/demo/demo.swagger.json | 96 -- .../openapiv2/idl/pbecs/ecs.swagger.json | 1013 -------------- .../openapiv2/idl/pbpod/pod.swagger.json | 741 ----------- pod/buf.gen.yaml | 17 + buf.yaml => pod/buf.yaml | 0 .../idl/pbpod => pod/gen/idl}/pod.pb.go | 888 +++++++------ .../idl/pbpod => pod/gen/idl}/pod.pb.gw.go | 78 +- .../idl/pbpod => pod/gen/idl}/pod_grpc.pb.go | 36 +- pod/gen/openapiv2/idl/pod.swagger.json | 321 +++++ {idl/pbpod => pod/idl}/pod.proto | 88 +- pod/idl/pod.yaml | 23 + pod/main.go | 57 + {adaptor/pcm_pod => pod}/server/ali/client.go | 0 .../server/ali/create_container_group.go | 12 +- .../server/ali/delete_container_group.go | 9 +- .../server/ali/describe_container_groups.go | 7 +- .../server/ali/update_container_group.go | 9 +- .../kubernetes/api/core/v1/objectreference.go | 0 .../server/kubernetes/api/core/v1/register.go | 0 .../server/kubernetes/api/core/v1/resource.go | 0 .../server/kubernetes/api/core/v1/types.go | 0 .../api/core/v1/zz_generated.deepcopy.go | 0 .../pkg/apis/meta/v1/micro_time.go | 0 .../apimachinery/pkg/apis/meta/v1/time.go | 0 .../apimachinery/pkg/apis/meta/v1/types.go | 30 +- .../client-go/kubernetes/clientset.go | 2 +- .../kubernetes/typed/core/v1/core_client.go | 0 .../client-go/kubernetes/typed/core/v1/pod.go | 26 +- .../kubernetes/typed/core/v1/pod_expansion.go | 0 .../server/server_pod.go => pod/server/pod.go | 24 +- .../server/pod.go => pod/server/podImpl.go | 50 +- .../pcm_pod => pod}/server/tencent/client.go | 13 +- .../pcm_pod => pod}/server/tencent/errors.go | 0 .../pcm_pod => pod}/server/tencent/models.go | 0 {adaptor/pcm_pod => pod}/service/ali_eci.go | 9 +- .../pcm_pod => pod}/service/huawei_cci.go | 12 +- {adaptor/pcm_pod => pod}/service/k8s.go | 9 +- {adaptor/pcm_pod => pod}/service/poder.go | 13 +- .../pcm_pod => pod}/service/tencent_eks.go | 10 +- slurm/buf.gen.yaml | 17 + slurm/buf.yaml | 13 + .../cgo/example/extra/cancel_job.go | 0 .../cgo/example/extra/get_job_account_info.go | 0 .../cgo/example/get_all_jobs.go | 2 +- .../cgo/example/get_all_nodes.go | 2 +- .../cgo/example/get_info.go | 2 +- .../cgo/example/get_job_by_id.go | 4 +- .../cgo/example/get_node_info.go | 2 +- .../cgo/example/get_partitions.go | 2 +- .../cgo/example/get_user_jobs.go | 4 +- .../cgo/example/submit_example/Readme.md | 0 .../example/submit_example/mpi_container.def | 0 .../cgo/example/submit_example/mpi_pingpong.c | 0 .../submit_example/openmp_container.def | 0 .../example/submit_example/openmp_example.c | 0 .../cgo/example/submit_example/submit_job.go | 4 +- .../submit_example/submit_mpi_and_update.go | 6 +- .../submit_example/submit_mpi_containier.go | 0 .../submit_example/submit_openmp_container.go | 0 .../cgo/example/submit_example/update_job.go | 4 +- .../cgo/src/slurm/extra/slurm_extra.go | 1 - .../cgo/src/slurm/jobinfo/slurm_job_info.go | 0 .../cgo/src/slurm/nodeinfo/slurm_node_info.go | 0 .../partitioninfo/slurm_partition_info.go | 0 .../cgo/src/slurm/slurm.go | 0 .../src/slurm/submitjob/slurm_submit_job.go | 2 +- .../cgo/src/slurm/submitjob/submit_job.go | 0 slurm/gen/idl/slurm.pb.go | 256 ++++ slurm/gen/idl/slurm.pb.gw.go | 151 +++ slurm/gen/idl/slurm_grpc.pb.go | 107 ++ slurm/gen/openapiv2/idl/slurm.swagger.json | 79 ++ {idl/pbslurm => slurm/idl}/slurm.proto | 11 +- slurm/idl/slurm.yaml | 7 + .../pcm_slurm => slurm}/rest/get_nodes.go | 0 tenant/buf.gen.yaml | 16 + tenant/buf.yaml | 13 + .../pbtenant => tenant/gen/idl}/tenant.pb.go | 454 ++++--- .../gen/idl}/tenant_grpc.pb.go | 8 +- .../gen/openapiv2/idl}/tenant.swagger.json | 11 +- {idl/pbtenant => tenant/idl}/tenant.proto | 4 +- vm/buf.gen.yaml | 17 + vm/buf.yaml | 13 + {lan_trans/idl/pbecs => vm/gen/idl}/ecs.pb.go | 1169 +++++++++-------- .../idl/pbecs => vm/gen/idl}/ecs.pb.gw.go | 86 +- .../idl/pbecs => vm/gen/idl}/ecs_grpc.pb.go | 40 +- vm/gen/openapiv2/idl/ecs.swagger.json | 546 ++++++++ {idl/pbecs => vm/idl}/ecs.proto | 94 +- vm/idl/ecs.yaml | 26 + vm/main.go | 56 + .../server/server_ecs.go => vm/server/ecs.go | 25 +- .../ecs/list.go => vm/server/ecsImpl.go | 40 +- .../list_test.go => vm/server/ecsImpl_test.go | 20 +- .../server/ecs => vm/server}/main_test.go | 13 +- .../service/ecser => vm/service}/ali.go | 7 +- .../service/ecser => vm/service}/aws.go | 2 +- .../service/ecser => vm/service}/ecser.go | 16 +- .../ecser => vm/service}/ecser_test.go | 16 +- .../service/ecser => vm/service}/google.go | 2 +- .../service/ecser => vm/service}/harvester.go | 25 +- .../ecser => vm/service}/harvester_util.go | 4 +- .../service/ecser => vm/service}/huawei.go | 7 +- .../service/ecser => vm/service}/main_test.go | 11 +- .../service/ecser => vm/service}/tencent.go | 7 +- 126 files changed, 3844 insertions(+), 4125 deletions(-) delete mode 100644 buf.gen.yaml create mode 100644 common/config/init.go create mode 100644 common/global/globalVar.go create mode 100644 common/model/config.go create mode 100644 common/server/grpc.go delete mode 100644 common/server/server.go create mode 100644 config-test.yaml create mode 100644 gateway/main.go delete mode 100644 idl/demo/demo.proto delete mode 100644 lan_trans/idl/demo/demo.pb.go delete mode 100644 lan_trans/idl/demo/demo.pb.gw.go delete mode 100644 lan_trans/idl/demo/demo_grpc.pb.go delete mode 100644 lan_trans/openapiv2/idl/demo/demo.swagger.json delete mode 100644 lan_trans/openapiv2/idl/pbecs/ecs.swagger.json delete mode 100644 lan_trans/openapiv2/idl/pbpod/pod.swagger.json create mode 100644 pod/buf.gen.yaml rename buf.yaml => pod/buf.yaml (100%) rename {lan_trans/idl/pbpod => pod/gen/idl}/pod.pb.go (56%) rename {lan_trans/idl/pbpod => pod/gen/idl}/pod.pb.gw.go (87%) rename {lan_trans/idl/pbpod => pod/gen/idl}/pod_grpc.pb.go (92%) create mode 100644 pod/gen/openapiv2/idl/pod.swagger.json rename {idl/pbpod => pod/idl}/pod.proto (80%) create mode 100644 pod/idl/pod.yaml create mode 100644 pod/main.go rename {adaptor/pcm_pod => pod}/server/ali/client.go (100%) rename {adaptor/pcm_pod => pod}/server/ali/create_container_group.go (98%) rename {adaptor/pcm_pod => pod}/server/ali/delete_container_group.go (94%) rename {adaptor/pcm_pod => pod}/server/ali/describe_container_groups.go (98%) rename {adaptor/pcm_pod => pod}/server/ali/update_container_group.go (98%) rename {adaptor/pcm_pod => pod}/server/kubernetes/api/core/v1/objectreference.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/api/core/v1/register.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/api/core/v1/resource.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/api/core/v1/types.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/api/core/v1/zz_generated.deepcopy.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/apimachinery/pkg/apis/meta/v1/micro_time.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/apimachinery/pkg/apis/meta/v1/time.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go (99%) rename {adaptor/pcm_pod => pod}/server/kubernetes/client-go/kubernetes/clientset.go (99%) rename {adaptor/pcm_pod => pod}/server/kubernetes/client-go/kubernetes/typed/core/v1/core_client.go (100%) rename {adaptor/pcm_pod => pod}/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go (96%) rename {adaptor/pcm_pod => pod}/server/kubernetes/client-go/kubernetes/typed/core/v1/pod_expansion.go (100%) rename common/server/server_pod.go => pod/server/pod.go (83%) rename adaptor/pcm_pod/server/pod.go => pod/server/podImpl.go (82%) rename {adaptor/pcm_pod => pod}/server/tencent/client.go (99%) rename {adaptor/pcm_pod => pod}/server/tencent/errors.go (100%) rename {adaptor/pcm_pod => pod}/server/tencent/models.go (100%) rename {adaptor/pcm_pod => pod}/service/ali_eci.go (96%) rename {adaptor/pcm_pod => pod}/service/huawei_cci.go (96%) rename {adaptor/pcm_pod => pod}/service/k8s.go (96%) rename {adaptor/pcm_pod => pod}/service/poder.go (77%) rename {adaptor/pcm_pod => pod}/service/tencent_eks.go (96%) create mode 100644 slurm/buf.gen.yaml create mode 100644 slurm/buf.yaml rename {adaptor/pcm_slurm => slurm}/cgo/example/extra/cancel_job.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/extra/get_job_account_info.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_all_jobs.go (88%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_all_nodes.go (93%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_info.go (78%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_job_by_id.go (86%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_node_info.go (94%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_partitions.go (84%) rename {adaptor/pcm_slurm => slurm}/cgo/example/get_user_jobs.go (84%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/Readme.md (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/mpi_container.def (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/mpi_pingpong.c (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/openmp_container.def (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/openmp_example.c (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/submit_job.go (85%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/submit_mpi_and_update.go (92%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/submit_mpi_containier.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/submit_openmp_container.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/example/submit_example/update_job.go (76%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/extra/slurm_extra.go (99%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/jobinfo/slurm_job_info.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/nodeinfo/slurm_node_info.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/partitioninfo/slurm_partition_info.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/slurm.go (100%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/submitjob/slurm_submit_job.go (99%) rename {adaptor/pcm_slurm => slurm}/cgo/src/slurm/submitjob/submit_job.go (100%) create mode 100644 slurm/gen/idl/slurm.pb.go create mode 100644 slurm/gen/idl/slurm.pb.gw.go create mode 100644 slurm/gen/idl/slurm_grpc.pb.go create mode 100644 slurm/gen/openapiv2/idl/slurm.swagger.json rename {idl/pbslurm => slurm/idl}/slurm.proto (59%) create mode 100644 slurm/idl/slurm.yaml rename {adaptor/pcm_slurm => slurm}/rest/get_nodes.go (100%) create mode 100644 tenant/buf.gen.yaml create mode 100644 tenant/buf.yaml rename {lan_trans/idl/pbtenant => tenant/gen/idl}/tenant.pb.go (55%) rename {lan_trans/idl/pbtenant => tenant/gen/idl}/tenant_grpc.pb.go (94%) rename {lan_trans/openapiv2/idl/pbtenant => tenant/gen/openapiv2/idl}/tenant.swagger.json (82%) rename {idl/pbtenant => tenant/idl}/tenant.proto (98%) create mode 100644 vm/buf.gen.yaml create mode 100644 vm/buf.yaml rename {lan_trans/idl/pbecs => vm/gen/idl}/ecs.pb.go (55%) rename {lan_trans/idl/pbecs => vm/gen/idl}/ecs.pb.gw.go (87%) rename {lan_trans/idl/pbecs => vm/gen/idl}/ecs_grpc.pb.go (92%) create mode 100644 vm/gen/openapiv2/idl/ecs.swagger.json rename {idl/pbecs => vm/idl}/ecs.proto (87%) create mode 100644 vm/idl/ecs.yaml create mode 100644 vm/main.go rename common/server/server_ecs.go => vm/server/ecs.go (84%) rename adaptor/pcm_vm/server/ecs/list.go => vm/server/ecsImpl.go (80%) rename adaptor/pcm_vm/server/ecs/list_test.go => vm/server/ecsImpl_test.go (61%) rename {adaptor/pcm_vm/server/ecs => vm/server}/main_test.go (69%) rename {adaptor/pcm_vm/service/ecser => vm/service}/ali.go (97%) rename {adaptor/pcm_vm/service/ecser => vm/service}/aws.go (99%) rename {adaptor/pcm_vm/service/ecser => vm/service}/ecser.go (76%) rename {adaptor/pcm_vm/service/ecser => vm/service}/ecser_test.go (76%) rename {adaptor/pcm_vm/service/ecser => vm/service}/google.go (99%) rename {adaptor/pcm_vm/service/ecser => vm/service}/harvester.go (95%) rename {adaptor/pcm_vm/service/ecser => vm/service}/harvester_util.go (99%) rename {adaptor/pcm_vm/service/ecser => vm/service}/huawei.go (97%) rename {adaptor/pcm_vm/service/ecser => vm/service}/main_test.go (69%) rename {adaptor/pcm_vm/service/ecser => vm/service}/tencent.go (97%) diff --git a/README.md b/README.md index cb9958f5..69e4e03d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # PCM +## protobuf 编译流程 +```shell + sh gen.sh +``` + +protobuf生成的文件在lan_trans下 \ No newline at end of file diff --git a/buf.gen.yaml b/buf.gen.yaml deleted file mode 100644 index fda95a3c..00000000 --- a/buf.gen.yaml +++ /dev/null @@ -1,24 +0,0 @@ -version: v1 -plugins: - - name: go - out: lan_trans - opt: - - paths=source_relative - # - name: java - # out: lan_trans - # opt: - # - paths=source_relative - - name: go-grpc - out: lan_trans - opt: - - paths=source_relative - # - name: java-grpc - # out: gen - # opt: - # - paths=source_relative - - name: grpc-gateway - out: lan_trans - opt: - - paths=source_relative - - name: openapiv2 - out: lan_trans/openapiv2 \ No newline at end of file diff --git a/common/config/init.go b/common/config/init.go new file mode 100644 index 00000000..bbba786b --- /dev/null +++ b/common/config/init.go @@ -0,0 +1,34 @@ +package config + +import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/global" + "code.gitlink.org.cn/JCCE/PCM.git/common/model" + "github.com/fsnotify/fsnotify" + "github.com/spf13/viper" + "log" +) + +func InitConfig() { + // 实例化viper + v := viper.New() + //文件的路径如何设置 + v.SetConfigFile("./config-test.yaml") + err := v.ReadInConfig() + if err != nil { + log.Println(err) + } + serverConfig := model.ServerConfig{} + //给serverConfig初始值 + err = v.Unmarshal(&serverConfig) + if err != nil { + log.Println(err) + } + // 传递给全局变量 + global.S = serverConfig + + //热重载配置 + v.OnConfigChange(func(e fsnotify.Event) { + log.Printf("config file:%s Op:%s\n", e.Name, e.Op) + }) + v.WatchConfig() +} diff --git a/common/global/globalVar.go b/common/global/globalVar.go new file mode 100644 index 00000000..d80b26f1 --- /dev/null +++ b/common/global/globalVar.go @@ -0,0 +1,10 @@ +package global + +import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/model" +) + +// S 全局变量 +var ( + S model.ServerConfig +) diff --git a/common/model/config.go b/common/model/config.go new file mode 100644 index 00000000..b93eb0c6 --- /dev/null +++ b/common/model/config.go @@ -0,0 +1,87 @@ +package model + +type ServerConfig struct { + Name string `mapstructure:"name"` + GormInfo GormConfig `mapstructure:"gorm"` + RedisInfo RedisConfig `mapstructure:"redis"` + GatewayInfo GatewayConfig `mapstructure:"gateway"` + SlurmInfo SlurmConfig `mapstructure:"slurm"` + PodInfo PodConfig `mapstructure:"pod"` + VmInfo VmConfig `mapstructure:"vm"` + AliInfo AliConfig `mapstructure:"ali"` + TencentInfo TencentConfig `mapstructure:"tencent"` + HuaweiInfo HuaweiConfig `mapstructure:"huawei"` + K8sInfo K8sPConfig `mapstructure:"k8s"` + HarvesterInfo HarvesterConfig `mapstructure:"harvester"` +} + +type GormConfig struct { + Host string `mapstructure:"host"` + Port int `mapstructure:"port"` + Name string `mapstructure:"name"` + Password string `mapstructure:"password"` + DBName string `mapstructure:"dbName"` +} + +type RedisConfig struct { + Host string `mapstructure:"host"` + Port int `mapstructure:"port"` + Password string `mapstructure:"password"` + DB int `mapstructure:"db"` +} + +type GatewayConfig struct { + Address string `mapstructure:"addr"` +} + +type SlurmConfig struct { + Address string `mapstructure:"addr"` +} + +type PodConfig struct { + Address string `mapstructure:"addr"` +} + +type VmConfig struct { + Address string `mapstructure:"addr"` +} + +type WebSocketConfig struct { + Address string `mapstructure:"addr"` + Username string `mapstructure:"name"` +} + +type AliConfig struct { + provider string `mapstructure:"provider"` + name string `mapstructure:"name"` + accessid string `mapstructure:"accessid"` + accesssecret string `mapstructure:"accesssecret"` +} + +type TencentConfig struct { + provider string `mapstructure:"provider"` + name string `mapstructure:"name"` + accessid string `mapstructure:"accessid"` + accesssecret string `mapstructure:"accesssecret"` +} + +type HuaweiConfig struct { + provider string `mapstructure:"provider"` + name string `mapstructure:"name"` + accessid string `mapstructure:"accessid"` + accesssecret string `mapstructure:"accesssecret"` +} + +type K8sPConfig struct { + provider string `mapstructure:"provider"` + name string `mapstructure:"name"` + url string `mapstructure:"url"` + token string `mapstructure:"token"` +} + +type HarvesterConfig struct { + provider string `mapstructure:"provider"` + name string `mapstructure:"name"` + url string `mapstructure:"url"` + token string `mapstructure:"token"` +} diff --git a/common/server/grpc.go b/common/server/grpc.go new file mode 100644 index 00000000..fb6dddcb --- /dev/null +++ b/common/server/grpc.go @@ -0,0 +1,34 @@ +package server + +import ( + "net" + + "go.uber.org/zap" + "google.golang.org/grpc" +) + +// GRPCConfig 定义一个gRPC服务 +type GRPCConfig struct { + Name string + Addr string + AuthPublicKeyFile string + RegisterFunc func(*grpc.Server) + Logger *zap.Logger +} + +// RunGRPCServer 运行一个gRPC服务 +func RunGRPCServer(c *GRPCConfig) error { + nameField := zap.String("name", c.Name) + lis, err := net.Listen("tcp", c.Addr) + if err != nil { + c.Logger.Fatal("cannot listen", nameField, zap.Error(err)) + } + + var opts []grpc.ServerOption + + s := grpc.NewServer(opts...) + c.RegisterFunc(s) + + c.Logger.Info("server started", nameField, zap.String("addr", c.Addr)) + return s.Serve(lis) +} diff --git a/common/server/server.go b/common/server/server.go deleted file mode 100644 index 9eb5070f..00000000 --- a/common/server/server.go +++ /dev/null @@ -1,21 +0,0 @@ -package server - -import ( - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/demo" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "context" -) - -type Server struct { - // 使用unsafe可以强制让编译器检查是否实现了相关方法 - demo.UnsafeDemoServiceServer - pbecs.UnsafeEcsServiceServer - pbpod.UnsafePodServiceServer -} - -func (s *Server) Echo(ctx context.Context, req *demo.StringMessage) (*demo.StringMessage, error) { - return &demo.StringMessage{ - Value: "Welcome to JCCE PCM", - }, nil -} diff --git a/common/tenanter/main_test.go b/common/tenanter/main_test.go index ee35831a..5ecdf096 100644 --- a/common/tenanter/main_test.go +++ b/common/tenanter/main_test.go @@ -1,7 +1,7 @@ package tenanter import ( - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "os" "testing" ) diff --git a/common/tenanter/region.go b/common/tenanter/region.go index 0cc20aca..1bc2da01 100644 --- a/common/tenanter/region.go +++ b/common/tenanter/region.go @@ -1,10 +1,9 @@ package tenanter import ( + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "strings" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" - "github.com/pkg/errors" ) diff --git a/common/tenanter/region_test.go b/common/tenanter/region_test.go index 78475bb9..d21dd06b 100644 --- a/common/tenanter/region_test.go +++ b/common/tenanter/region_test.go @@ -1,9 +1,8 @@ package tenanter import ( + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "testing" - - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" ) func TestGetAllRegionIds(t *testing.T) { diff --git a/common/tenanter/tenanter.go b/common/tenanter/tenanter.go index f489ee38..cd14d01e 100644 --- a/common/tenanter/tenanter.go +++ b/common/tenanter/tenanter.go @@ -1,11 +1,10 @@ package tenanter import ( - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "encoding/json" "flag" "github.com/golang/glog" - "io/ioutil" "os" "sync" @@ -42,7 +41,7 @@ func LoadCloudConfigs(configFile string) error { } func LoadCloudConfigsFromFile(configFile string) error { - b, err := ioutil.ReadFile(configFile) + b, err := os.ReadFile(configFile) if err != nil { return ErrLoadTenanterFileEmpty } diff --git a/config-test.yaml b/config-test.yaml new file mode 100644 index 00000000..50169333 --- /dev/null +++ b/config-test.yaml @@ -0,0 +1,62 @@ +# settings-dev.yaml +name: "PCM" + +gorm: + name: "root" + host: "localhost" + port: 3306 + password: "123456" + dbName: "space" + +redis: + host: "localhost" + port: 6379 + password: "" + DB: 10 + +mongodb: + host: "localhost" + port: 27017 + dbName: "space" + +gateway: + addr: ":8880" + +slurm: + addr: "localhost:8881" + +pod: + addr: "localhost:8882" + +vm: + addr: "localhost:8883" + +ali: + provider: 0 + name : ali-PCM + accessid: + accesssecret: + +tencent: + provider: 1 + name: "tencent-PCM" + accessid: "" + accesssecret: "" + +huawei: + provider: 2 + name: "huawei-PCM" + accessid: "" + accesssecret: "" + +k8s: + provider: 3 + name: "K8S-PCM" + url: "" + token: "" + +harvester: + provider: 4 + name: "harvester-PCM" + url: "" + token: "" \ No newline at end of file diff --git a/examples/pod/pcm_ali.go b/examples/pod/pcm_ali.go index 64328438..1c68fb19 100644 --- a/examples/pod/pcm_ali.go +++ b/examples/pod/pcm_ali.go @@ -1,7 +1,7 @@ package main import ( - pcm_pod_ali "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/ali" + pcm_pod_ali "code.gitlink.org.cn/JCCE/PCM.git/pod/server/ali" ) /* diff --git a/examples/pod/pcm_huawei.go b/examples/pod/pcm_huawei.go index 3e438fc9..7cd1f9fa 100644 --- a/examples/pod/pcm_huawei.go +++ b/examples/pod/pcm_huawei.go @@ -1,8 +1,8 @@ package main import ( - corev1 "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/kubernetes/api/core/v1" - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes" + corev1 "code.gitlink.org.cn/JCCE/PCM.git/pod/server/kubernetes/api/core/v1" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server/kubernetes/client-go/kubernetes" "context" "fmt" "github.com/pkg/errors" diff --git a/examples/pod/pcm_tencent.go b/examples/pod/pcm_tencent.go index b2a3722b..e7124888 100644 --- a/examples/pod/pcm_tencent.go +++ b/examples/pod/pcm_tencent.go @@ -1,7 +1,7 @@ package main import ( - pcm_pod_tencent "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/tencent" + pcm_pod_tencent "code.gitlink.org.cn/JCCE/PCM.git/pod/server/tencent" "fmt" "strconv" ) diff --git a/examples/slurm/submit_example/submit_job.go b/examples/slurm/submit_example/submit_job.go index 22bc88c9..5f961d95 100644 --- a/examples/slurm/submit_example/submit_job.go +++ b/examples/slurm/submit_example/submit_job.go @@ -1,35 +1,37 @@ package main - -import "slurm/submitjob" -import "slurm" +import ( + submit_job "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/submitjob" + "slurm" +) import "os/user" import "os" import "strconv" import "fmt" -func main(){ - job_desc := submit_job.Job_descriptor{} + +func main() { + job_desc := submit_job.Job_descriptor{} job_desc.Script = "#! /bin/bash\n hostname \n env | grep SLURM " dir, _ := os.Getwd() - user, _:= user.Current() - userid , _ := strconv.Atoi(user.Uid) - job_desc.User_id= uint32(userid) - groupid , _ := strconv.Atoi(user.Gid) + user, _ := user.Current() + userid, _ := strconv.Atoi(user.Uid) + job_desc.User_id = uint32(userid) + groupid, _ := strconv.Atoi(user.Gid) - job_desc.Group_id= uint32(groupid) + job_desc.Group_id = uint32(groupid) job_desc.Name = "test_job" - job_desc.Partition="long" + job_desc.Partition = "long" job_desc.Time_limit = uint32(2) - job_desc.Min_nodes =uint32(1) + job_desc.Min_nodes = uint32(1) job_desc.Std_out = ("./out-%j.txt") job_desc.Std_err = ("./err-%j.txt") job_desc.Work_dir = dir - job_desc.Environment = []string{"SLURM_GO_JOB=TRUE", "SLURM_CONTAINER_JOB=FALSE"} + job_desc.Environment = []string{"SLURM_GO_JOB=TRUE", "SLURM_CONTAINER_JOB=FALSE"} answer := submit_job.Submit_job(&job_desc) - if(answer.Error_code != 0) { + if answer.Error_code != 0 { msg := slurm.GetErrorString(answer.Error_code) - fmt.Printf("Error: %s\n" ,msg) + fmt.Printf("Error: %s\n", msg) return } fmt.Printf("Submitted Job %d\n", answer.Job_id) diff --git a/gateway/main.go b/gateway/main.go new file mode 100644 index 00000000..628278d0 --- /dev/null +++ b/gateway/main.go @@ -0,0 +1,65 @@ +package main + +import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/config" + "code.gitlink.org.cn/JCCE/PCM.git/common/global" + podpb "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + slurmpb "code.gitlink.org.cn/JCCE/PCM.git/slurm/gen/idl" + ecspb "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" + "context" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "go.uber.org/zap" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "log" + "net/http" +) + +func main() { + // 初始化日志以及配置 + lg, err := zap.NewDevelopment() + config.InitConfig() + if err != nil { + log.Fatalf("cannot create zap logger: %v", err) + } + + c := context.Background() + c, cancel := context.WithCancel(c) + defer cancel() + + mux := runtime.NewServeMux() + + serverConfig := []struct { + name string + addr string + registerFunc func(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) + }{ + { + name: "vm", + addr: global.S.VmInfo.Address, + registerFunc: ecspb.RegisterEcsServiceHandlerFromEndpoint, + }, + { + name: "pod", + addr: global.S.PodInfo.Address, + registerFunc: podpb.RegisterPodServiceHandlerFromEndpoint, + }, + { + name: "slurm", + addr: global.S.SlurmInfo.Address, + registerFunc: slurmpb.RegisterSlurmServiceHandlerFromEndpoint, + }, + } + + for _, s := range serverConfig { + err := s.registerFunc( + c, mux, s.addr, + []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}, + ) + if err != nil { + lg.Sugar().Fatalf("cannot register service %s: %v", s.name, err) + } + } + lg.Sugar().Infof("grpc gateway started at %s", global.S.GatewayInfo.Address) + lg.Sugar().Fatal(http.ListenAndServe(global.S.GatewayInfo.Address, mux)) +} diff --git a/gen.sh b/gen.sh index b50b4d1d..eed3aaa9 100644 --- a/gen.sh +++ b/gen.sh @@ -1,5 +1,21 @@ #!/bin/bash -rm -rf lan_trans/idl/* +cd pod/ +rm -rf gen/ +buf mod update +buf generate + +cd ../vm/ +rm -rf gen/ +buf mod update +buf generate + +cd ../slurm/ +rm -rf gen/ +buf mod update +buf generate + +cd ../tenant/ +rm -rf gen/ buf mod update buf generate \ No newline at end of file diff --git a/go.mod b/go.mod index 72007245..f784f510 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v1.61.1530 github.com/bitly/go-simplejson v0.5.0 github.com/docker/docker v20.10.6+incompatible + github.com/fsnotify/fsnotify v1.5.1 github.com/go-yaml/yaml v2.1.0+incompatible github.com/golang/glog v1.0.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0 @@ -21,11 +22,13 @@ require ( github.com/rancher/cli v2.2.0+incompatible github.com/rancher/norman v0.0.0-20211201154850-abe17976423e github.com/sirupsen/logrus v1.8.1 + github.com/spf13/viper v1.9.0 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.377 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.377 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.377 github.com/urfave/cli v1.22.2 github.com/zach-klippenstein/goregen v0.0.0-20160303162051-795b5e3961ea + go.uber.org/zap v1.19.0 google.golang.org/genproto v0.0.0-20220317150908-0efb43f6373e google.golang.org/grpc v1.45.0 google.golang.org/protobuf v1.28.0 @@ -50,7 +53,6 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful v2.10.0+incompatible // indirect github.com/evanphx/json-patch v4.11.0+incompatible // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v0.4.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect @@ -68,6 +70,7 @@ require ( github.com/gorilla/handlers v1.4.2 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -75,12 +78,15 @@ require ( github.com/k8snetworkplumbingwg/network-attachment-definition-client v0.0.0-20200331171230-d50e42f2b669 // indirect github.com/kubernetes-csi/external-snapshotter/v2 v2.1.3 // indirect github.com/longhorn/go-iscsi-helper v0.0.0-20201111045018-ee87992ec536 // indirect + github.com/magiconair/properties v1.8.5 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/openshift/custom-resource-status v0.0.0-20200602122900-c002fd1547ca // indirect github.com/pborman/uuid v1.2.0 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect github.com/prometheus/client_golang v1.11.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.0 // indirect @@ -92,8 +98,14 @@ require ( github.com/russross/blackfriday/v2 v2.0.1 // indirect github.com/satori/go.uuid v1.2.0 // indirect github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.2.0 // indirect github.com/tjfoc/gmsm v1.3.2 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a // indirect diff --git a/idl/demo/demo.proto b/idl/demo/demo.proto deleted file mode 100644 index 68806c0f..00000000 --- a/idl/demo/demo.proto +++ /dev/null @@ -1,35 +0,0 @@ -syntax = "proto3"; -package demo; - -option go_package = "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/gen/idl/demo"; - -import "google/api/annotations.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -enum OurTeam { - // github: devad - devad = 0; -} - -message StringMessage {string value = 1;} - -// 样例服务 -service DemoService { - - // Echo 样例接口 - rpc Echo(StringMessage) returns (StringMessage) { - option (google.api.http) = { - post : "/apis/demo" - body : "*" - }; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - deprecated : true // For testing purposes. - external_docs : { - url : "https://github.com/grpc-ecosystem/grpc-gateway" - description : "Find out more about the interface" - } - security : {} - }; - } -} diff --git a/lan_trans/idl/demo/demo.pb.go b/lan_trans/idl/demo/demo.pb.go deleted file mode 100644 index ba8498cf..00000000 --- a/lan_trans/idl/demo/demo.pb.go +++ /dev/null @@ -1,213 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.0 -// protoc (unknown) -// source: idl/demo/demo.proto - -package demo - -import ( - _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - _ "google.golang.org/genproto/googleapis/api/annotations" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type OurTeam int32 - -const ( - // github: devad - OurTeam_devad OurTeam = 0 -) - -// Enum value maps for OurTeam. -var ( - OurTeam_name = map[int32]string{ - 0: "devad", - } - OurTeam_value = map[string]int32{ - "devad": 0, - } -) - -func (x OurTeam) Enum() *OurTeam { - p := new(OurTeam) - *p = x - return p -} - -func (x OurTeam) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OurTeam) Descriptor() protoreflect.EnumDescriptor { - return file_idl_demo_demo_proto_enumTypes[0].Descriptor() -} - -func (OurTeam) Type() protoreflect.EnumType { - return &file_idl_demo_demo_proto_enumTypes[0] -} - -func (x OurTeam) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OurTeam.Descriptor instead. -func (OurTeam) EnumDescriptor() ([]byte, []int) { - return file_idl_demo_demo_proto_rawDescGZIP(), []int{0} -} - -type StringMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *StringMessage) Reset() { - *x = StringMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_idl_demo_demo_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StringMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StringMessage) ProtoMessage() {} - -func (x *StringMessage) ProtoReflect() protoreflect.Message { - mi := &file_idl_demo_demo_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StringMessage.ProtoReflect.Descriptor instead. -func (*StringMessage) Descriptor() ([]byte, []int) { - return file_idl_demo_demo_proto_rawDescGZIP(), []int{0} -} - -func (x *StringMessage) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -var File_idl_demo_demo_proto protoreflect.FileDescriptor - -var file_idl_demo_demo_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x69, 0x64, 0x6c, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x64, 0x65, 0x6d, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x25, 0x0a, 0x0d, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x2a, 0x14, 0x0a, 0x07, 0x4f, 0x75, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x09, 0x0a, 0x05, 0x64, - 0x65, 0x76, 0x61, 0x64, 0x10, 0x00, 0x32, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6d, 0x6f, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, - 0x13, 0x2e, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x71, 0x92, 0x41, 0x59, 0x22, 0x53, - 0x0a, 0x21, 0x46, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x12, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x65, 0x63, 0x6f, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x58, 0x01, 0x62, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x3a, 0x01, 0x2a, 0x42, 0x31, 0x5a, 0x2f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2d, - 0x6e, 0x75, 0x64, 0x74, 0x2f, 0x50, 0x43, 0x4d, 0x2f, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_idl_demo_demo_proto_rawDescOnce sync.Once - file_idl_demo_demo_proto_rawDescData = file_idl_demo_demo_proto_rawDesc -) - -func file_idl_demo_demo_proto_rawDescGZIP() []byte { - file_idl_demo_demo_proto_rawDescOnce.Do(func() { - file_idl_demo_demo_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_demo_demo_proto_rawDescData) - }) - return file_idl_demo_demo_proto_rawDescData -} - -var file_idl_demo_demo_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_idl_demo_demo_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_idl_demo_demo_proto_goTypes = []interface{}{ - (OurTeam)(0), // 0: demo.OurTeam - (*StringMessage)(nil), // 1: demo.StringMessage -} -var file_idl_demo_demo_proto_depIdxs = []int32{ - 1, // 0: demo.DemoService.Echo:input_type -> demo.StringMessage - 1, // 1: demo.DemoService.Echo:output_type -> demo.StringMessage - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_idl_demo_demo_proto_init() } -func file_idl_demo_demo_proto_init() { - if File_idl_demo_demo_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_idl_demo_demo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_idl_demo_demo_proto_rawDesc, - NumEnums: 1, - NumMessages: 1, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_idl_demo_demo_proto_goTypes, - DependencyIndexes: file_idl_demo_demo_proto_depIdxs, - EnumInfos: file_idl_demo_demo_proto_enumTypes, - MessageInfos: file_idl_demo_demo_proto_msgTypes, - }.Build() - File_idl_demo_demo_proto = out.File - file_idl_demo_demo_proto_rawDesc = nil - file_idl_demo_demo_proto_goTypes = nil - file_idl_demo_demo_proto_depIdxs = nil -} diff --git a/lan_trans/idl/demo/demo.pb.gw.go b/lan_trans/idl/demo/demo.pb.gw.go deleted file mode 100644 index 5fedd6b4..00000000 --- a/lan_trans/idl/demo/demo.pb.gw.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: idl/demo/demo.proto - -/* -Package demo is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package demo - -import ( - "context" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = metadata.Join - -func request_DemoService_Echo_0(ctx context.Context, marshaler runtime.Marshaler, client DemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq StringMessage - 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.Echo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_DemoService_Echo_0(ctx context.Context, marshaler runtime.Marshaler, server DemoServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq StringMessage - 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.Echo(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterDemoServiceHandlerServer registers the http handlers for service DemoService to "mux". -// UnaryRPC :call DemoServiceServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDemoServiceHandlerFromEndpoint instead. -func RegisterDemoServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DemoServiceServer) error { - - mux.Handle("POST", pattern_DemoService_Echo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/demo.DemoService/Echo", runtime.WithHTTPPathPattern("/apis/demo")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_DemoService_Echo_0(ctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_DemoService_Echo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterDemoServiceHandlerFromEndpoint is same as RegisterDemoServiceHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterDemoServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterDemoServiceHandler(ctx, mux, conn) -} - -// RegisterDemoServiceHandler registers the http handlers for service DemoService to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterDemoServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterDemoServiceHandlerClient(ctx, mux, NewDemoServiceClient(conn)) -} - -// RegisterDemoServiceHandlerClient registers the http handlers for service DemoService -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DemoServiceClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DemoServiceClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "DemoServiceClient" to call the correct interceptors. -func RegisterDemoServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DemoServiceClient) error { - - mux.Handle("POST", pattern_DemoService_Echo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/demo.DemoService/Echo", runtime.WithHTTPPathPattern("/apis/demo")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_DemoService_Echo_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_DemoService_Echo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_DemoService_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"apis", "demo"}, "")) -) - -var ( - forward_DemoService_Echo_0 = runtime.ForwardResponseMessage -) diff --git a/lan_trans/idl/demo/demo_grpc.pb.go b/lan_trans/idl/demo/demo_grpc.pb.go deleted file mode 100644 index 84d085a4..00000000 --- a/lan_trans/idl/demo/demo_grpc.pb.go +++ /dev/null @@ -1,107 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc (unknown) -// source: idl/demo/demo.proto - -package demo - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -// DemoServiceClient is the client API for DemoService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type DemoServiceClient interface { - // Echo 样例接口 - Echo(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*StringMessage, error) -} - -type demoServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewDemoServiceClient(cc grpc.ClientConnInterface) DemoServiceClient { - return &demoServiceClient{cc} -} - -func (c *demoServiceClient) Echo(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*StringMessage, error) { - out := new(StringMessage) - err := c.cc.Invoke(ctx, "/demo.DemoService/Echo", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// DemoServiceServer is the server API for DemoService service. -// All implementations must embed UnimplementedDemoServiceServer -// for forward compatibility -type DemoServiceServer interface { - // Echo 样例接口 - Echo(context.Context, *StringMessage) (*StringMessage, error) - mustEmbedUnimplementedDemoServiceServer() -} - -// UnimplementedDemoServiceServer must be embedded to have forward compatible implementations. -type UnimplementedDemoServiceServer struct { -} - -func (UnimplementedDemoServiceServer) Echo(context.Context, *StringMessage) (*StringMessage, error) { - return nil, status.Errorf(codes.Unimplemented, "method Echo not implemented") -} -func (UnimplementedDemoServiceServer) mustEmbedUnimplementedDemoServiceServer() {} - -// UnsafeDemoServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to DemoServiceServer will -// result in compilation errors. -type UnsafeDemoServiceServer interface { - mustEmbedUnimplementedDemoServiceServer() -} - -func RegisterDemoServiceServer(s grpc.ServiceRegistrar, srv DemoServiceServer) { - s.RegisterService(&DemoService_ServiceDesc, srv) -} - -func _DemoService_Echo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StringMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DemoServiceServer).Echo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/demo.DemoService/Echo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DemoServiceServer).Echo(ctx, req.(*StringMessage)) - } - return interceptor(ctx, in, info, handler) -} - -// DemoService_ServiceDesc is the grpc.ServiceDesc for DemoService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var DemoService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "demo.DemoService", - HandlerType: (*DemoServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Echo", - Handler: _DemoService_Echo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "idl/demo/demo.proto", -} diff --git a/lan_trans/openapiv2/idl/demo/demo.swagger.json b/lan_trans/openapiv2/idl/demo/demo.swagger.json deleted file mode 100644 index d7db3be6..00000000 --- a/lan_trans/openapiv2/idl/demo/demo.swagger.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "idl/demo/demo.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "DemoService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/apis/demo": { - "post": { - "summary": "Echo 样例接口", - "operationId": "DemoService_Echo", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/demoStringMessage" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/demoStringMessage" - } - } - ], - "tags": [ - "DemoService" - ], - "deprecated": true, - "security": [], - "externalDocs": { - "description": "Find out more about the interface", - "url": "https://github.com/grpc-ecosystem/grpc-gateway" - } - } - } - }, - "definitions": { - "demoStringMessage": { - "type": "object", - "properties": { - "value": { - "type": "string" - } - } - }, - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json b/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json deleted file mode 100644 index 92ee3276..00000000 --- a/lan_trans/openapiv2/idl/pbecs/ecs.swagger.json +++ /dev/null @@ -1,1013 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "idl/pbecs/ecs.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "EcsService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/apis/ecs": { - "get": { - "summary": "查询ECS全量 - 根据云类型", - "operationId": "EcsService_ListEcs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsListResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "provider", - "description": "云名称\n\n - ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali" - } - ], - "tags": [ - "EcsService" - ] - } - }, - "/apis/ecs/action": { - "post": { - "summary": "操作ecs(start-stop-restart)", - "operationId": "EcsService_ActionEcs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsActionResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbecsActionReq" - } - } - ], - "tags": [ - "EcsService" - ] - } - }, - "/apis/ecs/all": { - "get": { - "summary": "查询所有云的ECS", - "operationId": "EcsService_ListEcsAll", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsListResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "EcsService" - ] - } - }, - "/apis/ecs/create": { - "post": { - "summary": "创建ECS", - "operationId": "EcsService_CreateEcs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsCreateEcsResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbecsCreateEcsReq" - } - } - ], - "tags": [ - "EcsService" - ] - } - }, - "/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", - "operationId": "EcsService_DeleteEcs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsDeleteEcsResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbecsDeleteEcsReq" - } - } - ], - "tags": [ - "EcsService" - ] - } - }, - "/apis/ecs/detail": { - "get": { - "summary": "查询ECS明细 - 支持云类型、区域、账户、分页等过滤条件", - "operationId": "EcsService_ListEcsDetail", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsListDetailResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "provider", - "description": "云名称\n\n - ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali" - }, - { - "name": "accountName", - "description": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "regionId", - "description": "区域Id,参考 tenant.proto 中的各个云的区域", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageNumber", - "description": "分页相关参数,页码", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageSize", - "description": "分页相关参数,每页数量", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "nextToken", - "description": "分页相关参数,下一页的token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "namespace", - "description": "--------harvester---------\nnamespace", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "EcsService" - ] - } - }, - "/apis/ecs/update": { - "put": { - "summary": "修改ECS", - "operationId": "EcsService_UpdateEcs", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbecsUpdateEcsResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbecsUpdateEcsReq" - } - } - ], - "tags": [ - "EcsService" - ] - } - } - }, - "definitions": { - "pbecsActionReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云名称" - }, - "accountName": { - "type": "string", - "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "区域Id,参考 tenant.proto 中的各个云的区域" - }, - "namespace": { - "type": "string", - "title": "命名空间" - }, - "vmName": { - "type": "string", - "title": "虚拟机名称" - }, - "actionType": { - "$ref": "#/definitions/pbecsActionType", - "title": "虚拟机操作状态" - } - } - }, - "pbecsActionResp": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云名称" - }, - "accountName": { - "type": "string", - "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" - }, - "ecses": { - "type": "array", - "items": { - "$ref": "#/definitions/pbecsEcsInstance" - }, - "title": "Ecs 机器集合" - }, - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - }, - "status": { - "type": "string", - "title": "vm状态" - } - } - }, - "pbecsActionType": { - "type": "string", - "enum": [ - "start", - "stop", - "restart" - ], - "default": "start", - "description": "- start: 启动\n - stop: 停止\n - restart: 重启", - "title": "虚拟机状态操作" - }, - "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": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "imageId": { - "type": "string", - "title": "镜像id" - }, - "instanceChargeType": { - "type": "string", - "title": "实例的付费方式" - }, - "instanceType": { - "type": "string", - "title": "实例的资源规格" - }, - "securityGroupId": { - "type": "string", - "title": "安全组id" - }, - "vSwitchId": { - "type": "string", - "title": "交换机id" - }, - "instanceName": { - "type": "string", - "title": "实例名称" - }, - "description": { - "type": "string", - "title": "实例描述" - }, - "zoneId": { - "type": "string", - "title": "可用区id" - }, - "systemDisk": { - "$ref": "#/definitions/pbecsSystemDisk", - "title": "系统磁盘" - }, - "amount": { - "type": "integer", - "format": "int32", - "title": "创建ECS的数量" - }, - "dryRun": { - "type": "string", - "title": "预检此次请求,为true时请求通过,则返回 Request validation has been passed with DryRun flag set" - }, - "category": { - "type": "string", - "title": "数据盘N的云盘种类。取值范围:cloud_efficiency:高效云盘;cloud_ssd:SSD云盘;cloud_essd:ESSD云盘;cloud:普通云盘。" - }, - "internetChargeType": { - "$ref": "#/definitions/pbecsInternetChargeType", - "title": "网络计费类型。取值范围:PayByBandwidth:按固定带宽计费。PayByTraffic(默认):按使用流量计费" - }, - "internetMaxBandwidthOut": { - "type": "integer", - "format": "int32", - "title": "公网入带宽最大值,单位为Mbit/s。创建的实例如果参数InternetMaxBandwidthOut的值大于0,则自动为实例分配公网IP。" - }, - "vpcId": { - "type": "string", - "title": "vpc id 华为云必需" - }, - "subnetId": { - "type": "string", - "title": "待创建云服务器所在的子网信息。需要指定vpcid对应VPC下已创建的子网(subnet)的网络ID,UUID格式。华为云必需" - }, - "namespace": { - "type": "string", - "title": "-------------harvester---------------\n命名空间" - }, - "cpu": { - "type": "integer", - "format": "int32", - "title": "vCpu" - }, - "memory": { - "type": "string", - "title": "memory" - }, - "sshKey": { - "type": "string", - "title": "ssh_key" - }, - "diskName": { - "type": "string", - "title": "diskName" - }, - "diskType": { - "type": "string", - "title": "disk类型 disk,cd-rom" - }, - "diskSize": { - "type": "string", - "title": "卷大小" - }, - "bus": { - "type": "string", - "description": "bus 总线指示要模拟的磁盘设备的类型,支持virtio, sata, scsi." - }, - "networkName": { - "type": "string", - "title": "网络名称" - }, - "networkModel": { - "type": "string", - "description": "network_model 网络模式,支持e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio." - }, - "network": { - "type": "string", - "title": "网络" - }, - "networkType": { - "type": "string", - "title": "网络连接方法,默认bridge" - }, - "osType": { - "type": "string", - "title": "osType //系统类型" - }, - "machineType": { - "type": "string", - "title": "machineType //机器类型 none、q35、pc" - }, - "machineName": { - "type": "string", - "title": "machineName //主机名称,默认为虚拟机名称" - }, - "userDataTemplate": { - "type": "string", - "title": "userDataTemplate //用户数据模板" - }, - "networkDataTemplate": { - "type": "string", - "title": "networkDataTemplate //网络数据模板" - }, - "vmTemplateName": { - "type": "string", - "title": "vmTemplateName //模板名称" - }, - "vmTemplateVersion": { - "type": "string", - "title": "vmTemplateVersion //版本号" - } - }, - "title": "创建ECS入参" - }, - "pbecsCreateEcsResp": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云名称" - }, - "accountName": { - "type": "string", - "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "区域Id,参考 tenant.proto 中的各个云的区域" - }, - "requestId": { - "type": "string", - "title": "请求ID" - }, - "orderId": { - "type": "string", - "title": "订单id" - }, - "tradePrice": { - "type": "number", - "format": "float", - "title": "订单成交价" - }, - "instanceIdSets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "实例ID(InstanceIdSet)列表" - }, - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - } - }, - "title": "创建ECS返回值" - }, - "pbecsDeleteEcsReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "dryRun": { - "type": "string", - "title": "是否只预检此次请求是否只预检此次请求。true:发送检查请求,不会查询资源状况。检查项包括AccessKey是否有效、RAM用户的授权情况和是否填写了必需参数。如果检查不通过,则返回对应错误。如果检查通过,会返回错误码DRYRUN.SUCCESS。\nfalse(默认值):发送正常请求,通过检查后返回2XX HTTP状态码并直接查询资源状况。" - }, - "force": { - "type": "string", - "title": "Force是否强制释放**运行中**;true:强制释放运行中(Running)的实例。强制释放相当于断电,实例内存以及存储中的临时数据都会被擦除,无法恢复。\nfalse(默认值):正常释放实例,此时实例必须处于已停止(Stopped)状态" - }, - "terminateSubscription": { - "type": "string", - "title": "是否释放已到期的包年包月实例 true,false" - }, - "instanceIds": { - "type": "string", - "title": "实例ID数组以”,“分割。列:i-8vb2nlubkow0fxbq2218,i-8vb2nlubkow0fxbq2216" - }, - "deletePublicip": { - "type": "string", - "title": "配置删除云服务器是否删除云服务器绑定的弹性IP。如果选择不删除,则系统仅做解绑定操作,保留弹性IP资源。\n取值为true或false。默认false;华为云" - }, - "deleteVolume": { - "type": "string", - "title": "配置删除云服务器是否删除云服务器对应的数据盘,如果选择不删除,则系统仅做卸载操作,保留云硬盘资源。默认为false。\n取值为true或false。默认false;华为云" - }, - "instanceName": { - "type": "string", - "title": "----------------harvester----------------\n虚拟机名称" - }, - "namespace": { - "type": "string", - "title": "namespace" - }, - "diskName": { - "type": "string", - "title": "diskName,以“,” 分割" - } - }, - "title": "删除ECS入参" - }, - "pbecsDeleteEcsResp": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云名称" - }, - "accountName": { - "type": "string", - "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "区域Id,参考 tenant.proto 中的各个云的区域" - }, - "requestId": { - "type": "string", - "title": "请求ID" - } - }, - "title": "删除ECS返回值" - }, - "pbecsEcsInstance": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "instanceId": { - "type": "string", - "title": "实例id" - }, - "instanceName": { - "type": "string", - "title": "实例名称" - }, - "regionName": { - "type": "string", - "title": "地域,数据中心" - }, - "publicIps": { - "type": "array", - "items": { - "type": "string" - }, - "title": "公网ip" - }, - "instanceType": { - "type": "string", - "title": "实例类型" - }, - "cpu": { - "type": "string", - "title": "vcpu数" - }, - "memory": { - "type": "string", - "title": "内存MB" - }, - "description": { - "type": "string", - "title": "实例描述" - }, - "status": { - "type": "string", - "title": "状态" - }, - "creationTime": { - "type": "string", - "title": "创建时间,ISO8601" - }, - "expireTime": { - "type": "string", - "title": "过期时间" - }, - "innerIps": { - "type": "array", - "items": { - "type": "string" - }, - "title": "内网ip" - }, - "vpcId": { - "type": "string", - "title": "vpc id" - }, - "resourceGroupId": { - "type": "string", - "title": "资源组id" - }, - "instanceChargeType": { - "type": "string", - "title": "收费类型" - }, - "node": { - "type": "string", - "title": "-----------harvester---------\n虚拟机所在的节点" - }, - "namespace": { - "type": "string", - "title": "namespace" - } - }, - "title": "ECS 实例" - }, - "pbecsInternetChargeType": { - "type": "string", - "enum": [ - "PayByBandwidth", - "PayByTraffic" - ], - "default": "PayByBandwidth", - "description": "- PayByBandwidth: 按固定带宽计费。\n - PayByTraffic: (默认):按使用流量计费", - "title": "网络计费类型" - }, - "pbecsListDetailResp": { - "type": "object", - "properties": { - "ecses": { - "type": "array", - "items": { - "$ref": "#/definitions/pbecsEcsInstance" - }, - "title": "Ecs 机器集合" - }, - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - }, - "pageNumber": { - "type": "integer", - "format": "int32", - "title": "分页相关参数,页码" - }, - "pageSize": { - "type": "integer", - "format": "int32", - "title": "分页相关参数,每页数量" - }, - "nextToken": { - "type": "string", - "title": "分页相关参数,下一页的token" - }, - "requestId": { - "type": "string", - "title": "请求id,出现问题后提供给云厂商,排查问题" - } - }, - "title": "查询ECS返回值" - }, - "pbecsListResp": { - "type": "object", - "properties": { - "ecses": { - "type": "array", - "items": { - "$ref": "#/definitions/pbecsEcsInstance" - }, - "title": "Ecs 机器集合" - } - } - }, - "pbecsSystemDisk": { - "type": "object", - "properties": { - "size": { - "type": "string", - "title": "系统盘大小,单位为GiB。取值范围:20~500。该参数的取值必须大于或者等于max{20, ImageSize}。默认值:max{40, 参数ImageId对应的镜像大小}" - }, - "category": { - "type": "string", - "title": "系统盘类型。系统盘的云盘种类。取值范围:cloud_efficiency:高效云盘。cloud_ssd:SSD云盘。cloud_essd:ESSD云盘。cloud:普通云盘。" - }, - "diskName": { - "type": "string", - "title": "系统盘名称" - }, - "description": { - "type": "string", - "title": "系统盘描述" - }, - "performanceLevel": { - "type": "string", - "title": "创建ESSD云盘作为系统盘使用时,设置云盘的性能等级。取值范围:PL0:单盘最高随机读写IOPS 1万。PL1(默认):单盘最高随机读写IOPS 5万。PL2:单盘最高随机读写IOPS 10万。PL3:单盘最高随机读写IOPS 100万。" - }, - "autoSnapshotPolicyId": { - "type": "string", - "title": "系统盘采用的自动快照策略ID。" - } - }, - "title": "系统磁盘" - }, - "pbecsUpdateEcsReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "instanceIds": { - "type": "string", - "title": "实例id" - }, - "password": { - "type": "string", - "title": "实例状态不能为启动中(Starting)。重启实例后,重置生效,且必须是在ECS控制台重启或者调用API RebootInstance重启,新密码才能生效。在操作系统内部重启不能生效。" - }, - "hostName": { - "type": "string", - "title": "操作系统的主机名" - }, - "instanceName": { - "type": "string", - "title": "实例名称" - }, - "description": { - "type": "string", - "title": "实例描述" - }, - "securityGroupIds": { - "type": "string", - "title": "实例重新加入的安全组列表,安全组ID不能重复。以”,“分割" - }, - "namespace": { - "type": "string", - "title": "---------------harvester-----------------\nnamespace" - }, - "cpu": { - "type": "string", - "title": "cpu" - }, - "memory": { - "type": "string", - "title": "memory" - }, - "isRestart": { - "type": "boolean", - "title": "修改配置后是否重启" - } - }, - "title": "更新ECS入参" - }, - "pbecsUpdateEcsResp": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云名称" - }, - "accountName": { - "type": "string", - "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "区域Id,参考 tenant.proto 中的各个云的区域" - }, - "requestId": { - "type": "string", - "title": "请求ID" - } - }, - "title": "更新ECS返回值" - }, - "pbtenantCloudProvider": { - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali", - "description": "- ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "title": "云提供商" - }, - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/lan_trans/openapiv2/idl/pbpod/pod.swagger.json b/lan_trans/openapiv2/idl/pbpod/pod.swagger.json deleted file mode 100644 index c9ab7792..00000000 --- a/lan_trans/openapiv2/idl/pbpod/pod.swagger.json +++ /dev/null @@ -1,741 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "idl/pbpod/pod.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "PodService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/apis/pod": { - "get": { - "summary": "查询Pod全量 - 根据云类型", - "operationId": "PodService_ListPod", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodListPodResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "provider", - "description": "cloud name\n\n - ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali" - }, - { - "name": "namespace", - "description": "命名空间", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "requestSource", - "description": "请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/all": { - "get": { - "summary": "查询所有云的Pod", - "operationId": "PodService_ListPodAll", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodListPodResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/create": { - "post": { - "summary": "创建Pod", - "operationId": "PodService_CreatePod", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodCreatePodResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbpodCreatePodReq" - } - } - ], - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/createMulti": { - "post": { - "summary": "创建Pods", - "operationId": "PodService_CreatePods", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodCreatePodsResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbpodCreatePodsReq" - } - } - ], - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/delete": { - "post": { - "summary": "删除Pod", - "operationId": "PodService_DeletePod", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodDeletePodResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbpodDeletePodReq" - } - } - ], - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/detail": { - "get": { - "summary": "查询Pod明细", - "operationId": "PodService_ListPodDetail", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodListPodDetailResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "provider", - "description": "云名称\n\n - ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali" - }, - { - "name": "accountName", - "description": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "regionId", - "description": "区域Id,参考 tenant.proto 中的各个云的区域", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "regionName", - "description": "区域名称,各云厂商自定义的region name", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "podId", - "description": "podID", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageNumber", - "description": "分页相关参数,页码", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageSize", - "description": "分页相关参数,每页数量", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "nextToken", - "description": "分页相关参数,下一页的token", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "namespace", - "description": "namespace", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "PodService" - ] - } - }, - "/apis/pod/update": { - "put": { - "summary": "更新Pod", - "operationId": "PodService_UpdatePod", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/pbpodUpdatePodResp" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/pbpodUpdatePodReq" - } - } - ], - "tags": [ - "PodService" - ] - } - } - }, - "definitions": { - "pbpodCreatePodReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "podId": { - "type": "string", - "title": "实例id" - }, - "podName": { - "type": "string", - "title": "实例名称" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "containerImage": { - "type": "string", - "title": "镜像" - }, - "containerName": { - "type": "string", - "title": "容器名称" - }, - "cpuPod": { - "type": "string", - "title": "v cpu数" - }, - "memoryPod": { - "type": "string", - "title": "内存MB" - }, - "securityGroupId": { - "type": "string", - "title": "安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)" - }, - "subnetId": { - "type": "string", - "title": "子网ID 对应腾讯 SubnetId(腾讯必需)" - }, - "vpcId": { - "type": "string", - "title": "VPC ID 对应腾讯 VpcId(腾讯必需)" - }, - "namespace": { - "type": "string", - "title": "名空间" - }, - "requestSource": { - "type": "string", - "title": "请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体" - } - } - }, - "pbpodCreatePodResp": { - "type": "object", - "properties": { - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - }, - "requestId": { - "type": "string", - "title": "请求id,出现问题后提供给云厂商,排查问题" - }, - "podId": { - "type": "string", - "title": "podId" - }, - "podName": { - "type": "string", - "title": "podName" - } - } - }, - "pbpodCreatePodsReq": { - "type": "object", - "properties": { - "createPodReq": { - "type": "array", - "items": { - "$ref": "#/definitions/pbpodCreatePodReq" - }, - "title": "创建请求集合" - } - } - }, - "pbpodCreatePodsResp": { - "type": "object", - "properties": { - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - }, - "requestId": { - "type": "array", - "items": { - "type": "string" - }, - "title": "请求id,出现问题后提供给云厂商,排查问题" - } - } - }, - "pbpodDeletePodReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "pcmId": { - "type": "string", - "title": "pcm id" - }, - "podId": { - "type": "string", - "title": "podId" - }, - "podName": { - "type": "string", - "title": "podName" - }, - "namespace": { - "type": "string", - "title": "namespace" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "requestSource": { - "type": "string", - "title": "请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体" - } - } - }, - "pbpodDeletePodResp": { - "type": "object", - "properties": { - "finished": { - "type": "boolean", - "title": "删除是否完成" - }, - "requestId": { - "type": "string", - "title": "请求id,出现问题后提供给云厂商,排查问题" - }, - "podId": { - "type": "string", - "title": "podId" - }, - "podName": { - "type": "string", - "title": "podName" - } - } - }, - "pbpodListPodDetailResp": { - "type": "object", - "properties": { - "pods": { - "type": "array", - "items": { - "$ref": "#/definitions/pbpodPodInstance" - }, - "title": "Pod集合" - }, - "finished": { - "type": "boolean", - "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" - }, - "pageNumber": { - "type": "integer", - "format": "int32", - "title": "分页相关参数,页码" - }, - "pageSize": { - "type": "integer", - "format": "int32", - "title": "分页相关参数,每页数量" - }, - "nextToken": { - "type": "string", - "title": "分页相关参数,下一页的token" - }, - "requestId": { - "type": "string", - "title": "请求id,出现问题后提供给云厂商,排查问题" - } - } - }, - "pbpodListPodResp": { - "type": "object", - "properties": { - "pods": { - "type": "array", - "items": { - "$ref": "#/definitions/pbpodPodInstance" - }, - "title": "pod list" - } - } - }, - "pbpodPodInstance": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "pcmId": { - "type": "string", - "title": "pcm id" - }, - "podId": { - "type": "string", - "title": "实例id" - }, - "podName": { - "type": "string", - "title": "实例名称" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域ID" - }, - "regionName": { - "type": "string", - "title": "地域Name" - }, - "containerImage": { - "type": "string", - "title": "镜像" - }, - "containerName": { - "type": "string", - "title": "容器名称" - }, - "cpuPod": { - "type": "string", - "title": "vcpu数" - }, - "memoryPod": { - "type": "string", - "title": "内存MB" - }, - "securityGroupId": { - "type": "string", - "title": "安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)" - }, - "subnetId": { - "type": "string", - "title": "子网ID 对应腾讯 SubnetId(腾讯必需)" - }, - "vpcId": { - "type": "string", - "title": "VPC ID 对应腾讯 VpcId(腾讯必需)" - }, - "namespace": { - "type": "string", - "title": "名空间" - }, - "status": { - "type": "string", - "title": "实例状态" - } - } - }, - "pbpodUpdatePodReq": { - "type": "object", - "properties": { - "provider": { - "$ref": "#/definitions/pbtenantCloudProvider", - "title": "云类型" - }, - "accountName": { - "type": "string", - "title": "账号名称" - }, - "pcmId": { - "type": "string", - "title": "pcm ID" - }, - "podId": { - "type": "string", - "title": "podId" - }, - "podName": { - "type": "string", - "title": "podName" - }, - "namespace": { - "type": "string", - "title": "namespace" - }, - "regionId": { - "type": "integer", - "format": "int32", - "title": "地域,数据中心" - }, - "containerImage": { - "type": "string", - "title": "镜像" - }, - "containerName": { - "type": "string", - "title": "容器名称" - }, - "cpuPod": { - "type": "string", - "title": "v cpu数" - }, - "memoryPod": { - "type": "string", - "title": "内存MB" - }, - "restartPolicy": { - "type": "string", - "title": "重启策略" - }, - "labels": { - "type": "string", - "title": "labels" - }, - "requestSource": { - "type": "string", - "title": "请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体" - } - } - }, - "pbpodUpdatePodResp": { - "type": "object", - "properties": { - "finished": { - "type": "boolean", - "title": "更新是否完成" - }, - "requestId": { - "type": "string", - "title": "请求id,出现问题后提供给云厂商,排查问题" - }, - "podId": { - "type": "string", - "title": "podId" - }, - "podName": { - "type": "string", - "title": "podName" - } - } - }, - "pbtenantCloudProvider": { - "type": "string", - "enum": [ - "ali", - "tencent", - "huawei", - "k8s", - "harvester" - ], - "default": "ali", - "description": "- ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", - "title": "云提供商" - }, - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - } - } -} diff --git a/pod/buf.gen.yaml b/pod/buf.gen.yaml new file mode 100644 index 00000000..32f6269a --- /dev/null +++ b/pod/buf.gen.yaml @@ -0,0 +1,17 @@ +version: v1 +plugins: + - name: go + out: gen + opt: + - paths=source_relative + - name: go-grpc + out: gen + opt: + - paths=source_relative + - name: grpc-gateway + out: gen + opt: + - paths=source_relative + - grpc_api_configuration=idl/pod.yaml + - name: openapiv2 + out: gen/openapiv2 \ No newline at end of file diff --git a/buf.yaml b/pod/buf.yaml similarity index 100% rename from buf.yaml rename to pod/buf.yaml diff --git a/lan_trans/idl/pbpod/pod.pb.go b/pod/gen/idl/pod.pb.go similarity index 56% rename from lan_trans/idl/pbpod/pod.pb.go rename to pod/gen/idl/pod.pb.go index 1b206f65..3a7e253c 100644 --- a/lan_trans/idl/pbpod/pod.pb.go +++ b/pod/gen/idl/pod.pb.go @@ -2,12 +2,11 @@ // versions: // protoc-gen-go v1.28.0 // protoc (unknown) -// source: idl/pbpod/pod.proto +// source: idl/pod.proto -package pbpod +package podpb import ( - pbtenant "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,13 +21,131 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// 云提供商 +type CloudProvider int32 + +const ( + // 0 - 阿里云 + CloudProvider_ali CloudProvider = 0 + // 1 - 腾讯云 + CloudProvider_tencent CloudProvider = 1 + // 2 - 华为云 + CloudProvider_huawei CloudProvider = 2 + // 3 - K8S + CloudProvider_k8s CloudProvider = 3 + // 3 - Harvester + CloudProvider_harvester CloudProvider = 4 +) + +// Enum value maps for CloudProvider. +var ( + CloudProvider_name = map[int32]string{ + 0: "ali", + 1: "tencent", + 2: "huawei", + 3: "k8s", + 4: "harvester", + } + CloudProvider_value = map[string]int32{ + "ali": 0, + "tencent": 1, + "huawei": 2, + "k8s": 3, + "harvester": 4, + } +) + +func (x CloudProvider) Enum() *CloudProvider { + p := new(CloudProvider) + *p = x + return p +} + +func (x CloudProvider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudProvider) Descriptor() protoreflect.EnumDescriptor { + return file_idl_pod_proto_enumTypes[0].Descriptor() +} + +func (CloudProvider) Type() protoreflect.EnumType { + return &file_idl_pod_proto_enumTypes[0] +} + +func (x CloudProvider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudProvider.Descriptor instead. +func (CloudProvider) EnumDescriptor() ([]byte, []int) { + return file_idl_pod_proto_rawDescGZIP(), []int{0} +} + +type Region struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + //id + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + //name + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *Region) Reset() { + *x = Region{} + if protoimpl.UnsafeEnabled { + mi := &file_idl_pod_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Region) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Region) ProtoMessage() {} + +func (x *Region) ProtoReflect() protoreflect.Message { + mi := &file_idl_pod_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Region.ProtoReflect.Descriptor instead. +func (*Region) Descriptor() ([]byte, []int) { + return file_idl_pod_proto_rawDescGZIP(), []int{0} +} + +func (x *Region) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Region) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type PodInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` //pcm id @@ -64,7 +181,7 @@ type PodInstance struct { func (x *PodInstance) Reset() { *x = PodInstance{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[0] + mi := &file_idl_pod_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -77,7 +194,7 @@ func (x *PodInstance) String() string { func (*PodInstance) ProtoMessage() {} func (x *PodInstance) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[0] + mi := &file_idl_pod_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90,14 +207,14 @@ func (x *PodInstance) ProtoReflect() protoreflect.Message { // Deprecated: Use PodInstance.ProtoReflect.Descriptor instead. func (*PodInstance) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{0} + return file_idl_pod_proto_rawDescGZIP(), []int{1} } -func (x *PodInstance) GetProvider() pbtenant.CloudProvider { +func (x *PodInstance) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *PodInstance) GetAccountName() string { @@ -217,7 +334,7 @@ type CreatePodsReq struct { func (x *CreatePodsReq) Reset() { *x = CreatePodsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[1] + mi := &file_idl_pod_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -230,7 +347,7 @@ func (x *CreatePodsReq) String() string { func (*CreatePodsReq) ProtoMessage() {} func (x *CreatePodsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[1] + mi := &file_idl_pod_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -243,7 +360,7 @@ func (x *CreatePodsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePodsReq.ProtoReflect.Descriptor instead. func (*CreatePodsReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{1} + return file_idl_pod_proto_rawDescGZIP(), []int{2} } func (x *CreatePodsReq) GetCreatePodReq() []*CreatePodReq { @@ -267,7 +384,7 @@ type CreatePodsResp struct { func (x *CreatePodsResp) Reset() { *x = CreatePodsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[2] + mi := &file_idl_pod_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -280,7 +397,7 @@ func (x *CreatePodsResp) String() string { func (*CreatePodsResp) ProtoMessage() {} func (x *CreatePodsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[2] + mi := &file_idl_pod_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -293,7 +410,7 @@ func (x *CreatePodsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePodsResp.ProtoReflect.Descriptor instead. func (*CreatePodsResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{2} + return file_idl_pod_proto_rawDescGZIP(), []int{3} } func (x *CreatePodsResp) GetFinished() bool { @@ -316,7 +433,7 @@ type CreatePodReq struct { unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 实例id @@ -348,7 +465,7 @@ type CreatePodReq struct { func (x *CreatePodReq) Reset() { *x = CreatePodReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[3] + mi := &file_idl_pod_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -361,7 +478,7 @@ func (x *CreatePodReq) String() string { func (*CreatePodReq) ProtoMessage() {} func (x *CreatePodReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[3] + mi := &file_idl_pod_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -374,14 +491,14 @@ func (x *CreatePodReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePodReq.ProtoReflect.Descriptor instead. func (*CreatePodReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{3} + return file_idl_pod_proto_rawDescGZIP(), []int{4} } -func (x *CreatePodReq) GetProvider() pbtenant.CloudProvider { +func (x *CreatePodReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *CreatePodReq) GetAccountName() string { @@ -493,7 +610,7 @@ type CreatePodResp struct { func (x *CreatePodResp) Reset() { *x = CreatePodResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[4] + mi := &file_idl_pod_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -506,7 +623,7 @@ func (x *CreatePodResp) String() string { func (*CreatePodResp) ProtoMessage() {} func (x *CreatePodResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[4] + mi := &file_idl_pod_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -519,7 +636,7 @@ func (x *CreatePodResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePodResp.ProtoReflect.Descriptor instead. func (*CreatePodResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{4} + return file_idl_pod_proto_rawDescGZIP(), []int{5} } func (x *CreatePodResp) GetFinished() bool { @@ -556,7 +673,7 @@ type DeletePodReq struct { unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // pcm id @@ -576,7 +693,7 @@ type DeletePodReq struct { func (x *DeletePodReq) Reset() { *x = DeletePodReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[5] + mi := &file_idl_pod_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -589,7 +706,7 @@ func (x *DeletePodReq) String() string { func (*DeletePodReq) ProtoMessage() {} func (x *DeletePodReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[5] + mi := &file_idl_pod_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -602,14 +719,14 @@ func (x *DeletePodReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePodReq.ProtoReflect.Descriptor instead. func (*DeletePodReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{5} + return file_idl_pod_proto_rawDescGZIP(), []int{6} } -func (x *DeletePodReq) GetProvider() pbtenant.CloudProvider { +func (x *DeletePodReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *DeletePodReq) GetAccountName() string { @@ -679,7 +796,7 @@ type DeletePodResp struct { func (x *DeletePodResp) Reset() { *x = DeletePodResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[6] + mi := &file_idl_pod_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +809,7 @@ func (x *DeletePodResp) String() string { func (*DeletePodResp) ProtoMessage() {} func (x *DeletePodResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[6] + mi := &file_idl_pod_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +822,7 @@ func (x *DeletePodResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeletePodResp.ProtoReflect.Descriptor instead. func (*DeletePodResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{6} + return file_idl_pod_proto_rawDescGZIP(), []int{7} } func (x *DeletePodResp) GetFinished() bool { @@ -742,7 +859,7 @@ type UpdatePodReq struct { unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // pcm ID @@ -774,7 +891,7 @@ type UpdatePodReq struct { func (x *UpdatePodReq) Reset() { *x = UpdatePodReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[7] + mi := &file_idl_pod_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -787,7 +904,7 @@ func (x *UpdatePodReq) String() string { func (*UpdatePodReq) ProtoMessage() {} func (x *UpdatePodReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[7] + mi := &file_idl_pod_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -800,14 +917,14 @@ func (x *UpdatePodReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePodReq.ProtoReflect.Descriptor instead. func (*UpdatePodReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{7} + return file_idl_pod_proto_rawDescGZIP(), []int{8} } -func (x *UpdatePodReq) GetProvider() pbtenant.CloudProvider { +func (x *UpdatePodReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *UpdatePodReq) GetAccountName() string { @@ -919,7 +1036,7 @@ type UpdatePodResp struct { func (x *UpdatePodResp) Reset() { *x = UpdatePodResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[8] + mi := &file_idl_pod_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +1049,7 @@ func (x *UpdatePodResp) String() string { func (*UpdatePodResp) ProtoMessage() {} func (x *UpdatePodResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[8] + mi := &file_idl_pod_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +1062,7 @@ func (x *UpdatePodResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdatePodResp.ProtoReflect.Descriptor instead. func (*UpdatePodResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{8} + return file_idl_pod_proto_rawDescGZIP(), []int{9} } func (x *UpdatePodResp) GetFinished() bool { @@ -982,7 +1099,7 @@ type ListPodDetailReq struct { unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -1004,7 +1121,7 @@ type ListPodDetailReq struct { func (x *ListPodDetailReq) Reset() { *x = ListPodDetailReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[9] + mi := &file_idl_pod_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1017,7 +1134,7 @@ func (x *ListPodDetailReq) String() string { func (*ListPodDetailReq) ProtoMessage() {} func (x *ListPodDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[9] + mi := &file_idl_pod_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1030,14 +1147,14 @@ func (x *ListPodDetailReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPodDetailReq.ProtoReflect.Descriptor instead. func (*ListPodDetailReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{9} + return file_idl_pod_proto_rawDescGZIP(), []int{10} } -func (x *ListPodDetailReq) GetProvider() pbtenant.CloudProvider { +func (x *ListPodDetailReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *ListPodDetailReq) GetAccountName() string { @@ -1118,7 +1235,7 @@ type ListPodDetailResp struct { func (x *ListPodDetailResp) Reset() { *x = ListPodDetailResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[10] + mi := &file_idl_pod_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1131,7 +1248,7 @@ func (x *ListPodDetailResp) String() string { func (*ListPodDetailResp) ProtoMessage() {} func (x *ListPodDetailResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[10] + mi := &file_idl_pod_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1144,7 +1261,7 @@ func (x *ListPodDetailResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPodDetailResp.ProtoReflect.Descriptor instead. func (*ListPodDetailResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{10} + return file_idl_pod_proto_rawDescGZIP(), []int{11} } func (x *ListPodDetailResp) GetPods() []*PodInstance { @@ -1195,7 +1312,7 @@ type ListPodReq struct { unknownFields protoimpl.UnknownFields // cloud name - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` //命名空间 Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` //请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体 @@ -1205,7 +1322,7 @@ type ListPodReq struct { func (x *ListPodReq) Reset() { *x = ListPodReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[11] + mi := &file_idl_pod_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1218,7 +1335,7 @@ func (x *ListPodReq) String() string { func (*ListPodReq) ProtoMessage() {} func (x *ListPodReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[11] + mi := &file_idl_pod_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1231,14 +1348,14 @@ func (x *ListPodReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPodReq.ProtoReflect.Descriptor instead. func (*ListPodReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{11} + return file_idl_pod_proto_rawDescGZIP(), []int{12} } -func (x *ListPodReq) GetProvider() pbtenant.CloudProvider { +func (x *ListPodReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *ListPodReq) GetNamespace() string { @@ -1267,7 +1384,7 @@ type ListPodResp struct { func (x *ListPodResp) Reset() { *x = ListPodResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[12] + mi := &file_idl_pod_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1280,7 +1397,7 @@ func (x *ListPodResp) String() string { func (*ListPodResp) ProtoMessage() {} func (x *ListPodResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[12] + mi := &file_idl_pod_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1293,7 +1410,7 @@ func (x *ListPodResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPodResp.ProtoReflect.Descriptor instead. func (*ListPodResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{12} + return file_idl_pod_proto_rawDescGZIP(), []int{13} } func (x *ListPodResp) GetPods() []*PodInstance { @@ -1309,13 +1426,13 @@ type GetPodRegionReq struct { unknownFields protoimpl.UnknownFields // cloud name - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pod.CloudProvider" json:"provider,omitempty"` } func (x *GetPodRegionReq) Reset() { *x = GetPodRegionReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[13] + mi := &file_idl_pod_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1328,7 +1445,7 @@ func (x *GetPodRegionReq) String() string { func (*GetPodRegionReq) ProtoMessage() {} func (x *GetPodRegionReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[13] + mi := &file_idl_pod_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1341,14 +1458,14 @@ func (x *GetPodRegionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPodRegionReq.ProtoReflect.Descriptor instead. func (*GetPodRegionReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{13} + return file_idl_pod_proto_rawDescGZIP(), []int{14} } -func (x *GetPodRegionReq) GetProvider() pbtenant.CloudProvider { +func (x *GetPodRegionReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } type GetPodRegionResp struct { @@ -1357,13 +1474,13 @@ type GetPodRegionResp struct { unknownFields protoimpl.UnknownFields // region list - Regions []*pbtenant.Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` + Regions []*Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` } func (x *GetPodRegionResp) Reset() { *x = GetPodRegionResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[14] + mi := &file_idl_pod_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1376,7 +1493,7 @@ func (x *GetPodRegionResp) String() string { func (*GetPodRegionResp) ProtoMessage() {} func (x *GetPodRegionResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[14] + mi := &file_idl_pod_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1389,10 +1506,10 @@ func (x *GetPodRegionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPodRegionResp.ProtoReflect.Descriptor instead. func (*GetPodRegionResp) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{14} + return file_idl_pod_proto_rawDescGZIP(), []int{15} } -func (x *GetPodRegionResp) GetRegions() []*pbtenant.Region { +func (x *GetPodRegionResp) GetRegions() []*Region { if x != nil { return x.Regions } @@ -1408,7 +1525,7 @@ type ListPodAllReq struct { func (x *ListPodAllReq) Reset() { *x = ListPodAllReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbpod_pod_proto_msgTypes[15] + mi := &file_idl_pod_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1421,7 +1538,7 @@ func (x *ListPodAllReq) String() string { func (*ListPodAllReq) ProtoMessage() {} func (x *ListPodAllReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbpod_pod_proto_msgTypes[15] + mi := &file_idl_pod_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1434,164 +1551,163 @@ func (x *ListPodAllReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPodAllReq.ProtoReflect.Descriptor instead. func (*ListPodAllReq) Descriptor() ([]byte, []int) { - return file_idl_pbpod_pod_proto_rawDescGZIP(), []int{15} + return file_idl_pod_proto_rawDescGZIP(), []int{16} } -var File_idl_pbpod_pod_proto protoreflect.FileDescriptor +var File_idl_pod_proto protoreflect.FileDescriptor -var file_idl_pbpod_pod_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2f, 0x70, 0x6f, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x1a, 0x19, 0x69, 0x64, - 0x6c, 0x2f, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x04, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, - 0x06, 0x70, 0x63, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, - 0x63, 0x6d, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, +var file_idl_pod_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x03, 0x70, 0x6f, 0x64, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x2c, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x85, 0x04, 0x0a, 0x0b, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x63, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x63, 0x6d, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, + 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x75, + 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, + 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1b, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, + 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x46, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, + 0x65, 0x71, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, + 0x22, 0x4b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xdc, 0x03, + 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x2e, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, + 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, + 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, + 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x8b, 0x02, 0x0a, 0x0c, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, + 0x0a, 0x06, 0x70, 0x63, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x70, 0x63, 0x6d, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, - 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x48, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, - 0x52, 0x65, 0x71, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x70, 0x6f, - 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x52, 0x0c, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x22, 0x4b, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xe1, 0x03, 0x0a, 0x0c, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, - 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, 0x0a, - 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, - 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, - 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x63, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x63, 0x6d, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, - 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, - 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd7, 0x03, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x63, 0x6d, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x63, 0x6d, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, - 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, - 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x75, - 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x75, 0x50, - 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, + 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd2, 0x03, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x63, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x63, 0x6d, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, + 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x70, 0x75, 0x50, 0x6f, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x6d, 0x6f, 0x72, + 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x6d, + 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7c, 0x0a, 0x0d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x70, 0x6f, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x19, + 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb5, 0x02, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x2e, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 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, @@ -1608,144 +1724,133 @@ var file_idl_pbpod_pod_proto_rawDesc = []byte{ 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x50, 0x6f, - 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, - 0x35, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, - 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, - 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x50, 0x6f, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, - 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 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, 0x3e, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x52, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x0f, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x32, - 0xda, 0x04, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, - 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x14, 0x2e, 0x70, - 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x3a, 0x01, 0x2a, 0x12, 0x53, 0x0a, 0x09, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, - 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, - 0x12, 0x53, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x13, 0x2e, - 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x53, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x6f, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x1a, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, - 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x2e, 0x70, 0x62, - 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x18, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, - 0x64, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x43, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x12, 0x4d, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x12, 0x14, 0x2e, 0x70, 0x62, - 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, - 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x61, 0x6c, 0x6c, 0x42, 0x2e, 0x5a, 0x2c, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2d, - 0x6e, 0x75, 0x64, 0x74, 0x2f, 0x50, 0x43, 0x4d, 0x2f, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x70, 0x6f, 0x64, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x50, 0x6f, 0x64, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, + 0x64, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 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, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x50, 0x6f, 0x64, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x22, 0x41, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x64, 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, 0x39, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x2a, 0x49, 0x0a, 0x0d, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x07, 0x0a, + 0x03, 0x61, 0x6c, 0x69, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x6e, + 0x74, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x68, 0x75, 0x61, 0x77, 0x65, 0x69, 0x10, 0x02, 0x12, + 0x07, 0x0a, 0x03, 0x6b, 0x38, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x61, 0x72, 0x76, + 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, 0x04, 0x32, 0x81, 0x03, 0x0a, 0x0a, 0x50, 0x6f, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x64, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, + 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x6f, 0x64, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, + 0x70, 0x6f, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x32, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x11, + 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x6f, 0x64, 0x12, 0x11, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x15, 0x2e, 0x70, 0x6f, 0x64, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x6f, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x12, 0x12, 0x2e, 0x70, 0x6f, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x6f, 0x64, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x6f, 0x64, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x42, 0x17, 0x5a, 0x15, 0x50, + 0x43, 0x4d, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x70, + 0x6f, 0x64, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_idl_pbpod_pod_proto_rawDescOnce sync.Once - file_idl_pbpod_pod_proto_rawDescData = file_idl_pbpod_pod_proto_rawDesc + file_idl_pod_proto_rawDescOnce sync.Once + file_idl_pod_proto_rawDescData = file_idl_pod_proto_rawDesc ) -func file_idl_pbpod_pod_proto_rawDescGZIP() []byte { - file_idl_pbpod_pod_proto_rawDescOnce.Do(func() { - file_idl_pbpod_pod_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_pbpod_pod_proto_rawDescData) +func file_idl_pod_proto_rawDescGZIP() []byte { + file_idl_pod_proto_rawDescOnce.Do(func() { + file_idl_pod_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_pod_proto_rawDescData) }) - return file_idl_pbpod_pod_proto_rawDescData + return file_idl_pod_proto_rawDescData } -var file_idl_pbpod_pod_proto_msgTypes = make([]protoimpl.MessageInfo, 16) -var file_idl_pbpod_pod_proto_goTypes = []interface{}{ - (*PodInstance)(nil), // 0: pbpod.PodInstance - (*CreatePodsReq)(nil), // 1: pbpod.CreatePodsReq - (*CreatePodsResp)(nil), // 2: pbpod.CreatePodsResp - (*CreatePodReq)(nil), // 3: pbpod.CreatePodReq - (*CreatePodResp)(nil), // 4: pbpod.CreatePodResp - (*DeletePodReq)(nil), // 5: pbpod.DeletePodReq - (*DeletePodResp)(nil), // 6: pbpod.DeletePodResp - (*UpdatePodReq)(nil), // 7: pbpod.UpdatePodReq - (*UpdatePodResp)(nil), // 8: pbpod.UpdatePodResp - (*ListPodDetailReq)(nil), // 9: pbpod.ListPodDetailReq - (*ListPodDetailResp)(nil), // 10: pbpod.ListPodDetailResp - (*ListPodReq)(nil), // 11: pbpod.ListPodReq - (*ListPodResp)(nil), // 12: pbpod.ListPodResp - (*GetPodRegionReq)(nil), // 13: pbpod.GetPodRegionReq - (*GetPodRegionResp)(nil), // 14: pbpod.GetPodRegionResp - (*ListPodAllReq)(nil), // 15: pbpod.ListPodAllReq - (pbtenant.CloudProvider)(0), // 16: pbtenant.CloudProvider - (*pbtenant.Region)(nil), // 17: pbtenant.Region +var file_idl_pod_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_idl_pod_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_idl_pod_proto_goTypes = []interface{}{ + (CloudProvider)(0), // 0: pod.CloudProvider + (*Region)(nil), // 1: pod.Region + (*PodInstance)(nil), // 2: pod.PodInstance + (*CreatePodsReq)(nil), // 3: pod.CreatePodsReq + (*CreatePodsResp)(nil), // 4: pod.CreatePodsResp + (*CreatePodReq)(nil), // 5: pod.CreatePodReq + (*CreatePodResp)(nil), // 6: pod.CreatePodResp + (*DeletePodReq)(nil), // 7: pod.DeletePodReq + (*DeletePodResp)(nil), // 8: pod.DeletePodResp + (*UpdatePodReq)(nil), // 9: pod.UpdatePodReq + (*UpdatePodResp)(nil), // 10: pod.UpdatePodResp + (*ListPodDetailReq)(nil), // 11: pod.ListPodDetailReq + (*ListPodDetailResp)(nil), // 12: pod.ListPodDetailResp + (*ListPodReq)(nil), // 13: pod.ListPodReq + (*ListPodResp)(nil), // 14: pod.ListPodResp + (*GetPodRegionReq)(nil), // 15: pod.GetPodRegionReq + (*GetPodRegionResp)(nil), // 16: pod.GetPodRegionResp + (*ListPodAllReq)(nil), // 17: pod.ListPodAllReq } -var file_idl_pbpod_pod_proto_depIdxs = []int32{ - 16, // 0: pbpod.PodInstance.provider:type_name -> pbtenant.CloudProvider - 3, // 1: pbpod.CreatePodsReq.createPodReq:type_name -> pbpod.CreatePodReq - 16, // 2: pbpod.CreatePodReq.provider:type_name -> pbtenant.CloudProvider - 16, // 3: pbpod.DeletePodReq.provider:type_name -> pbtenant.CloudProvider - 16, // 4: pbpod.UpdatePodReq.provider:type_name -> pbtenant.CloudProvider - 16, // 5: pbpod.ListPodDetailReq.provider:type_name -> pbtenant.CloudProvider - 0, // 6: pbpod.ListPodDetailResp.pods:type_name -> pbpod.PodInstance - 16, // 7: pbpod.ListPodReq.provider:type_name -> pbtenant.CloudProvider - 0, // 8: pbpod.ListPodResp.pods:type_name -> pbpod.PodInstance - 16, // 9: pbpod.GetPodRegionReq.provider:type_name -> pbtenant.CloudProvider - 17, // 10: pbpod.GetPodRegionResp.regions:type_name -> pbtenant.Region - 1, // 11: pbpod.PodService.CreatePods:input_type -> pbpod.CreatePodsReq - 3, // 12: pbpod.PodService.CreatePod:input_type -> pbpod.CreatePodReq - 5, // 13: pbpod.PodService.DeletePod:input_type -> pbpod.DeletePodReq - 7, // 14: pbpod.PodService.UpdatePod:input_type -> pbpod.UpdatePodReq - 9, // 15: pbpod.PodService.ListPodDetail:input_type -> pbpod.ListPodDetailReq - 11, // 16: pbpod.PodService.ListPod:input_type -> pbpod.ListPodReq - 15, // 17: pbpod.PodService.ListPodAll:input_type -> pbpod.ListPodAllReq - 2, // 18: pbpod.PodService.CreatePods:output_type -> pbpod.CreatePodsResp - 4, // 19: pbpod.PodService.CreatePod:output_type -> pbpod.CreatePodResp - 6, // 20: pbpod.PodService.DeletePod:output_type -> pbpod.DeletePodResp - 8, // 21: pbpod.PodService.UpdatePod:output_type -> pbpod.UpdatePodResp - 10, // 22: pbpod.PodService.ListPodDetail:output_type -> pbpod.ListPodDetailResp - 12, // 23: pbpod.PodService.ListPod:output_type -> pbpod.ListPodResp - 12, // 24: pbpod.PodService.ListPodAll:output_type -> pbpod.ListPodResp +var file_idl_pod_proto_depIdxs = []int32{ + 0, // 0: pod.PodInstance.provider:type_name -> pod.CloudProvider + 5, // 1: pod.CreatePodsReq.createPodReq:type_name -> pod.CreatePodReq + 0, // 2: pod.CreatePodReq.provider:type_name -> pod.CloudProvider + 0, // 3: pod.DeletePodReq.provider:type_name -> pod.CloudProvider + 0, // 4: pod.UpdatePodReq.provider:type_name -> pod.CloudProvider + 0, // 5: pod.ListPodDetailReq.provider:type_name -> pod.CloudProvider + 2, // 6: pod.ListPodDetailResp.pods:type_name -> pod.PodInstance + 0, // 7: pod.ListPodReq.provider:type_name -> pod.CloudProvider + 2, // 8: pod.ListPodResp.pods:type_name -> pod.PodInstance + 0, // 9: pod.GetPodRegionReq.provider:type_name -> pod.CloudProvider + 1, // 10: pod.GetPodRegionResp.regions:type_name -> pod.Region + 3, // 11: pod.PodService.CreatePods:input_type -> pod.CreatePodsReq + 5, // 12: pod.PodService.CreatePod:input_type -> pod.CreatePodReq + 7, // 13: pod.PodService.DeletePod:input_type -> pod.DeletePodReq + 9, // 14: pod.PodService.UpdatePod:input_type -> pod.UpdatePodReq + 11, // 15: pod.PodService.ListPodDetail:input_type -> pod.ListPodDetailReq + 13, // 16: pod.PodService.ListPod:input_type -> pod.ListPodReq + 17, // 17: pod.PodService.ListPodAll:input_type -> pod.ListPodAllReq + 4, // 18: pod.PodService.CreatePods:output_type -> pod.CreatePodsResp + 6, // 19: pod.PodService.CreatePod:output_type -> pod.CreatePodResp + 8, // 20: pod.PodService.DeletePod:output_type -> pod.DeletePodResp + 10, // 21: pod.PodService.UpdatePod:output_type -> pod.UpdatePodResp + 12, // 22: pod.PodService.ListPodDetail:output_type -> pod.ListPodDetailResp + 14, // 23: pod.PodService.ListPod:output_type -> pod.ListPodResp + 14, // 24: pod.PodService.ListPodAll:output_type -> pod.ListPodResp 18, // [18:25] is the sub-list for method output_type 11, // [11:18] is the sub-list for method input_type 11, // [11:11] is the sub-list for extension type_name @@ -1753,13 +1858,25 @@ var file_idl_pbpod_pod_proto_depIdxs = []int32{ 0, // [0:11] is the sub-list for field type_name } -func init() { file_idl_pbpod_pod_proto_init() } -func file_idl_pbpod_pod_proto_init() { - if File_idl_pbpod_pod_proto != nil { +func init() { file_idl_pod_proto_init() } +func file_idl_pod_proto_init() { + if File_idl_pod_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_idl_pbpod_pod_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Region); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_idl_pod_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PodInstance); i { case 0: return &v.state @@ -1771,7 +1888,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePodsReq); i { case 0: return &v.state @@ -1783,7 +1900,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePodsResp); i { case 0: return &v.state @@ -1795,7 +1912,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePodReq); i { case 0: return &v.state @@ -1807,7 +1924,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePodResp); i { case 0: return &v.state @@ -1819,7 +1936,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePodReq); i { case 0: return &v.state @@ -1831,7 +1948,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePodResp); i { case 0: return &v.state @@ -1843,7 +1960,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdatePodReq); i { case 0: return &v.state @@ -1855,7 +1972,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdatePodResp); i { case 0: return &v.state @@ -1867,7 +1984,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodDetailReq); i { case 0: return &v.state @@ -1879,7 +1996,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodDetailResp); i { case 0: return &v.state @@ -1891,7 +2008,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodReq); i { case 0: return &v.state @@ -1903,7 +2020,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodResp); i { case 0: return &v.state @@ -1915,7 +2032,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPodRegionReq); i { case 0: return &v.state @@ -1927,7 +2044,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPodRegionResp); i { case 0: return &v.state @@ -1939,7 +2056,7 @@ func file_idl_pbpod_pod_proto_init() { return nil } } - file_idl_pbpod_pod_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_idl_pod_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodAllReq); i { case 0: return &v.state @@ -1956,18 +2073,19 @@ func file_idl_pbpod_pod_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_idl_pbpod_pod_proto_rawDesc, - NumEnums: 0, - NumMessages: 16, + RawDescriptor: file_idl_pod_proto_rawDesc, + NumEnums: 1, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_idl_pbpod_pod_proto_goTypes, - DependencyIndexes: file_idl_pbpod_pod_proto_depIdxs, - MessageInfos: file_idl_pbpod_pod_proto_msgTypes, + GoTypes: file_idl_pod_proto_goTypes, + DependencyIndexes: file_idl_pod_proto_depIdxs, + EnumInfos: file_idl_pod_proto_enumTypes, + MessageInfos: file_idl_pod_proto_msgTypes, }.Build() - File_idl_pbpod_pod_proto = out.File - file_idl_pbpod_pod_proto_rawDesc = nil - file_idl_pbpod_pod_proto_goTypes = nil - file_idl_pbpod_pod_proto_depIdxs = nil + File_idl_pod_proto = out.File + file_idl_pod_proto_rawDesc = nil + file_idl_pod_proto_goTypes = nil + file_idl_pod_proto_depIdxs = nil } diff --git a/lan_trans/idl/pbpod/pod.pb.gw.go b/pod/gen/idl/pod.pb.gw.go similarity index 87% rename from lan_trans/idl/pbpod/pod.pb.gw.go rename to pod/gen/idl/pod.pb.gw.go index 8aed6f35..5dc3f444 100644 --- a/lan_trans/idl/pbpod/pod.pb.gw.go +++ b/pod/gen/idl/pod.pb.gw.go @@ -1,12 +1,12 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: idl/pbpod/pod.proto +// source: idl/pod.proto /* -Package pbpod is a reverse proxy. +Package podpb is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package pbpod +package podpb import ( "context" @@ -269,13 +269,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/CreatePods", runtime.WithHTTPPathPattern("/apis/pod/createMulti")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/CreatePods") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_CreatePods_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_CreatePods_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 { @@ -293,13 +292,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/CreatePod", runtime.WithHTTPPathPattern("/apis/pod/create")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/CreatePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_CreatePod_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_CreatePod_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 { @@ -317,13 +315,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/DeletePod", runtime.WithHTTPPathPattern("/apis/pod/delete")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/DeletePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_DeletePod_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_DeletePod_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 { @@ -341,13 +338,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/UpdatePod", runtime.WithHTTPPathPattern("/apis/pod/update")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/UpdatePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_UpdatePod_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_UpdatePod_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 { @@ -365,13 +361,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/ListPodDetail", runtime.WithHTTPPathPattern("/apis/pod/detail")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/ListPodDetail") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_ListPodDetail_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_ListPodDetail_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 { @@ -389,13 +384,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/ListPod", runtime.WithHTTPPathPattern("/apis/pod")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/ListPod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_ListPod_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_ListPod_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 { @@ -413,13 +407,12 @@ func RegisterPodServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbpod.PodService/ListPodAll", runtime.WithHTTPPathPattern("/apis/pod/all")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/pod.PodService/ListPodAll") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_PodService_ListPodAll_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_PodService_ListPodAll_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 { @@ -476,13 +469,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/CreatePods", runtime.WithHTTPPathPattern("/apis/pod/createMulti")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/CreatePods") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_CreatePods_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_CreatePods_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -497,13 +489,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/CreatePod", runtime.WithHTTPPathPattern("/apis/pod/create")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/CreatePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_CreatePod_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_CreatePod_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -518,13 +509,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/DeletePod", runtime.WithHTTPPathPattern("/apis/pod/delete")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/DeletePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_DeletePod_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_DeletePod_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -539,13 +529,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/UpdatePod", runtime.WithHTTPPathPattern("/apis/pod/update")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/UpdatePod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_UpdatePod_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_UpdatePod_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -560,13 +549,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/ListPodDetail", runtime.WithHTTPPathPattern("/apis/pod/detail")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/ListPodDetail") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_ListPodDetail_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_ListPodDetail_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -581,13 +569,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/ListPod", runtime.WithHTTPPathPattern("/apis/pod")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/ListPod") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_ListPod_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_ListPod_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -602,13 +589,12 @@ func RegisterPodServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbpod.PodService/ListPodAll", runtime.WithHTTPPathPattern("/apis/pod/all")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/pod.PodService/ListPodAll") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_PodService_ListPodAll_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_PodService_ListPodAll_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -629,7 +615,7 @@ var ( pattern_PodService_DeletePod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "delete"}, "")) - pattern_PodService_UpdatePod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "update"}, "")) + pattern_PodService_UpdatePod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "delete"}, "")) pattern_PodService_ListPodDetail_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "pod", "detail"}, "")) diff --git a/lan_trans/idl/pbpod/pod_grpc.pb.go b/pod/gen/idl/pod_grpc.pb.go similarity index 92% rename from lan_trans/idl/pbpod/pod_grpc.pb.go rename to pod/gen/idl/pod_grpc.pb.go index dd11b5bd..f5defddd 100644 --- a/lan_trans/idl/pbpod/pod_grpc.pb.go +++ b/pod/gen/idl/pod_grpc.pb.go @@ -2,9 +2,9 @@ // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc (unknown) -// source: idl/pbpod/pod.proto +// source: idl/pod.proto -package pbpod +package podpb import ( context "context" @@ -48,7 +48,7 @@ func NewPodServiceClient(cc grpc.ClientConnInterface) PodServiceClient { func (c *podServiceClient) CreatePods(ctx context.Context, in *CreatePodsReq, opts ...grpc.CallOption) (*CreatePodsResp, error) { out := new(CreatePodsResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/CreatePods", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/CreatePods", in, out, opts...) if err != nil { return nil, err } @@ -57,7 +57,7 @@ func (c *podServiceClient) CreatePods(ctx context.Context, in *CreatePodsReq, op func (c *podServiceClient) CreatePod(ctx context.Context, in *CreatePodReq, opts ...grpc.CallOption) (*CreatePodResp, error) { out := new(CreatePodResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/CreatePod", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/CreatePod", in, out, opts...) if err != nil { return nil, err } @@ -66,7 +66,7 @@ func (c *podServiceClient) CreatePod(ctx context.Context, in *CreatePodReq, opts func (c *podServiceClient) DeletePod(ctx context.Context, in *DeletePodReq, opts ...grpc.CallOption) (*DeletePodResp, error) { out := new(DeletePodResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/DeletePod", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/DeletePod", in, out, opts...) if err != nil { return nil, err } @@ -75,7 +75,7 @@ func (c *podServiceClient) DeletePod(ctx context.Context, in *DeletePodReq, opts func (c *podServiceClient) UpdatePod(ctx context.Context, in *UpdatePodReq, opts ...grpc.CallOption) (*UpdatePodResp, error) { out := new(UpdatePodResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/UpdatePod", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/UpdatePod", in, out, opts...) if err != nil { return nil, err } @@ -84,7 +84,7 @@ func (c *podServiceClient) UpdatePod(ctx context.Context, in *UpdatePodReq, opts func (c *podServiceClient) ListPodDetail(ctx context.Context, in *ListPodDetailReq, opts ...grpc.CallOption) (*ListPodDetailResp, error) { out := new(ListPodDetailResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/ListPodDetail", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/ListPodDetail", in, out, opts...) if err != nil { return nil, err } @@ -93,7 +93,7 @@ func (c *podServiceClient) ListPodDetail(ctx context.Context, in *ListPodDetailR func (c *podServiceClient) ListPod(ctx context.Context, in *ListPodReq, opts ...grpc.CallOption) (*ListPodResp, error) { out := new(ListPodResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/ListPod", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/ListPod", in, out, opts...) if err != nil { return nil, err } @@ -102,7 +102,7 @@ func (c *podServiceClient) ListPod(ctx context.Context, in *ListPodReq, opts ... func (c *podServiceClient) ListPodAll(ctx context.Context, in *ListPodAllReq, opts ...grpc.CallOption) (*ListPodResp, error) { out := new(ListPodResp) - err := c.cc.Invoke(ctx, "/pbpod.PodService/ListPodAll", in, out, opts...) + err := c.cc.Invoke(ctx, "/pod.PodService/ListPodAll", in, out, opts...) if err != nil { return nil, err } @@ -178,7 +178,7 @@ func _PodService_CreatePods_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/CreatePods", + FullMethod: "/pod.PodService/CreatePods", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).CreatePods(ctx, req.(*CreatePodsReq)) @@ -196,7 +196,7 @@ func _PodService_CreatePod_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/CreatePod", + FullMethod: "/pod.PodService/CreatePod", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).CreatePod(ctx, req.(*CreatePodReq)) @@ -214,7 +214,7 @@ func _PodService_DeletePod_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/DeletePod", + FullMethod: "/pod.PodService/DeletePod", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).DeletePod(ctx, req.(*DeletePodReq)) @@ -232,7 +232,7 @@ func _PodService_UpdatePod_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/UpdatePod", + FullMethod: "/pod.PodService/UpdatePod", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).UpdatePod(ctx, req.(*UpdatePodReq)) @@ -250,7 +250,7 @@ func _PodService_ListPodDetail_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/ListPodDetail", + FullMethod: "/pod.PodService/ListPodDetail", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).ListPodDetail(ctx, req.(*ListPodDetailReq)) @@ -268,7 +268,7 @@ func _PodService_ListPod_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/ListPod", + FullMethod: "/pod.PodService/ListPod", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).ListPod(ctx, req.(*ListPodReq)) @@ -286,7 +286,7 @@ func _PodService_ListPodAll_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbpod.PodService/ListPodAll", + FullMethod: "/pod.PodService/ListPodAll", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(PodServiceServer).ListPodAll(ctx, req.(*ListPodAllReq)) @@ -298,7 +298,7 @@ func _PodService_ListPodAll_Handler(srv interface{}, ctx context.Context, dec fu // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var PodService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "pbpod.PodService", + ServiceName: "pod.PodService", HandlerType: (*PodServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -331,5 +331,5 @@ var PodService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "idl/pbpod/pod.proto", + Metadata: "idl/pod.proto", } diff --git a/pod/gen/openapiv2/idl/pod.swagger.json b/pod/gen/openapiv2/idl/pod.swagger.json new file mode 100644 index 00000000..8c71500b --- /dev/null +++ b/pod/gen/openapiv2/idl/pod.swagger.json @@ -0,0 +1,321 @@ +{ + "swagger": "2.0", + "info": { + "title": "idl/pod.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "PodService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "podCloudProvider": { + "type": "string", + "enum": [ + "ali", + "tencent", + "huawei", + "k8s", + "harvester" + ], + "default": "ali", + "description": "- ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", + "title": "云提供商" + }, + "podCreatePodReq": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/podCloudProvider", + "title": "云类型" + }, + "accountName": { + "type": "string", + "title": "账号名称" + }, + "podId": { + "type": "string", + "title": "实例id" + }, + "podName": { + "type": "string", + "title": "实例名称" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "地域,数据中心" + }, + "containerImage": { + "type": "string", + "title": "镜像" + }, + "containerName": { + "type": "string", + "title": "容器名称" + }, + "cpuPod": { + "type": "string", + "title": "v cpu数" + }, + "memoryPod": { + "type": "string", + "title": "内存MB" + }, + "securityGroupId": { + "type": "string", + "title": "安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)" + }, + "subnetId": { + "type": "string", + "title": "子网ID 对应腾讯 SubnetId(腾讯必需)" + }, + "vpcId": { + "type": "string", + "title": "VPC ID 对应腾讯 VpcId(腾讯必需)" + }, + "namespace": { + "type": "string", + "title": "名空间" + }, + "requestSource": { + "type": "string", + "title": "请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体" + } + } + }, + "podCreatePodResp": { + "type": "object", + "properties": { + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + }, + "requestId": { + "type": "string", + "title": "请求id,出现问题后提供给云厂商,排查问题" + }, + "podId": { + "type": "string", + "title": "podId" + }, + "podName": { + "type": "string", + "title": "podName" + } + } + }, + "podCreatePodsResp": { + "type": "object", + "properties": { + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + }, + "requestId": { + "type": "array", + "items": { + "type": "string" + }, + "title": "请求id,出现问题后提供给云厂商,排查问题" + } + } + }, + "podDeletePodResp": { + "type": "object", + "properties": { + "finished": { + "type": "boolean", + "title": "删除是否完成" + }, + "requestId": { + "type": "string", + "title": "请求id,出现问题后提供给云厂商,排查问题" + }, + "podId": { + "type": "string", + "title": "podId" + }, + "podName": { + "type": "string", + "title": "podName" + } + } + }, + "podListPodDetailResp": { + "type": "object", + "properties": { + "pods": { + "type": "array", + "items": { + "$ref": "#/definitions/podPodInstance" + }, + "title": "Pod集合" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + }, + "pageNumber": { + "type": "integer", + "format": "int32", + "title": "分页相关参数,页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "title": "分页相关参数,每页数量" + }, + "nextToken": { + "type": "string", + "title": "分页相关参数,下一页的token" + }, + "requestId": { + "type": "string", + "title": "请求id,出现问题后提供给云厂商,排查问题" + } + } + }, + "podListPodResp": { + "type": "object", + "properties": { + "pods": { + "type": "array", + "items": { + "$ref": "#/definitions/podPodInstance" + }, + "title": "pod list" + } + } + }, + "podPodInstance": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/podCloudProvider", + "title": "云类型" + }, + "accountName": { + "type": "string", + "title": "账号名称" + }, + "pcmId": { + "type": "string", + "title": "pcm id" + }, + "podId": { + "type": "string", + "title": "实例id" + }, + "podName": { + "type": "string", + "title": "实例名称" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "地域ID" + }, + "regionName": { + "type": "string", + "title": "地域Name" + }, + "containerImage": { + "type": "string", + "title": "镜像" + }, + "containerName": { + "type": "string", + "title": "容器名称" + }, + "cpuPod": { + "type": "string", + "title": "vcpu数" + }, + "memoryPod": { + "type": "string", + "title": "内存MB" + }, + "securityGroupId": { + "type": "string", + "title": "安全组ID 对应腾讯 SecurityGroupIds(腾讯必需)" + }, + "subnetId": { + "type": "string", + "title": "子网ID 对应腾讯 SubnetId(腾讯必需)" + }, + "vpcId": { + "type": "string", + "title": "VPC ID 对应腾讯 VpcId(腾讯必需)" + }, + "namespace": { + "type": "string", + "title": "名空间" + }, + "status": { + "type": "string", + "title": "实例状态" + } + } + }, + "podUpdatePodResp": { + "type": "object", + "properties": { + "finished": { + "type": "boolean", + "title": "更新是否完成" + }, + "requestId": { + "type": "string", + "title": "请求id,出现问题后提供给云厂商,排查问题" + }, + "podId": { + "type": "string", + "title": "podId" + }, + "podName": { + "type": "string", + "title": "podName" + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "typeUrl": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + } + } +} diff --git a/idl/pbpod/pod.proto b/pod/idl/pod.proto similarity index 80% rename from idl/pbpod/pod.proto rename to pod/idl/pod.proto index 7bc99e2b..5ae2d28b 100644 --- a/idl/pbpod/pod.proto +++ b/pod/idl/pod.proto @@ -1,14 +1,34 @@ syntax = "proto3"; -package pbpod; +package pod; -option go_package = "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod"; +option go_package = "PCM/pod/idl/gen;podpb"; -import "idl/pbtenant/tenant.proto"; import "google/api/annotations.proto"; +// 云提供商 +enum CloudProvider { + // 0 - 阿里云 + ali = 0; + // 1 - 腾讯云 + tencent = 1; + // 2 - 华为云 + huawei = 2; + // 3 - K8S + k8s = 3; + // 3 - Harvester + harvester = 4; +} + +message Region { + //id + int32 id = 1; + //name + string name = 2; +} + message PodInstance { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; //pcm id @@ -56,7 +76,7 @@ message CreatePodsResp { message CreatePodReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // 实例id @@ -98,7 +118,7 @@ message CreatePodResp { message DeletePodReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // pcm id @@ -128,7 +148,7 @@ message DeletePodResp { message UpdatePodReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // pcm ID @@ -170,7 +190,7 @@ message UpdatePodResp { message ListPodDetailReq { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -207,7 +227,7 @@ message ListPodDetailResp { message ListPodReq { // cloud name - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; //命名空间 string namespace =2; //请求源,如果是从pcm sdk 过来的,则单独生成tenanters实体 @@ -221,13 +241,13 @@ message ListPodResp { message GetPodRegionReq { // cloud name - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; } message GetPodRegionResp { // region list - repeated pbtenant.Region regions = 1; + repeated Region regions = 1; } @@ -241,55 +261,23 @@ message ListPodAllReq{} service PodService { // 创建Pods - rpc CreatePods(CreatePodsReq) returns (CreatePodsResp) { - option (google.api.http) = { - post : "/apis/pod/createMulti" - body : "*" - }; - } + rpc CreatePods(CreatePodsReq) returns (CreatePodsResp); // 创建Pod - rpc CreatePod(CreatePodReq) returns (CreatePodResp) { - option (google.api.http) = { - post : "/apis/pod/create" - body : "*" - }; - } + rpc CreatePod(CreatePodReq) returns (CreatePodResp); // 删除Pod - rpc DeletePod(DeletePodReq) returns (DeletePodResp) { - option (google.api.http) = { - post : "/apis/pod/delete" - body : "*" - }; - } + rpc DeletePod(DeletePodReq) returns (DeletePodResp); // 更新Pod - rpc UpdatePod(UpdatePodReq) returns (UpdatePodResp) { - option (google.api.http) = { - put : "/apis/pod/update" - body : "*" - }; - } + rpc UpdatePod(UpdatePodReq) returns (UpdatePodResp); // 查询Pod明细 - rpc ListPodDetail(ListPodDetailReq) returns (ListPodDetailResp) { - option (google.api.http) = { - get : "/apis/pod/detail" - }; - } + rpc ListPodDetail(ListPodDetailReq) returns (ListPodDetailResp); // 查询Pod全量 - 根据云类型 - rpc ListPod(ListPodReq) returns (ListPodResp) { - option (google.api.http) = { - get : "/apis/pod" - }; - } + rpc ListPod(ListPodReq) returns (ListPodResp); // 查询所有云的Pod - rpc ListPodAll(ListPodAllReq) returns (ListPodResp) { - option (google.api.http) = { - get : "/apis/pod/all" - }; - } + rpc ListPodAll(ListPodAllReq) returns (ListPodResp); } \ No newline at end of file diff --git a/pod/idl/pod.yaml b/pod/idl/pod.yaml new file mode 100644 index 00000000..be547322 --- /dev/null +++ b/pod/idl/pod.yaml @@ -0,0 +1,23 @@ +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: pod.PodService.CreatePods + post: "/apis/pod/createMulti" + body: "*" + - selector: pod.PodService.CreatePod + post: "/apis/pod/create" + body: "*" + - selector: pod.PodService.DeletePod + post: "/apis/pod/delete" + body: "*" + - selector: pod.PodService.UpdatePod + put: "/apis/pod/delete" + body: "*" + - selector: pod.PodService.ListPodDetail + get: "/apis/pod/detail" + - selector: pod.PodService.ListPod + get: "/apis/pod" + - selector: pod.PodService.ListPodAll + get: "/apis/pod/all" \ No newline at end of file diff --git a/pod/main.go b/pod/main.go new file mode 100644 index 00000000..3331422a --- /dev/null +++ b/pod/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/config" + "code.gitlink.org.cn/JCCE/PCM.git/common/global" + "code.gitlink.org.cn/JCCE/PCM.git/common/server" + "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" + podpb "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + podserver "code.gitlink.org.cn/JCCE/PCM.git/pod/server" + "flag" + "github.com/golang/glog" + "github.com/pkg/errors" + "go.uber.org/zap" + "google.golang.org/grpc" + "log" +) + +func main() { + var configFile string + flag.StringVar(&configFile, "conf", "configs/config.yaml", "config.yaml") + flag.Parse() + defer glog.Flush() + + if err := tenanter.LoadCloudConfigsFromFile(configFile); err != nil { + if !errors.Is(err, tenanter.ErrLoadTenanterFileEmpty) { + glog.Fatalf("LoadCloudConfigsFromFile error %+v", err) + } + glog.Warningf("LoadCloudConfigsFromFile empty file path %s", configFile) + } + + glog.Infof("load tenant from file finished") + // 初始化配置以及数据库 + config.InitConfig() + // 新建一个zap logger实例 + logger, err := zap.NewDevelopment() + if err != nil { + log.Fatalf("cannot create logger: %v", err) + } + if err != nil { + logger.Fatal("cannot open private key", zap.Error(err)) + } + if err != nil { + logger.Fatal("cannot read private key", zap.Error(err)) + } + if err != nil { + logger.Fatal("cannot parse private key", zap.Error(err)) + } + // logger.Sugar().Fatal 直接可以少几行判错的代码 + logger.Sugar().Fatal(server.RunGRPCServer(&server.GRPCConfig{ + Name: "pod", + Addr: global.S.PodInfo.Address, + RegisterFunc: func(g *grpc.Server) { + podpb.RegisterPodServiceServer(g, &podserver.Server{}) + }, + Logger: logger, + })) +} diff --git a/adaptor/pcm_pod/server/ali/client.go b/pod/server/ali/client.go similarity index 100% rename from adaptor/pcm_pod/server/ali/client.go rename to pod/server/ali/client.go diff --git a/adaptor/pcm_pod/server/ali/create_container_group.go b/pod/server/ali/create_container_group.go similarity index 98% rename from adaptor/pcm_pod/server/ali/create_container_group.go rename to pod/server/ali/create_container_group.go index f42e65cc..35800568 100644 --- a/adaptor/pcm_pod/server/ali/create_container_group.go +++ b/pod/server/ali/create_container_group.go @@ -1,10 +1,10 @@ package ali import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "errors" "flag" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" @@ -17,7 +17,7 @@ import ( // api document: https://help.aliyun.com/api/eci/createcontainergroup.html func CreateContainerGroup(request *CreateContainerGroupRequest) (response *CreateContainerGroupResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "confAli", "configs/config.yaml", "config.yaml") flag.Parse() @@ -31,7 +31,7 @@ func CreateContainerGroup(request *CreateContainerGroupRequest) (response *Creat } glog.Infof("load tenant from file finished") - tenanters, err := tenanter.GetTenanters(provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(provider)) var regionId int32 var cpuPod string var memoryPod string @@ -62,7 +62,7 @@ func CreateContainerGroup(request *CreateContainerGroupRequest) (response *Creat requestPCM := &pbpod.CreatePodReq{ RequestSource: "ali", - Provider: provider, + Provider: pbpod.CloudProvider(provider), AccountName: tenanters[0].AccountName(), PodName: request.ContainerGroupName, RegionId: regionId, diff --git a/adaptor/pcm_pod/server/ali/delete_container_group.go b/pod/server/ali/delete_container_group.go similarity index 94% rename from adaptor/pcm_pod/server/ali/delete_container_group.go rename to pod/server/ali/delete_container_group.go index 479a98e9..b5c05e9e 100644 --- a/adaptor/pcm_pod/server/ali/delete_container_group.go +++ b/pod/server/ali/delete_container_group.go @@ -16,10 +16,9 @@ package ali import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" "errors" "flag" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" @@ -31,7 +30,7 @@ import ( // api document: https://help.aliyun.com/api/eci/deletecontainergroup.html func DeleteContainerGroup(request *DeleteContainerGroupRequest) (response *DeleteContainerGroupResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "confAli", "configs/config.yaml", "config.yaml") flag.Parse() @@ -63,7 +62,7 @@ func DeleteContainerGroup(request *DeleteContainerGroupRequest) (response *Delet requestPCM := &pbpod.DeletePodReq{ RequestSource: "ali", - Provider: provider, + Provider: pbpod.CloudProvider(provider), AccountName: request.AccountName, PcmId: pcmId, Namespace: request.Namespace, diff --git a/adaptor/pcm_pod/server/ali/describe_container_groups.go b/pod/server/ali/describe_container_groups.go similarity index 98% rename from adaptor/pcm_pod/server/ali/describe_container_groups.go rename to pod/server/ali/describe_container_groups.go index 07a237dc..deb81abb 100644 --- a/adaptor/pcm_pod/server/ali/describe_container_groups.go +++ b/pod/server/ali/describe_container_groups.go @@ -1,9 +1,8 @@ package ali import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" ) @@ -12,7 +11,7 @@ import ( // api document: https://help.aliyun.com/api/eci/describecontainergroups.html func DescribeContainerGroups(request *DescribeContainerGroupsRequest) (response *DescribeContainerGroupsResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) containerGroups := make([]DescribeContainerGroupsContainerGroup0, 0) //trans Ali request to PCM request requestPCM := &pbpod.ListPodReq{ diff --git a/adaptor/pcm_pod/server/ali/update_container_group.go b/pod/server/ali/update_container_group.go similarity index 98% rename from adaptor/pcm_pod/server/ali/update_container_group.go rename to pod/server/ali/update_container_group.go index d93651a7..34a7b443 100644 --- a/adaptor/pcm_pod/server/ali/update_container_group.go +++ b/pod/server/ali/update_container_group.go @@ -16,10 +16,9 @@ package ali import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" "errors" "flag" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" @@ -31,7 +30,7 @@ import ( // api document: https://help.aliyun.com/api/eci/updatecontainergroup.html func UpdateContainerGroup(request *UpdateContainerGroupRequest) (response *UpdateContainerGroupResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "confAli", "configs/config.yaml", "config.yaml") flag.Parse() @@ -60,7 +59,7 @@ func UpdateContainerGroup(request *UpdateContainerGroupRequest) (response *Updat requestPCM := &pbpod.UpdatePodReq{ RequestSource: "ali", - Provider: provider, + Provider: pbpod.CloudProvider(provider), AccountName: request.AccountName, PcmId: request.PcmId, PodId: request.ContainerGroupId, diff --git a/adaptor/pcm_pod/server/kubernetes/api/core/v1/objectreference.go b/pod/server/kubernetes/api/core/v1/objectreference.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/api/core/v1/objectreference.go rename to pod/server/kubernetes/api/core/v1/objectreference.go diff --git a/adaptor/pcm_pod/server/kubernetes/api/core/v1/register.go b/pod/server/kubernetes/api/core/v1/register.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/api/core/v1/register.go rename to pod/server/kubernetes/api/core/v1/register.go diff --git a/adaptor/pcm_pod/server/kubernetes/api/core/v1/resource.go b/pod/server/kubernetes/api/core/v1/resource.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/api/core/v1/resource.go rename to pod/server/kubernetes/api/core/v1/resource.go diff --git a/adaptor/pcm_pod/server/kubernetes/api/core/v1/types.go b/pod/server/kubernetes/api/core/v1/types.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/api/core/v1/types.go rename to pod/server/kubernetes/api/core/v1/types.go diff --git a/adaptor/pcm_pod/server/kubernetes/api/core/v1/zz_generated.deepcopy.go b/pod/server/kubernetes/api/core/v1/zz_generated.deepcopy.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/api/core/v1/zz_generated.deepcopy.go rename to pod/server/kubernetes/api/core/v1/zz_generated.deepcopy.go diff --git a/adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/micro_time.go b/pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/micro_time.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/micro_time.go rename to pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/micro_time.go diff --git a/adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/time.go b/pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/time.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/time.go rename to pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/time.go diff --git a/adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go b/pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go similarity index 99% rename from adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go rename to pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go index 79e2ad48..c3df544b 100644 --- a/adaptor/pcm_pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go +++ b/pod/server/kubernetes/apimachinery/pkg/apis/meta/v1/types.go @@ -17,10 +17,11 @@ limitations under the License. // Package v1 contains API types that are common to all versions. // // The package contains two categories of types: -// - external (serialized) types that lack their own version (e.g TypeMeta) -// - internal (never-serialized) types that are needed by several different -// api groups, and so live here, to avoid duplication and/or import loops -// (e.g. LabelSelector). +// - external (serialized) types that lack their own version (e.g TypeMeta) +// - internal (never-serialized) types that are needed by several different +// api groups, and so live here, to avoid duplication and/or import loops +// (e.g. LabelSelector). +// // In the future, we will probably move these categories of objects into // separate packages. package v1 @@ -1376,17 +1377,18 @@ type PartialObjectMetadataList struct { // Condition contains details for one aspect of the current state of this API Resource. // --- // This struct is intended for direct use as an array at the field path .status.conditions. For example, -// type FooStatus struct{ -// // Represents the observations of a foo's current state. -// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" -// // +patchMergeKey=type -// // +patchStrategy=merge -// // +listType=map -// // +listMapKey=type -// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` // -// // other fields -// } +// type FooStatus struct{ +// // Represents the observations of a foo's current state. +// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" +// // +patchMergeKey=type +// // +patchStrategy=merge +// // +listType=map +// // +listMapKey=type +// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` +// +// // other fields +// } type Condition struct { // type of condition in CamelCase or in foo.example.com/CamelCase. // --- diff --git a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/clientset.go b/pod/server/kubernetes/client-go/kubernetes/clientset.go similarity index 99% rename from adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/clientset.go rename to pod/server/kubernetes/client-go/kubernetes/clientset.go index 687f90ad..e108885c 100644 --- a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/clientset.go +++ b/pod/server/kubernetes/client-go/kubernetes/clientset.go @@ -21,7 +21,7 @@ package kubernetes import ( "fmt" - corev1 "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1" + corev1 "code.gitlink.org.cn/JCCE/PCM.git/pod/server/kubernetes/client-go/kubernetes/typed/core/v1" discovery "k8s.io/client-go/discovery" admissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1" admissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1" diff --git a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/core_client.go b/pod/server/kubernetes/client-go/kubernetes/typed/core/v1/core_client.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/core_client.go rename to pod/server/kubernetes/client-go/kubernetes/typed/core/v1/core_client.go diff --git a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go b/pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go similarity index 96% rename from adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go rename to pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go index d687332b..8442fce2 100644 --- a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go +++ b/pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod.go @@ -1,12 +1,12 @@ package v1 import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "context" - json "encoding/json" + "encoding/json" "errors" "flag" "fmt" @@ -15,12 +15,12 @@ import ( "strconv" "time" - v1 "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server/kubernetes/api/core/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" + v1 "code.gitlink.org.cn/JCCE/PCM.git/pod/server/kubernetes/api/core/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" corev1 "k8s.io/client-go/applyconfigurations/core/v1" - scheme "k8s.io/client-go/kubernetes/scheme" - rest "k8s.io/client-go/rest" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" ) // PodsGetter has a method to return a PodInterface. @@ -85,7 +85,7 @@ func (c *pods) List(ctx context.Context, pod *v1.Pod, opts metav1.ListOptions) ( requestPCM := &pbpod.ListPodReq{ RequestSource: "huawei", - Provider: provider, + Provider: pbpod.CloudProvider(provider), Namespace: "pcm", } @@ -187,7 +187,7 @@ func (c *pods) Create(ctx context.Context, pod *v1.Pod, opts metav1.CreateOption requestPCM := &pbpod.CreatePodReq{ RequestSource: "huawei", - Provider: provider, + Provider: pbpod.CloudProvider(provider), AccountName: tenanters[0].AccountName(), PodName: pod.Name, RegionId: regionId, @@ -280,7 +280,7 @@ func (c *pods) Update(ctx context.Context, pod *v1.Pod, opts metav1.UpdateOption requestPCM := &pbpod.UpdatePodReq{ RequestSource: "huawei", - Provider: provider, + Provider: pbpod.CloudProvider(provider), PcmId: string(pod.ObjectMeta.UID), PodId: string(pod.ObjectMeta.UID), AccountName: tenanters[0].AccountName(), @@ -404,7 +404,7 @@ func (c *pods) Delete(ctx context.Context, namespace string, providerId int32, r requestPCM := &pbpod.DeletePodReq{ RequestSource: "huawei", - Provider: provider, + Provider: pbpod.CloudProvider(provider), AccountName: accountName, PcmId: pcmId, Namespace: namespace, diff --git a/adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod_expansion.go b/pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod_expansion.go similarity index 100% rename from adaptor/pcm_pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod_expansion.go rename to pod/server/kubernetes/client-go/kubernetes/typed/core/v1/pod_expansion.go diff --git a/common/server/server_pod.go b/pod/server/pod.go similarity index 83% rename from common/server/server_pod.go rename to pod/server/pod.go index 9333ea93..dd8ca31e 100644 --- a/common/server/server_pod.go +++ b/pod/server/pod.go @@ -1,19 +1,21 @@ package server import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" "context" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "github.com/golang/glog" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) +type Server struct { + pbpod.UnimplementedPodServiceServer +} + // GetProdRegions get available region for product func (s *Server) GetProdRegions(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) { - resp, err := server.GetPodRegion(ctx, req) + resp, err := GetPodRegion(ctx, req) if err != nil { glog.Errorf("CreatePods error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -23,7 +25,7 @@ func (s *Server) GetProdRegions(ctx context.Context, req *pbpod.GetPodRegionReq) // CreatePods create multiple pod on multiple clouds func (s *Server) CreatePods(ctx context.Context, req *pbpod.CreatePodsReq) (*pbpod.CreatePodsResp, error) { - resp, err := server.CreatePods(ctx, req) + resp, err := CreatePods(ctx, req) if err != nil { glog.Errorf("CreatePods error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -33,7 +35,7 @@ func (s *Server) CreatePods(ctx context.Context, req *pbpod.CreatePodsReq) (*pbp // CreatePod create pod on one cloud func (s *Server) CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod.CreatePodResp, error) { - resp, err := server.CreatePod(ctx, req) + resp, err := CreatePod(ctx, req) if err != nil { glog.Errorf("CreatePod error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -43,7 +45,7 @@ func (s *Server) CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod // DeletePod delete specified pod func (s *Server) DeletePod(ctx context.Context, req *pbpod.DeletePodReq) (*pbpod.DeletePodResp, error) { - resp, err := server.DeletePod(ctx, req) + resp, err := DeletePod(ctx, req) if err != nil { glog.Errorf("DeletePod error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -53,7 +55,7 @@ func (s *Server) DeletePod(ctx context.Context, req *pbpod.DeletePodReq) (*pbpod // UpdatePod update specified pod func (s *Server) UpdatePod(ctx context.Context, req *pbpod.UpdatePodReq) (*pbpod.UpdatePodResp, error) { - resp, err := server.UpdatePod(ctx, req) + resp, err := UpdatePod(ctx, req) if err != nil { glog.Errorf("UpdatePod error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -62,7 +64,7 @@ func (s *Server) UpdatePod(ctx context.Context, req *pbpod.UpdatePodReq) (*pbpod } func (s *Server) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (*pbpod.ListPodDetailResp, error) { - resp, err := server.ListPodDetail(ctx, req) + resp, err := ListPodDetail(ctx, req) if err != nil { glog.Errorf("ListPodDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -71,7 +73,7 @@ func (s *Server) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) } func (s *Server) ListPod(ctx context.Context, req *pbpod.ListPodReq) (*pbpod.ListPodResp, error) { - resp, err := server.ListPod(ctx, req) + resp, err := ListPod(ctx, req) if err != nil { glog.Errorf("ListPod error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -80,7 +82,7 @@ func (s *Server) ListPod(ctx context.Context, req *pbpod.ListPodReq) (*pbpod.Lis } func (s *Server) ListPodAll(ctx context.Context, req *pbpod.ListPodAllReq) (*pbpod.ListPodResp, error) { - resp, err := server.ListPodAll(ctx) + resp, err := ListPodAll(ctx) if err != nil { glog.Errorf("ListPodAll error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) diff --git a/adaptor/pcm_pod/server/pod.go b/pod/server/podImpl.go similarity index 82% rename from adaptor/pcm_pod/server/pod.go rename to pod/server/podImpl.go index 32279929..5cef1751 100644 --- a/adaptor/pcm_pod/server/pod.go +++ b/pod/server/podImpl.go @@ -1,15 +1,15 @@ package server import ( + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "context" "flag" "fmt" "sync" - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/service" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/service" "github.com/golang/glog" "github.com/pkg/errors" @@ -19,18 +19,18 @@ import ( func GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (resp *pbpod.GetPodRegionResp, err error) { var ( regionInit tenanter.Region - regions []*pbtenant.Region + regions []*pbpod.Region ) switch req.GetProvider() { - case pbtenant.CloudProvider_ali: - regionInit, _ = tenanter.NewRegion(req.GetProvider(), 2) - case pbtenant.CloudProvider_tencent: - regionInit, _ = tenanter.NewRegion(req.GetProvider(), 5) - case pbtenant.CloudProvider_huawei: - regionInit, _ = tenanter.NewRegion(req.GetProvider(), 5) + case pbpod.CloudProvider_ali: + regionInit, _ = tenanter.NewRegion(pbtenant.CloudProvider(req.GetProvider()), 2) + case pbpod.CloudProvider_tencent: + regionInit, _ = tenanter.NewRegion(pbtenant.CloudProvider(req.GetProvider()), 5) + case pbpod.CloudProvider_huawei: + regionInit, _ = tenanter.NewRegion(pbtenant.CloudProvider(req.GetProvider()), 5) } - tenanters, err := tenanter.GetTenanters(req.GetProvider()) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.GetProvider())) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } @@ -100,12 +100,12 @@ func CreatePod(ctx context.Context, req *pbpod.CreatePodReq) (*pbpod.CreatePodRe pod poder.Poder ) - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId) } @@ -142,14 +142,14 @@ func DeletePod(ctx context.Context, req *pbpod.DeletePodReq) (*pbpod.DeletePodRe glog.Infof("load tenant from file finished") } - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { - return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId) + return nil, errors.WithMessagef(err, "provider %v regionId %v", pbtenant.CloudProvider(req.Provider), req.RegionId) } for _, tenant := range tenanters { @@ -184,12 +184,12 @@ func UpdatePod(ctx context.Context, req *pbpod.UpdatePodReq) (*pbpod.UpdatePodRe glog.Infof("load tenant from file finished") } - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId) } @@ -211,12 +211,12 @@ func ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq) (*pbpod.Lis pod poder.Poder ) - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId) } @@ -257,7 +257,7 @@ func ListPod(ctx context.Context, req *pbpod.ListPodReq) (*pbpod.ListPodResp, er glog.Infof("load tenant from file finished") } - tenanters, _ = tenanter.GetTenanters(req.Provider) + tenanters, _ = tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) //get the available region for product reqPodRegion := &pbpod.GetPodRegionReq{Provider: req.GetProvider()} @@ -316,14 +316,14 @@ func ListPodAll(ctx context.Context) (*pbpod.ListPodResp, error) { pods []*pbpod.PodInstance ) - wg.Add(len(pbtenant.CloudProvider_name)) - for k := range pbtenant.CloudProvider_name { + wg.Add(len(pbpod.CloudProvider_name)) + for k := range pbpod.CloudProvider_name { go func(provider int32) { defer wg.Done() //针对私有K8S集群,调用listAll时默认只查询ListPodDetailReq namespace下的pod if provider == 3 { - resp, err := ListPod(ctx, &pbpod.ListPodReq{Provider: pbtenant.CloudProvider(provider), Namespace: "pcm"}) + resp, err := ListPod(ctx, &pbpod.ListPodReq{Provider: pbpod.CloudProvider(provider), Namespace: "pcm"}) if err != nil { glog.Errorf("List error %v", err) return @@ -332,7 +332,7 @@ func ListPodAll(ctx context.Context) (*pbpod.ListPodResp, error) { pods = append(pods, resp.Pods...) mutex.Unlock() } else { - resp, err := ListPod(ctx, &pbpod.ListPodReq{Provider: pbtenant.CloudProvider(provider)}) + resp, err := ListPod(ctx, &pbpod.ListPodReq{Provider: pbpod.CloudProvider(provider)}) if err != nil { glog.Errorf("List error %v", err) return diff --git a/adaptor/pcm_pod/server/tencent/client.go b/pod/server/tencent/client.go similarity index 99% rename from adaptor/pcm_pod/server/tencent/client.go rename to pod/server/tencent/client.go index 688cb854..fceaa577 100644 --- a/adaptor/pcm_pod/server/tencent/client.go +++ b/pod/server/tencent/client.go @@ -15,10 +15,9 @@ package v20180525 import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_pod/server" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" + "code.gitlink.org.cn/JCCE/PCM.git/pod/server" "context" "errors" "flag" @@ -1278,7 +1277,7 @@ func NewCreateEKSContainerInstancesResponse() (response *CreateEKSContainerInsta // INTERNALERROR_UNEXCEPTEDINTERNAL = "InternalError.UnexceptedInternal" // INVALIDPARAMETER = "InvalidParameter" func CreateEKSContainerInstances(request *CreateEKSContainerInstancesRequest) (response *CreateEKSContainerInstancesResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "conf", "configs/config.yaml", "config.yaml") @@ -2265,7 +2264,7 @@ func NewDeleteEKSContainerInstancesResponse() (response *DeleteEKSContainerInsta // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" func DeleteEKSContainerInstances(request *DeleteEKSContainerInstancesRequest) (response *DeleteEKSContainerInstancesResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "conf-tencent", "configs/config.yaml", "config.yaml") flag.Parse() @@ -4017,7 +4016,7 @@ func NewDescribeEKSContainerInstancesResponse() (response *DescribeEKSContainerI // INVALIDPARAMETER = "InvalidParameter" // RESOURCENOTFOUND = "ResourceNotFound" func DescribeEKSContainerInstances(request *DescribeEKSContainerInstancesRequest) (response *DescribeEKSContainerInstancesResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) EksCis := make([]*EksCi, 0) //trans Tencent request to PCM request requestPCM := &pbpod.ListPodReq{ @@ -6987,7 +6986,7 @@ func NewUpdateEKSContainerInstanceResponse() (response *UpdateEKSContainerInstan // INVALIDPARAMETER_PARAM = "InvalidParameter.Param" // UNSUPPORTEDOPERATION = "UnsupportedOperation" func UpdateEKSContainerInstance(request *UpdateEKSContainerInstanceRequest) (response *UpdateEKSContainerInstanceResponse, err error) { - provider := pbtenant.CloudProvider(request.ProviderId) + provider := pbpod.CloudProvider(request.ProviderId) var configFile string flag.StringVar(&configFile, "conf-tencent", "configs/config.yaml", "config.yaml") flag.Parse() diff --git a/adaptor/pcm_pod/server/tencent/errors.go b/pod/server/tencent/errors.go similarity index 100% rename from adaptor/pcm_pod/server/tencent/errors.go rename to pod/server/tencent/errors.go diff --git a/adaptor/pcm_pod/server/tencent/models.go b/pod/server/tencent/models.go similarity index 100% rename from adaptor/pcm_pod/server/tencent/models.go rename to pod/server/tencent/models.go diff --git a/adaptor/pcm_pod/service/ali_eci.go b/pod/service/ali_eci.go similarity index 96% rename from adaptor/pcm_pod/service/ali_eci.go rename to pod/service/ali_eci.go index fa67a1a7..77cb2d55 100644 --- a/adaptor/pcm_pod/service/ali_eci.go +++ b/pod/service/ali_eci.go @@ -10,8 +10,7 @@ import ( "sync" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" "github.com/pkg/errors" ) @@ -25,7 +24,7 @@ type AliEci struct { func (eci *AliEci) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) { - regions := make([]*pbtenant.Region, 0) + regions := make([]*pbpod.Region, 0) requestRegion := requests.NewCommonRequest() requestRegion.Method = "POST" @@ -49,7 +48,7 @@ func (eci *AliEci) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) regionsJson := respRegion.Get("Regions").GetIndex(i) regionName, _ := regionsJson.Get("RegionId").String() regionId, _ := tenanter.GetAliRegionId(regionName) - regionPod := &pbtenant.Region{ + regionPod := &pbpod.Region{ Id: regionId, Name: regionName, } @@ -182,7 +181,7 @@ func (eci *AliEci) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailRe var ecies = make([]*pbpod.PodInstance, len(resp.ContainerGroups)) for k, v := range resp.ContainerGroups { ecies[k] = &pbpod.PodInstance{ - Provider: pbtenant.CloudProvider_ali, + Provider: pbpod.CloudProvider_ali, AccountName: eci.tenanter.AccountName(), PcmId: v.ContainerGroupId, PodId: v.ContainerGroupId, diff --git a/adaptor/pcm_pod/service/huawei_cci.go b/pod/service/huawei_cci.go similarity index 96% rename from adaptor/pcm_pod/service/huawei_cci.go rename to pod/service/huawei_cci.go index e6f902e0..bdff9ace 100644 --- a/adaptor/pcm_pod/service/huawei_cci.go +++ b/pod/service/huawei_cci.go @@ -12,9 +12,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" - + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" corev1 "k8s.io/api/core/v1" huaweicci "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" @@ -35,10 +33,10 @@ type HuaweiCci struct { func (cci *HuaweiCci) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) { //todo var ( - regions []*pbtenant.Region + regions []*pbpod.Region ) huaweiRegionName, _ := tenanter.GetHuaweiRegionName(5) - region := &pbtenant.Region{ + region := &pbpod.Region{ Id: 5, Name: huaweiRegionName, } @@ -50,7 +48,7 @@ func (cci *HuaweiCci) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionR return resp, nil } -//CCI auth through iam +// CCI auth through iam const ( apiVersion = "client.authentication.k8s.io/v1beta1" iamEndpoint = "https://iam.myhuaweicloud.com" @@ -215,7 +213,7 @@ func (cci *HuaweiCci) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetai var pods = make([]*pbpod.PodInstance, len(resp.Items)) for k, v := range resp.Items { pods[k] = &pbpod.PodInstance{ - Provider: pbtenant.CloudProvider_huawei, + Provider: pbpod.CloudProvider_huawei, AccountName: cci.tenanter.AccountName(), PcmId: v.Name, PodId: string(v.GetUID()), diff --git a/adaptor/pcm_pod/service/k8s.go b/pod/service/k8s.go similarity index 96% rename from adaptor/pcm_pod/service/k8s.go rename to pod/service/k8s.go index 8dc4a1fe..0fad3b7c 100644 --- a/adaptor/pcm_pod/service/k8s.go +++ b/pod/service/k8s.go @@ -2,8 +2,7 @@ package poder import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" "context" "fmt" "github.com/golang/glog" @@ -33,10 +32,10 @@ type K8SPoder struct { func (k K8SPoder) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) { //todo var ( - regions []*pbtenant.Region + regions []*pbpod.Region ) huaweiRegionName, _ := tenanter.GetK8SRegionName(0) - region := &pbtenant.Region{ + region := &pbpod.Region{ Id: 0, Name: huaweiRegionName, } @@ -201,7 +200,7 @@ func (k K8SPoder) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetailReq var pods = make([]*pbpod.PodInstance, len(resp.Items)) for k, v := range resp.Items { pods[k] = &pbpod.PodInstance{ - Provider: pbtenant.CloudProvider_k8s, + Provider: pbpod.CloudProvider_k8s, AccountName: req.AccountName, PcmId: v.Name, PodId: string(v.GetUID()), diff --git a/adaptor/pcm_pod/service/poder.go b/pod/service/poder.go similarity index 77% rename from adaptor/pcm_pod/service/poder.go rename to pod/service/poder.go index 5778f864..8bb1d476 100644 --- a/adaptor/pcm_pod/service/poder.go +++ b/pod/service/poder.go @@ -2,8 +2,7 @@ package poder import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" "context" "github.com/golang/glog" @@ -23,7 +22,7 @@ type Poder interface { GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) } -func NewPodClient(provider pbtenant.CloudProvider, region tenanter.Region, tenant tenanter.Tenanter) (poder Poder, err error) { +func NewPodClient(provider pbpod.CloudProvider, region tenanter.Region, tenant tenanter.Tenanter) (poder Poder, err error) { // 部分sdk会在内部panic defer func() { if err1 := recover(); err1 != nil { @@ -33,13 +32,13 @@ func NewPodClient(provider pbtenant.CloudProvider, region tenanter.Region, tenan }() switch provider { - case pbtenant.CloudProvider_ali: + case pbpod.CloudProvider_ali: return newAliEciClient(region, tenant) - case pbtenant.CloudProvider_tencent: + case pbpod.CloudProvider_tencent: return newTencentEksClient(region, tenant) - case pbtenant.CloudProvider_huawei: + case pbpod.CloudProvider_huawei: return newHuaweiCciClient(region, tenant) - case pbtenant.CloudProvider_k8s: + case pbpod.CloudProvider_k8s: return newK8SClient(tenant) //TODO aws //case pbtenant.CloudProvider_aws: diff --git a/adaptor/pcm_pod/service/tencent_eks.go b/pod/service/tencent_eks.go similarity index 96% rename from adaptor/pcm_pod/service/tencent_eks.go rename to pod/service/tencent_eks.go index b3b3815e..5cdf914a 100644 --- a/adaptor/pcm_pod/service/tencent_eks.go +++ b/pod/service/tencent_eks.go @@ -7,10 +7,8 @@ import ( "github.com/golang/glog" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" - "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbpod" + pbpod "code.gitlink.org.cn/JCCE/PCM.git/pod/gen/idl" "github.com/pkg/errors" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" @@ -27,7 +25,7 @@ type TencentEks struct { func (eks TencentEks) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionReq) (*pbpod.GetPodRegionResp, error) { - regions := make([]*pbtenant.Region, 0) + regions := make([]*pbpod.Region, 0) request := tencenteks.NewDescribeEKSContainerInstanceRegionsRequest() resp, err := eks.cli.DescribeEKSContainerInstanceRegions(request) @@ -37,7 +35,7 @@ func (eks TencentEks) GetPodRegion(ctx context.Context, req *pbpod.GetPodRegionR for _, eksRegion := range resp.Response.Regions { regionId, _ := tenanter.GetTencentRegionId(*eksRegion.RegionName) - regionPod := &pbtenant.Region{ + regionPod := &pbpod.Region{ Id: regionId, Name: *eksRegion.RegionName, } @@ -187,7 +185,7 @@ func (eks TencentEks) ListPodDetail(ctx context.Context, req *pbpod.ListPodDetai var ekspods = make([]*pbpod.PodInstance, len(resp.Response.EksCis)) for k, v := range resp.Response.EksCis { ekspods[k] = &pbpod.PodInstance{ - Provider: pbtenant.CloudProvider_tencent, + Provider: pbpod.CloudProvider_tencent, AccountName: eks.tenanter.AccountName(), PcmId: *v.EksCiId, PodId: *v.EksCiId, diff --git a/slurm/buf.gen.yaml b/slurm/buf.gen.yaml new file mode 100644 index 00000000..404e111a --- /dev/null +++ b/slurm/buf.gen.yaml @@ -0,0 +1,17 @@ +version: v1 +plugins: + - name: go + out: gen + opt: + - paths=source_relative + - name: go-grpc + out: gen + opt: + - paths=source_relative + - name: grpc-gateway + out: gen + opt: + - paths=source_relative + - grpc_api_configuration=idl/slurm.yaml + - name: openapiv2 + out: gen/openapiv2 \ No newline at end of file diff --git a/slurm/buf.yaml b/slurm/buf.yaml new file mode 100644 index 00000000..ea7eb016 --- /dev/null +++ b/slurm/buf.yaml @@ -0,0 +1,13 @@ +version: v1 +name: buf.build/JCCE/PCM +breaking: + use: + - FILE +lint: + use: + - DEFAULT +# ignore: +# - google/type/datetime.proto +deps: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway \ No newline at end of file diff --git a/adaptor/pcm_slurm/cgo/example/extra/cancel_job.go b/slurm/cgo/example/extra/cancel_job.go similarity index 100% rename from adaptor/pcm_slurm/cgo/example/extra/cancel_job.go rename to slurm/cgo/example/extra/cancel_job.go diff --git a/adaptor/pcm_slurm/cgo/example/extra/get_job_account_info.go b/slurm/cgo/example/extra/get_job_account_info.go similarity index 100% rename from adaptor/pcm_slurm/cgo/example/extra/get_job_account_info.go rename to slurm/cgo/example/extra/get_job_account_info.go diff --git a/adaptor/pcm_slurm/cgo/example/get_all_jobs.go b/slurm/cgo/example/get_all_jobs.go similarity index 88% rename from adaptor/pcm_slurm/cgo/example/get_all_jobs.go rename to slurm/cgo/example/get_all_jobs.go index b146a798..8de6354b 100644 --- a/adaptor/pcm_slurm/cgo/example/get_all_jobs.go +++ b/slurm/cgo/example/get_all_jobs.go @@ -1,7 +1,7 @@ package main import ( - job_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/jobinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/jobinfo" "fmt" ) diff --git a/adaptor/pcm_slurm/cgo/example/get_all_nodes.go b/slurm/cgo/example/get_all_nodes.go similarity index 93% rename from adaptor/pcm_slurm/cgo/example/get_all_nodes.go rename to slurm/cgo/example/get_all_nodes.go index fd181f21..435d4021 100644 --- a/adaptor/pcm_slurm/cgo/example/get_all_nodes.go +++ b/slurm/cgo/example/get_all_nodes.go @@ -1,7 +1,7 @@ package main import ( - node_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/nodeinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/nodeinfo" "fmt" ) diff --git a/adaptor/pcm_slurm/cgo/example/get_info.go b/slurm/cgo/example/get_info.go similarity index 78% rename from adaptor/pcm_slurm/cgo/example/get_info.go rename to slurm/cgo/example/get_info.go index e8aa21c2..945cefc1 100644 --- a/adaptor/pcm_slurm/cgo/example/get_info.go +++ b/slurm/cgo/example/get_info.go @@ -1,7 +1,7 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" "fmt" ) diff --git a/adaptor/pcm_slurm/cgo/example/get_job_by_id.go b/slurm/cgo/example/get_job_by_id.go similarity index 86% rename from adaptor/pcm_slurm/cgo/example/get_job_by_id.go rename to slurm/cgo/example/get_job_by_id.go index bdf8ab57..16ee4347 100644 --- a/adaptor/pcm_slurm/cgo/example/get_job_by_id.go +++ b/slurm/cgo/example/get_job_by_id.go @@ -1,8 +1,8 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" - job_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/jobinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/jobinfo" "fmt" "os" "strconv" diff --git a/adaptor/pcm_slurm/cgo/example/get_node_info.go b/slurm/cgo/example/get_node_info.go similarity index 94% rename from adaptor/pcm_slurm/cgo/example/get_node_info.go rename to slurm/cgo/example/get_node_info.go index 4649c058..307ff378 100644 --- a/adaptor/pcm_slurm/cgo/example/get_node_info.go +++ b/slurm/cgo/example/get_node_info.go @@ -1,7 +1,7 @@ package main import ( - node_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/nodeinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/nodeinfo" "fmt" ) diff --git a/adaptor/pcm_slurm/cgo/example/get_partitions.go b/slurm/cgo/example/get_partitions.go similarity index 84% rename from adaptor/pcm_slurm/cgo/example/get_partitions.go rename to slurm/cgo/example/get_partitions.go index fc020771..9a598890 100644 --- a/adaptor/pcm_slurm/cgo/example/get_partitions.go +++ b/slurm/cgo/example/get_partitions.go @@ -1,7 +1,7 @@ package main import ( - partition_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/partitioninfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/partitioninfo" "fmt" ) diff --git a/adaptor/pcm_slurm/cgo/example/get_user_jobs.go b/slurm/cgo/example/get_user_jobs.go similarity index 84% rename from adaptor/pcm_slurm/cgo/example/get_user_jobs.go rename to slurm/cgo/example/get_user_jobs.go index 7c3c17fb..40dee2f7 100644 --- a/adaptor/pcm_slurm/cgo/example/get_user_jobs.go +++ b/slurm/cgo/example/get_user_jobs.go @@ -1,8 +1,8 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" - job_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/jobinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/jobinfo" "fmt" "os" ) diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/Readme.md b/slurm/cgo/example/submit_example/Readme.md similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/Readme.md rename to slurm/cgo/example/submit_example/Readme.md diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/mpi_container.def b/slurm/cgo/example/submit_example/mpi_container.def similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/mpi_container.def rename to slurm/cgo/example/submit_example/mpi_container.def diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/mpi_pingpong.c b/slurm/cgo/example/submit_example/mpi_pingpong.c similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/mpi_pingpong.c rename to slurm/cgo/example/submit_example/mpi_pingpong.c diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/openmp_container.def b/slurm/cgo/example/submit_example/openmp_container.def similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/openmp_container.def rename to slurm/cgo/example/submit_example/openmp_container.def diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/openmp_example.c b/slurm/cgo/example/submit_example/openmp_example.c similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/openmp_example.c rename to slurm/cgo/example/submit_example/openmp_example.c diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/submit_job.go b/slurm/cgo/example/submit_example/submit_job.go similarity index 85% rename from adaptor/pcm_slurm/cgo/example/submit_example/submit_job.go rename to slurm/cgo/example/submit_example/submit_job.go index 1e69a2a0..c76d6104 100644 --- a/adaptor/pcm_slurm/cgo/example/submit_example/submit_job.go +++ b/slurm/cgo/example/submit_example/submit_job.go @@ -1,8 +1,8 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" - submit_job "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/submitjob" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/submitjob" "fmt" "os" "os/user" diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/submit_mpi_and_update.go b/slurm/cgo/example/submit_example/submit_mpi_and_update.go similarity index 92% rename from adaptor/pcm_slurm/cgo/example/submit_example/submit_mpi_and_update.go rename to slurm/cgo/example/submit_example/submit_mpi_and_update.go index 279f5e5b..ead03c1d 100644 --- a/adaptor/pcm_slurm/cgo/example/submit_example/submit_mpi_and_update.go +++ b/slurm/cgo/example/submit_example/submit_mpi_and_update.go @@ -1,9 +1,9 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" - job_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/jobinfo" - submit_job "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/submitjob" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/jobinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/submitjob" "fmt" "os" "os/exec" diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/submit_mpi_containier.go b/slurm/cgo/example/submit_example/submit_mpi_containier.go similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/submit_mpi_containier.go rename to slurm/cgo/example/submit_example/submit_mpi_containier.go diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/submit_openmp_container.go b/slurm/cgo/example/submit_example/submit_openmp_container.go similarity index 100% rename from adaptor/pcm_slurm/cgo/example/submit_example/submit_openmp_container.go rename to slurm/cgo/example/submit_example/submit_openmp_container.go diff --git a/adaptor/pcm_slurm/cgo/example/submit_example/update_job.go b/slurm/cgo/example/submit_example/update_job.go similarity index 76% rename from adaptor/pcm_slurm/cgo/example/submit_example/update_job.go rename to slurm/cgo/example/submit_example/update_job.go index 122db5f1..bb29e8dc 100644 --- a/adaptor/pcm_slurm/cgo/example/submit_example/update_job.go +++ b/slurm/cgo/example/submit_example/update_job.go @@ -1,8 +1,8 @@ package main import ( - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm" - submit_job "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/submitjob" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/submitjob" "fmt" "os" "strconv" diff --git a/adaptor/pcm_slurm/cgo/src/slurm/extra/slurm_extra.go b/slurm/cgo/src/slurm/extra/slurm_extra.go similarity index 99% rename from adaptor/pcm_slurm/cgo/src/slurm/extra/slurm_extra.go rename to slurm/cgo/src/slurm/extra/slurm_extra.go index 26d90804..2c3fa7dc 100644 --- a/adaptor/pcm_slurm/cgo/src/slurm/extra/slurm_extra.go +++ b/slurm/cgo/src/slurm/extra/slurm_extra.go @@ -10,7 +10,6 @@ import ( "os/exec" "path/filepath" "slurm" - "slurm/jobinfo" "strconv" "strings" ) diff --git a/adaptor/pcm_slurm/cgo/src/slurm/jobinfo/slurm_job_info.go b/slurm/cgo/src/slurm/jobinfo/slurm_job_info.go similarity index 100% rename from adaptor/pcm_slurm/cgo/src/slurm/jobinfo/slurm_job_info.go rename to slurm/cgo/src/slurm/jobinfo/slurm_job_info.go diff --git a/adaptor/pcm_slurm/cgo/src/slurm/nodeinfo/slurm_node_info.go b/slurm/cgo/src/slurm/nodeinfo/slurm_node_info.go similarity index 100% rename from adaptor/pcm_slurm/cgo/src/slurm/nodeinfo/slurm_node_info.go rename to slurm/cgo/src/slurm/nodeinfo/slurm_node_info.go diff --git a/adaptor/pcm_slurm/cgo/src/slurm/partitioninfo/slurm_partition_info.go b/slurm/cgo/src/slurm/partitioninfo/slurm_partition_info.go similarity index 100% rename from adaptor/pcm_slurm/cgo/src/slurm/partitioninfo/slurm_partition_info.go rename to slurm/cgo/src/slurm/partitioninfo/slurm_partition_info.go diff --git a/adaptor/pcm_slurm/cgo/src/slurm/slurm.go b/slurm/cgo/src/slurm/slurm.go similarity index 100% rename from adaptor/pcm_slurm/cgo/src/slurm/slurm.go rename to slurm/cgo/src/slurm/slurm.go diff --git a/adaptor/pcm_slurm/cgo/src/slurm/submitjob/slurm_submit_job.go b/slurm/cgo/src/slurm/submitjob/slurm_submit_job.go similarity index 99% rename from adaptor/pcm_slurm/cgo/src/slurm/submitjob/slurm_submit_job.go rename to slurm/cgo/src/slurm/submitjob/slurm_submit_job.go index 0c05c1c2..c8283314 100644 --- a/adaptor/pcm_slurm/cgo/src/slurm/submitjob/slurm_submit_job.go +++ b/slurm/cgo/src/slurm/submitjob/slurm_submit_job.go @@ -74,7 +74,7 @@ void free_submit_response_msg(struct submit_response_msg *msg) import "C" import ( - job_info "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_slurm/cgo/src/slurm/jobinfo" + "code.gitlink.org.cn/JCCE/PCM.git/slurm/cgo/src/slurm/jobinfo" "fmt" "unsafe" ) diff --git a/adaptor/pcm_slurm/cgo/src/slurm/submitjob/submit_job.go b/slurm/cgo/src/slurm/submitjob/submit_job.go similarity index 100% rename from adaptor/pcm_slurm/cgo/src/slurm/submitjob/submit_job.go rename to slurm/cgo/src/slurm/submitjob/submit_job.go diff --git a/slurm/gen/idl/slurm.pb.go b/slurm/gen/idl/slurm.pb.go new file mode 100644 index 00000000..dfe3f7af --- /dev/null +++ b/slurm/gen/idl/slurm.pb.go @@ -0,0 +1,256 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc (unknown) +// source: idl/slurm.proto + +package slurmpb + +import ( + _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GetNodesReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetNodesReq) Reset() { + *x = GetNodesReq{} + if protoimpl.UnsafeEnabled { + mi := &file_idl_slurm_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodesReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodesReq) ProtoMessage() {} + +func (x *GetNodesReq) ProtoReflect() protoreflect.Message { + mi := &file_idl_slurm_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNodesReq.ProtoReflect.Descriptor instead. +func (*GetNodesReq) Descriptor() ([]byte, []int) { + return file_idl_slurm_proto_rawDescGZIP(), []int{0} +} + +type GetNodesResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Boards int32 `protobuf:"varint,1,opt,name=boards,proto3" json:"boards,omitempty"` + Cpus int32 `protobuf:"varint,2,opt,name=cpus,proto3" json:"cpus,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + RealMemory int32 `protobuf:"varint,4,opt,name=realMemory,proto3" json:"realMemory,omitempty"` + Sockets int32 `protobuf:"varint,5,opt,name=sockets,proto3" json:"sockets,omitempty"` + Threads int32 `protobuf:"varint,6,opt,name=threads,proto3" json:"threads,omitempty"` +} + +func (x *GetNodesResp) Reset() { + *x = GetNodesResp{} + if protoimpl.UnsafeEnabled { + mi := &file_idl_slurm_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodesResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodesResp) ProtoMessage() {} + +func (x *GetNodesResp) ProtoReflect() protoreflect.Message { + mi := &file_idl_slurm_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 GetNodesResp.ProtoReflect.Descriptor instead. +func (*GetNodesResp) Descriptor() ([]byte, []int) { + return file_idl_slurm_proto_rawDescGZIP(), []int{1} +} + +func (x *GetNodesResp) GetBoards() int32 { + if x != nil { + return x.Boards + } + return 0 +} + +func (x *GetNodesResp) GetCpus() int32 { + if x != nil { + return x.Cpus + } + return 0 +} + +func (x *GetNodesResp) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetNodesResp) GetRealMemory() int32 { + if x != nil { + return x.RealMemory + } + return 0 +} + +func (x *GetNodesResp) GetSockets() int32 { + if x != nil { + return x.Sockets + } + return 0 +} + +func (x *GetNodesResp) GetThreads() int32 { + if x != nil { + return x.Threads + } + return 0 +} + +var File_idl_slurm_proto protoreflect.FileDescriptor + +var file_idl_slurm_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x69, 0x64, 0x6c, 0x2f, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x05, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x70, + 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x6c, 0x4d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x6c, + 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x32, 0x43, 0x0a, 0x0c, 0x53, 0x6c, + 0x75, 0x72, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x2e, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x2e, 0x47, + 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x73, 0x6c, 0x75, + 0x72, 0x6d, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, + 0x19, 0x5a, 0x17, 0x50, 0x43, 0x4d, 0x2f, 0x70, 0x6f, 0x64, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x67, + 0x65, 0x6e, 0x3b, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_idl_slurm_proto_rawDescOnce sync.Once + file_idl_slurm_proto_rawDescData = file_idl_slurm_proto_rawDesc +) + +func file_idl_slurm_proto_rawDescGZIP() []byte { + file_idl_slurm_proto_rawDescOnce.Do(func() { + file_idl_slurm_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_slurm_proto_rawDescData) + }) + return file_idl_slurm_proto_rawDescData +} + +var file_idl_slurm_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_idl_slurm_proto_goTypes = []interface{}{ + (*GetNodesReq)(nil), // 0: slurm.GetNodesReq + (*GetNodesResp)(nil), // 1: slurm.GetNodesResp +} +var file_idl_slurm_proto_depIdxs = []int32{ + 0, // 0: slurm.SlurmService.GetNodes:input_type -> slurm.GetNodesReq + 1, // 1: slurm.SlurmService.GetNodes:output_type -> slurm.GetNodesResp + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_idl_slurm_proto_init() } +func file_idl_slurm_proto_init() { + if File_idl_slurm_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_idl_slurm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodesReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_idl_slurm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodesResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_idl_slurm_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_idl_slurm_proto_goTypes, + DependencyIndexes: file_idl_slurm_proto_depIdxs, + MessageInfos: file_idl_slurm_proto_msgTypes, + }.Build() + File_idl_slurm_proto = out.File + file_idl_slurm_proto_rawDesc = nil + file_idl_slurm_proto_goTypes = nil + file_idl_slurm_proto_depIdxs = nil +} diff --git a/slurm/gen/idl/slurm.pb.gw.go b/slurm/gen/idl/slurm.pb.gw.go new file mode 100644 index 00000000..958544d3 --- /dev/null +++ b/slurm/gen/idl/slurm.pb.gw.go @@ -0,0 +1,151 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: idl/slurm.proto + +/* +Package slurmpb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package slurmpb + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_SlurmService_GetNodes_0(ctx context.Context, marshaler runtime.Marshaler, client SlurmServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetNodesReq + var metadata runtime.ServerMetadata + + msg, err := client.GetNodes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SlurmService_GetNodes_0(ctx context.Context, marshaler runtime.Marshaler, server SlurmServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetNodesReq + var metadata runtime.ServerMetadata + + msg, err := server.GetNodes(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterSlurmServiceHandlerServer registers the http handlers for service SlurmService to "mux". +// UnaryRPC :call SlurmServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSlurmServiceHandlerFromEndpoint instead. +func RegisterSlurmServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SlurmServiceServer) error { + + mux.Handle("GET", pattern_SlurmService_GetNodes_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, "/slurm.SlurmService/GetNodes") + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SlurmService_GetNodes_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_SlurmService_GetNodes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterSlurmServiceHandlerFromEndpoint is same as RegisterSlurmServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterSlurmServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterSlurmServiceHandler(ctx, mux, conn) +} + +// RegisterSlurmServiceHandler registers the http handlers for service SlurmService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterSlurmServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterSlurmServiceHandlerClient(ctx, mux, NewSlurmServiceClient(conn)) +} + +// RegisterSlurmServiceHandlerClient registers the http handlers for service SlurmService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SlurmServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SlurmServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "SlurmServiceClient" to call the correct interceptors. +func RegisterSlurmServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SlurmServiceClient) error { + + mux.Handle("GET", pattern_SlurmService_GetNodes_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, "/slurm.SlurmService/GetNodes") + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SlurmService_GetNodes_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_SlurmService_GetNodes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_SlurmService_GetNodes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"apis", "slurm"}, "")) +) + +var ( + forward_SlurmService_GetNodes_0 = runtime.ForwardResponseMessage +) diff --git a/slurm/gen/idl/slurm_grpc.pb.go b/slurm/gen/idl/slurm_grpc.pb.go new file mode 100644 index 00000000..54ec5918 --- /dev/null +++ b/slurm/gen/idl/slurm_grpc.pb.go @@ -0,0 +1,107 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc (unknown) +// source: idl/slurm.proto + +package slurmpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// SlurmServiceClient is the client API for SlurmService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type SlurmServiceClient interface { + // Echo 样例接口 + GetNodes(ctx context.Context, in *GetNodesReq, opts ...grpc.CallOption) (*GetNodesResp, error) +} + +type slurmServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewSlurmServiceClient(cc grpc.ClientConnInterface) SlurmServiceClient { + return &slurmServiceClient{cc} +} + +func (c *slurmServiceClient) GetNodes(ctx context.Context, in *GetNodesReq, opts ...grpc.CallOption) (*GetNodesResp, error) { + out := new(GetNodesResp) + err := c.cc.Invoke(ctx, "/slurm.SlurmService/GetNodes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// SlurmServiceServer is the server API for SlurmService service. +// All implementations must embed UnimplementedSlurmServiceServer +// for forward compatibility +type SlurmServiceServer interface { + // Echo 样例接口 + GetNodes(context.Context, *GetNodesReq) (*GetNodesResp, error) + mustEmbedUnimplementedSlurmServiceServer() +} + +// UnimplementedSlurmServiceServer must be embedded to have forward compatible implementations. +type UnimplementedSlurmServiceServer struct { +} + +func (UnimplementedSlurmServiceServer) GetNodes(context.Context, *GetNodesReq) (*GetNodesResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNodes not implemented") +} +func (UnimplementedSlurmServiceServer) mustEmbedUnimplementedSlurmServiceServer() {} + +// UnsafeSlurmServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SlurmServiceServer will +// result in compilation errors. +type UnsafeSlurmServiceServer interface { + mustEmbedUnimplementedSlurmServiceServer() +} + +func RegisterSlurmServiceServer(s grpc.ServiceRegistrar, srv SlurmServiceServer) { + s.RegisterService(&SlurmService_ServiceDesc, srv) +} + +func _SlurmService_GetNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNodesReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SlurmServiceServer).GetNodes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/slurm.SlurmService/GetNodes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SlurmServiceServer).GetNodes(ctx, req.(*GetNodesReq)) + } + return interceptor(ctx, in, info, handler) +} + +// SlurmService_ServiceDesc is the grpc.ServiceDesc for SlurmService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var SlurmService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "slurm.SlurmService", + HandlerType: (*SlurmServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetNodes", + Handler: _SlurmService_GetNodes_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "idl/slurm.proto", +} diff --git a/slurm/gen/openapiv2/idl/slurm.swagger.json b/slurm/gen/openapiv2/idl/slurm.swagger.json new file mode 100644 index 00000000..6fdeaa4e --- /dev/null +++ b/slurm/gen/openapiv2/idl/slurm.swagger.json @@ -0,0 +1,79 @@ +{ + "swagger": "2.0", + "info": { + "title": "idl/slurm.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "SlurmService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "typeUrl": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "slurmGetNodesResp": { + "type": "object", + "properties": { + "boards": { + "type": "integer", + "format": "int32" + }, + "cpus": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "realMemory": { + "type": "integer", + "format": "int32" + }, + "sockets": { + "type": "integer", + "format": "int32" + }, + "threads": { + "type": "integer", + "format": "int32" + } + } + } + } +} diff --git a/idl/pbslurm/slurm.proto b/slurm/idl/slurm.proto similarity index 59% rename from idl/pbslurm/slurm.proto rename to slurm/idl/slurm.proto index b01041a4..c5e0547f 100644 --- a/idl/pbslurm/slurm.proto +++ b/slurm/idl/slurm.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package demo; +package slurm; -option go_package = "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/gen/idl/slurm"; +option go_package = "PCM/pod/idl/gen;slurmpb"; import "google/api/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -22,10 +22,5 @@ message GetNodesResp { service SlurmService { // Echo 样例接口 - rpc GetNodes(GetNodesReq) returns (GetNodesResp) { - option (google.api.http) = { - post : "/apis/ecs/createMultiple" - body : "*" - }; - } + rpc GetNodes(GetNodesReq) returns (GetNodesResp); } diff --git a/slurm/idl/slurm.yaml b/slurm/idl/slurm.yaml new file mode 100644 index 00000000..c61235c1 --- /dev/null +++ b/slurm/idl/slurm.yaml @@ -0,0 +1,7 @@ +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: slurm.SlurmService.GetNodes + get: "/apis/slurm" \ No newline at end of file diff --git a/adaptor/pcm_slurm/rest/get_nodes.go b/slurm/rest/get_nodes.go similarity index 100% rename from adaptor/pcm_slurm/rest/get_nodes.go rename to slurm/rest/get_nodes.go diff --git a/tenant/buf.gen.yaml b/tenant/buf.gen.yaml new file mode 100644 index 00000000..f7778993 --- /dev/null +++ b/tenant/buf.gen.yaml @@ -0,0 +1,16 @@ +version: v1 +plugins: + - name: go + out: gen + opt: + - paths=source_relative + - name: go-grpc + out: gen + opt: + - paths=source_relative + - name: grpc-gateway + out: gen + opt: + - paths=source_relative + - name: openapiv2 + out: gen/openapiv2 \ No newline at end of file diff --git a/tenant/buf.yaml b/tenant/buf.yaml new file mode 100644 index 00000000..ea7eb016 --- /dev/null +++ b/tenant/buf.yaml @@ -0,0 +1,13 @@ +version: v1 +name: buf.build/JCCE/PCM +breaking: + use: + - FILE +lint: + use: + - DEFAULT +# ignore: +# - google/type/datetime.proto +deps: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway \ No newline at end of file diff --git a/lan_trans/idl/pbtenant/tenant.pb.go b/tenant/gen/idl/tenant.pb.go similarity index 55% rename from lan_trans/idl/pbtenant/tenant.pb.go rename to tenant/gen/idl/tenant.pb.go index be747571..e745b1e5 100644 --- a/lan_trans/idl/pbtenant/tenant.pb.go +++ b/tenant/gen/idl/tenant.pb.go @@ -2,9 +2,9 @@ // versions: // protoc-gen-go v1.28.0 // protoc (unknown) -// source: idl/pbtenant/tenant.proto +// source: idl/tenant.proto -package pbtenant +package tenantpb import ( _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" @@ -67,11 +67,11 @@ func (x CloudProvider) String() string { } func (CloudProvider) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[0].Descriptor() + return file_idl_tenant_proto_enumTypes[0].Descriptor() } func (CloudProvider) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[0] + return &file_idl_tenant_proto_enumTypes[0] } func (x CloudProvider) Number() protoreflect.EnumNumber { @@ -80,7 +80,7 @@ func (x CloudProvider) Number() protoreflect.EnumNumber { // Deprecated: Use CloudProvider.Descriptor instead. func (CloudProvider) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{0} + return file_idl_tenant_proto_rawDescGZIP(), []int{0} } // 云产品 @@ -132,11 +132,11 @@ func (x CloudProduct) String() string { } func (CloudProduct) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[1].Descriptor() + return file_idl_tenant_proto_enumTypes[1].Descriptor() } func (CloudProduct) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[1] + return &file_idl_tenant_proto_enumTypes[1] } func (x CloudProduct) Number() protoreflect.EnumNumber { @@ -145,7 +145,7 @@ func (x CloudProduct) Number() protoreflect.EnumNumber { // Deprecated: Use CloudProduct.Descriptor instead. func (CloudProduct) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{1} + return file_idl_tenant_proto_rawDescGZIP(), []int{1} } // 阿里云区域,需要将对应的 _ 转化为 - @@ -242,11 +242,11 @@ func (x AliRegionId) String() string { } func (AliRegionId) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[2].Descriptor() + return file_idl_tenant_proto_enumTypes[2].Descriptor() } func (AliRegionId) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[2] + return &file_idl_tenant_proto_enumTypes[2] } func (x AliRegionId) Number() protoreflect.EnumNumber { @@ -255,7 +255,7 @@ func (x AliRegionId) Number() protoreflect.EnumNumber { // Deprecated: Use AliRegionId.Descriptor instead. func (AliRegionId) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{2} + return file_idl_tenant_proto_rawDescGZIP(), []int{2} } // 腾讯云区域,需要将对应的 _ 转化为 - @@ -349,11 +349,11 @@ func (x TencentRegionId) String() string { } func (TencentRegionId) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[3].Descriptor() + return file_idl_tenant_proto_enumTypes[3].Descriptor() } func (TencentRegionId) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[3] + return &file_idl_tenant_proto_enumTypes[3] } func (x TencentRegionId) Number() protoreflect.EnumNumber { @@ -362,7 +362,7 @@ func (x TencentRegionId) Number() protoreflect.EnumNumber { // Deprecated: Use TencentRegionId.Descriptor instead. func (TencentRegionId) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{3} + return file_idl_tenant_proto_rawDescGZIP(), []int{3} } // 华为云区域,需要将对应的 _ 转化为 - @@ -426,11 +426,11 @@ func (x HuaweiRegionId) String() string { } func (HuaweiRegionId) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[4].Descriptor() + return file_idl_tenant_proto_enumTypes[4].Descriptor() } func (HuaweiRegionId) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[4] + return &file_idl_tenant_proto_enumTypes[4] } func (x HuaweiRegionId) Number() protoreflect.EnumNumber { @@ -439,7 +439,7 @@ func (x HuaweiRegionId) Number() protoreflect.EnumNumber { // Deprecated: Use HuaweiRegionId.Descriptor instead. func (HuaweiRegionId) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{4} + return file_idl_tenant_proto_rawDescGZIP(), []int{4} } // 私有云区域 预留 @@ -470,11 +470,11 @@ func (x K8SRegionId) String() string { } func (K8SRegionId) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[5].Descriptor() + return file_idl_tenant_proto_enumTypes[5].Descriptor() } func (K8SRegionId) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[5] + return &file_idl_tenant_proto_enumTypes[5] } func (x K8SRegionId) Number() protoreflect.EnumNumber { @@ -483,7 +483,7 @@ func (x K8SRegionId) Number() protoreflect.EnumNumber { // Deprecated: Use K8SRegionId.Descriptor instead. func (K8SRegionId) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{5} + return file_idl_tenant_proto_rawDescGZIP(), []int{5} } // 亚马逊云区域,需要将对应的 _ 转化为 - @@ -577,11 +577,11 @@ func (x AwsRegionId) String() string { } func (AwsRegionId) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbtenant_tenant_proto_enumTypes[6].Descriptor() + return file_idl_tenant_proto_enumTypes[6].Descriptor() } func (AwsRegionId) Type() protoreflect.EnumType { - return &file_idl_pbtenant_tenant_proto_enumTypes[6] + return &file_idl_tenant_proto_enumTypes[6] } func (x AwsRegionId) Number() protoreflect.EnumNumber { @@ -590,7 +590,7 @@ func (x AwsRegionId) Number() protoreflect.EnumNumber { // Deprecated: Use AwsRegionId.Descriptor instead. func (AwsRegionId) EnumDescriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{6} + return file_idl_tenant_proto_rawDescGZIP(), []int{6} } // 云配置信息 @@ -606,7 +606,7 @@ type CloudConfigs struct { func (x *CloudConfigs) Reset() { *x = CloudConfigs{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[0] + mi := &file_idl_tenant_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -619,7 +619,7 @@ func (x *CloudConfigs) String() string { func (*CloudConfigs) ProtoMessage() {} func (x *CloudConfigs) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[0] + mi := &file_idl_tenant_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -632,7 +632,7 @@ func (x *CloudConfigs) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConfigs.ProtoReflect.Descriptor instead. func (*CloudConfigs) Descriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{0} + return file_idl_tenant_proto_rawDescGZIP(), []int{0} } func (x *CloudConfigs) GetConfigs() []*CloudConfig { @@ -648,7 +648,7 @@ type CloudConfig struct { unknownFields protoimpl.UnknownFields // 云服务提供商,具体参考 CloudProvider 的定义 - Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=tenant.CloudProvider" json:"provider,omitempty"` // 账户名称,由用户自定义,必须全局唯一,方便多个系统之间的维护 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // 认证方式1:与 access_secret 结合使用,两者均非空时生效 @@ -664,7 +664,7 @@ type CloudConfig struct { func (x *CloudConfig) Reset() { *x = CloudConfig{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[1] + mi := &file_idl_tenant_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -677,7 +677,7 @@ func (x *CloudConfig) String() string { func (*CloudConfig) ProtoMessage() {} func (x *CloudConfig) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[1] + mi := &file_idl_tenant_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -690,7 +690,7 @@ func (x *CloudConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudConfig.ProtoReflect.Descriptor instead. func (*CloudConfig) Descriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{1} + return file_idl_tenant_proto_rawDescGZIP(), []int{1} } func (x *CloudConfig) GetProvider() CloudProvider { @@ -749,7 +749,7 @@ type Region struct { func (x *Region) Reset() { *x = Region{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[2] + mi := &file_idl_tenant_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -762,7 +762,7 @@ func (x *Region) String() string { func (*Region) ProtoMessage() {} func (x *Region) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbtenant_tenant_proto_msgTypes[2] + mi := &file_idl_tenant_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -775,7 +775,7 @@ func (x *Region) ProtoReflect() protoreflect.Message { // Deprecated: Use Region.ProtoReflect.Descriptor instead. func (*Region) Descriptor() ([]byte, []int) { - return file_idl_pbtenant_tenant_proto_rawDescGZIP(), []int{2} + return file_idl_tenant_proto_rawDescGZIP(), []int{2} } func (x *Region) GetId() int32 { @@ -792,196 +792,194 @@ func (x *Region) GetName() string { return "" } -var File_idl_pbtenant_tenant_proto protoreflect.FileDescriptor +var File_idl_tenant_proto protoreflect.FileDescriptor -var file_idl_pbtenant_tenant_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x62, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x3f, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x6c, 0x69, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x68, 0x75, 0x61, 0x77, 0x65, 0x69, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x6b, 0x38, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, 0x04, - 0x2a, 0x77, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x10, - 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x65, 0x63, 0x73, - 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x72, 0x64, - 0x73, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x6f, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x64, 0x10, 0x05, 0x2a, 0xf3, 0x03, 0x0a, 0x0b, 0x41, 0x6c, - 0x69, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x6c, 0x69, - 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, - 0x5f, 0x71, 0x69, 0x6e, 0x67, 0x64, 0x61, 0x6f, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x6c, - 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x62, 0x65, 0x69, 0x6a, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x16, - 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x7a, 0x68, 0x61, 0x6e, 0x67, 0x6a, 0x69, - 0x61, 0x6b, 0x6f, 0x75, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, - 0x5f, 0x68, 0x75, 0x68, 0x65, 0x68, 0x61, 0x6f, 0x74, 0x65, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, - 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x77, 0x75, 0x6c, 0x61, 0x6e, 0x63, 0x68, 0x61, 0x62, - 0x75, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, 0x61, - 0x6e, 0x67, 0x7a, 0x68, 0x6f, 0x75, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, - 0x63, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x10, 0x07, 0x12, 0x13, 0x0a, - 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x68, 0x65, 0x6e, 0x7a, 0x68, 0x65, 0x6e, - 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, 0x65, 0x79, - 0x75, 0x61, 0x6e, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, - 0x67, 0x75, 0x61, 0x6e, 0x67, 0x7a, 0x68, 0x6f, 0x75, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x61, - 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x6e, 0x67, 0x64, 0x75, 0x10, 0x0b, 0x12, - 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, 0x6f, 0x6e, 0x67, 0x6b, 0x6f, - 0x6e, 0x67, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, - 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, - 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, - 0x5f, 0x32, 0x10, 0x0e, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, - 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, - 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, - 0x5f, 0x35, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, - 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x11, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, - 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x12, - 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x75, 0x73, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, - 0x31, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x75, 0x73, 0x5f, 0x65, 0x61, - 0x73, 0x74, 0x5f, 0x31, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x65, 0x75, - 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x5f, 0x31, 0x10, 0x15, 0x12, 0x11, 0x0a, 0x0d, - 0x61, 0x6c, 0x69, 0x5f, 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x16, 0x2a, - 0xc1, 0x03, 0x0a, 0x0f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x0a, 0x0a, 0x06, 0x74, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x12, - 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x62, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, - 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x62, 0x65, 0x69, 0x6a, - 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x63, - 0x68, 0x65, 0x6e, 0x67, 0x64, 0x75, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, 0x5f, 0x61, - 0x70, 0x5f, 0x63, 0x68, 0x6f, 0x6e, 0x67, 0x71, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x12, 0x13, 0x0a, - 0x0f, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x7a, 0x68, 0x6f, 0x75, - 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x68, 0x6f, 0x6e, 0x67, - 0x6b, 0x6f, 0x6e, 0x67, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, - 0x6a, 0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x63, 0x5f, - 0x61, 0x70, 0x5f, 0x6d, 0x75, 0x6d, 0x62, 0x61, 0x69, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x74, - 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x61, 0x6e, 0x6a, 0x69, 0x6e, 0x67, 0x10, 0x09, 0x12, 0x0f, - 0x0a, 0x0b, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x65, 0x6f, 0x75, 0x6c, 0x10, 0x0a, 0x12, - 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, - 0x69, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, 0x61, - 0x6e, 0x67, 0x68, 0x61, 0x69, 0x5f, 0x66, 0x73, 0x69, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x74, - 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, 0x65, 0x6e, 0x7a, 0x68, 0x65, 0x6e, 0x5f, 0x66, 0x73, - 0x69, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, - 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x74, 0x63, 0x5f, 0x61, - 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x79, 0x6f, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, 0x5f, - 0x65, 0x75, 0x5f, 0x66, 0x72, 0x61, 0x6e, 0x6b, 0x66, 0x75, 0x72, 0x74, 0x10, 0x10, 0x12, 0x10, - 0x0a, 0x0c, 0x74, 0x63, 0x5f, 0x65, 0x75, 0x5f, 0x6d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x10, 0x11, - 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x61, 0x73, 0x68, 0x62, 0x75, 0x72, - 0x6e, 0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x73, 0x69, 0x6c, - 0x69, 0x63, 0x6f, 0x6e, 0x76, 0x61, 0x6c, 0x6c, 0x65, 0x79, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, - 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x74, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x10, 0x14, 0x12, - 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x73, 0x61, 0x6f, 0x70, 0x61, 0x75, 0x6c, - 0x6f, 0x10, 0x15, 0x2a, 0xfb, 0x01, 0x0a, 0x0e, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69, 0x52, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0a, 0x0a, 0x06, 0x68, 0x77, 0x5f, 0x61, 0x6c, 0x6c, - 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x74, - 0x68, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x6e, - 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, - 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x68, - 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x04, 0x12, 0x10, 0x0a, - 0x0c, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x05, 0x12, - 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x77, 0x65, - 0x73, 0x74, 0x5f, 0x32, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, 0x5f, - 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x07, 0x12, 0x15, 0x0a, - 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, - 0x5f, 0x32, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, - 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x68, - 0x77, 0x5f, 0x61, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x0a, 0x12, 0x11, - 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x32, 0x10, - 0x0b, 0x2a, 0x1a, 0x0a, 0x0b, 0x4b, 0x38, 0x53, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x0b, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x2a, 0xcd, 0x03, - 0x0a, 0x0b, 0x41, 0x77, 0x73, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0b, 0x0a, - 0x07, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, - 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x11, 0x0a, - 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x02, - 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, - 0x31, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x77, 0x65, - 0x73, 0x74, 0x5f, 0x32, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x66, - 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, - 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x06, 0x12, 0x12, 0x0a, - 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, - 0x07, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, - 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, - 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, - 0x09, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, - 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, - 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, - 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, - 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x77, 0x73, - 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x5f, 0x31, 0x10, 0x0d, 0x12, - 0x14, 0x0a, 0x10, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, - 0x6c, 0x5f, 0x31, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, - 0x77, 0x65, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, - 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x61, - 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x11, 0x12, - 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x33, - 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x6e, 0x6f, 0x72, - 0x74, 0x68, 0x5f, 0x31, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x6d, 0x65, - 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x14, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, - 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x15, 0x32, 0x71, 0x0a, - 0x0d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x60, - 0x92, 0x41, 0x5d, 0x12, 0x1e, 0xe6, 0x89, 0x80, 0xe6, 0x9c, 0x89, 0xe4, 0xba, 0x91, 0xe7, 0xa7, - 0x9f, 0xe6, 0x88, 0xb7, 0xe7, 0x9a, 0x84, 0xe8, 0xae, 0xa4, 0xe8, 0xaf, 0x81, 0xe6, 0x9c, 0x8d, - 0xe5, 0x8a, 0xa1, 0x1a, 0x3b, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x20, - 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x50, 0x43, 0x4d, 0x12, 0x20, - 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2d, 0x6e, 0x75, 0x64, 0x74, 0x2f, 0x50, 0x43, 0x4d, - 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, - 0x43, 0x43, 0x45, 0x2d, 0x6e, 0x75, 0x64, 0x74, 0x2f, 0x50, 0x43, 0x4d, 0x2f, 0x6c, 0x61, 0x6e, - 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var file_idl_tenant_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x69, 0x64, 0x6c, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3d, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x6c, 0x69, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x68, 0x75, 0x61, 0x77, 0x65, 0x69, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x6b, 0x38, 0x73, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, + 0x04, 0x2a, 0x77, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x6c, + 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x65, 0x63, + 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x72, + 0x64, 0x73, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x5f, 0x6f, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x64, 0x10, 0x05, 0x2a, 0xf3, 0x03, 0x0a, 0x0b, 0x41, + 0x6c, 0x69, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x6c, + 0x69, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x6c, 0x69, 0x5f, 0x63, + 0x6e, 0x5f, 0x71, 0x69, 0x6e, 0x67, 0x64, 0x61, 0x6f, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x61, + 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x62, 0x65, 0x69, 0x6a, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, + 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x7a, 0x68, 0x61, 0x6e, 0x67, 0x6a, + 0x69, 0x61, 0x6b, 0x6f, 0x75, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x63, + 0x6e, 0x5f, 0x68, 0x75, 0x68, 0x65, 0x68, 0x61, 0x6f, 0x74, 0x65, 0x10, 0x04, 0x12, 0x15, 0x0a, + 0x11, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x77, 0x75, 0x6c, 0x61, 0x6e, 0x63, 0x68, 0x61, + 0x62, 0x75, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, + 0x61, 0x6e, 0x67, 0x7a, 0x68, 0x6f, 0x75, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, + 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x10, 0x07, 0x12, 0x13, + 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x68, 0x65, 0x6e, 0x7a, 0x68, 0x65, + 0x6e, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, 0x65, + 0x79, 0x75, 0x61, 0x6e, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, + 0x5f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x7a, 0x68, 0x6f, 0x75, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, + 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x6e, 0x67, 0x64, 0x75, 0x10, 0x0b, + 0x12, 0x13, 0x0a, 0x0f, 0x61, 0x6c, 0x69, 0x5f, 0x63, 0x6e, 0x5f, 0x68, 0x6f, 0x6e, 0x67, 0x6b, + 0x6f, 0x6e, 0x67, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, + 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0d, 0x12, 0x16, 0x0a, + 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, + 0x74, 0x5f, 0x32, 0x10, 0x0e, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, + 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x0f, 0x12, 0x16, 0x0a, + 0x12, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, + 0x74, 0x5f, 0x35, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x6c, 0x69, 0x5f, 0x61, 0x70, 0x5f, + 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x11, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x6c, 0x69, + 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, + 0x12, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x75, 0x73, 0x5f, 0x77, 0x65, 0x73, 0x74, + 0x5f, 0x31, 0x10, 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x75, 0x73, 0x5f, 0x65, + 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x6c, 0x69, 0x5f, 0x65, + 0x75, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x5f, 0x31, 0x10, 0x15, 0x12, 0x11, 0x0a, + 0x0d, 0x61, 0x6c, 0x69, 0x5f, 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x16, + 0x2a, 0xc1, 0x03, 0x0a, 0x0f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0a, 0x0a, 0x06, 0x74, 0x63, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x62, 0x61, 0x6e, 0x67, 0x6b, 0x6f, + 0x6b, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x62, 0x65, 0x69, + 0x6a, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, + 0x63, 0x68, 0x65, 0x6e, 0x67, 0x64, 0x75, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, 0x5f, + 0x61, 0x70, 0x5f, 0x63, 0x68, 0x6f, 0x6e, 0x67, 0x71, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x12, 0x13, + 0x0a, 0x0f, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x67, 0x75, 0x61, 0x6e, 0x67, 0x7a, 0x68, 0x6f, + 0x75, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x68, 0x6f, 0x6e, + 0x67, 0x6b, 0x6f, 0x6e, 0x67, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x61, 0x70, + 0x5f, 0x6a, 0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x63, + 0x5f, 0x61, 0x70, 0x5f, 0x6d, 0x75, 0x6d, 0x62, 0x61, 0x69, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, + 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x61, 0x6e, 0x6a, 0x69, 0x6e, 0x67, 0x10, 0x09, 0x12, + 0x0f, 0x0a, 0x0b, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x65, 0x6f, 0x75, 0x6c, 0x10, 0x0a, + 0x12, 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, 0x61, 0x6e, 0x67, 0x68, + 0x61, 0x69, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, + 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x5f, 0x66, 0x73, 0x69, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, + 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x68, 0x65, 0x6e, 0x7a, 0x68, 0x65, 0x6e, 0x5f, 0x66, + 0x73, 0x69, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x69, + 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x74, 0x63, 0x5f, + 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x79, 0x6f, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x74, 0x63, + 0x5f, 0x65, 0x75, 0x5f, 0x66, 0x72, 0x61, 0x6e, 0x6b, 0x66, 0x75, 0x72, 0x74, 0x10, 0x10, 0x12, + 0x10, 0x0a, 0x0c, 0x74, 0x63, 0x5f, 0x65, 0x75, 0x5f, 0x6d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x10, + 0x11, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x61, 0x73, 0x68, 0x62, 0x75, + 0x72, 0x6e, 0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x73, 0x69, + 0x6c, 0x69, 0x63, 0x6f, 0x6e, 0x76, 0x61, 0x6c, 0x6c, 0x65, 0x79, 0x10, 0x13, 0x12, 0x11, 0x0a, + 0x0d, 0x74, 0x63, 0x5f, 0x6e, 0x61, 0x5f, 0x74, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x10, 0x14, + 0x12, 0x12, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x73, 0x61, 0x6f, 0x70, 0x61, 0x75, + 0x6c, 0x6f, 0x10, 0x15, 0x2a, 0xfb, 0x01, 0x0a, 0x0e, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69, 0x52, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0a, 0x0a, 0x06, 0x68, 0x77, 0x5f, 0x61, 0x6c, + 0x6c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, + 0x74, 0x68, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, + 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, + 0x63, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, + 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x04, 0x12, 0x10, + 0x0a, 0x0c, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x05, + 0x12, 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x77, + 0x65, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, + 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x07, 0x12, 0x15, + 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, + 0x74, 0x5f, 0x32, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x68, 0x77, 0x5f, 0x61, 0x70, 0x5f, 0x73, + 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, + 0x68, 0x77, 0x5f, 0x61, 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x0a, 0x12, + 0x11, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x63, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x32, + 0x10, 0x0b, 0x2a, 0x1a, 0x0a, 0x0b, 0x4b, 0x38, 0x53, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x6b, 0x38, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x2a, 0xcd, + 0x03, 0x0a, 0x0b, 0x41, 0x77, 0x73, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x0b, + 0x0a, 0x07, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x61, + 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x11, + 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, + 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x77, 0x65, 0x73, 0x74, + 0x5f, 0x31, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x75, 0x73, 0x5f, 0x77, + 0x65, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x61, + 0x66, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x61, + 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x06, 0x12, 0x12, + 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, + 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, + 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x33, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, + 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, + 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x72, + 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, + 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x32, + 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x70, 0x5f, 0x73, 0x6f, 0x75, + 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x77, + 0x73, 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x5f, 0x31, 0x10, 0x0d, + 0x12, 0x14, 0x0a, 0x10, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, + 0x61, 0x6c, 0x5f, 0x31, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, + 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, + 0x5f, 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x32, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, + 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x11, + 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x77, 0x65, 0x73, 0x74, 0x5f, + 0x33, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x75, 0x5f, 0x6e, 0x6f, + 0x72, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x6d, + 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x31, 0x10, 0x14, 0x12, 0x11, 0x0a, 0x0d, 0x61, + 0x77, 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x31, 0x10, 0x15, 0x32, 0x79, + 0x0a, 0x0d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, + 0x68, 0x92, 0x41, 0x65, 0x12, 0x1e, 0xe6, 0x89, 0x80, 0xe6, 0x9c, 0x89, 0xe4, 0xba, 0x91, 0xe7, + 0xa7, 0x9f, 0xe6, 0x88, 0xb7, 0xe7, 0x9a, 0x84, 0xe8, 0xae, 0xa4, 0xe8, 0xaf, 0x81, 0xe6, 0x9c, + 0x8d, 0xe5, 0x8a, 0xa1, 0x1a, 0x43, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x50, 0x43, 0x4d, 0x12, + 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x67, 0x69, + 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x63, 0x6e, 0x2f, 0x4a, 0x43, 0x43, + 0x45, 0x2f, 0x50, 0x43, 0x4d, 0x2e, 0x67, 0x69, 0x74, 0x42, 0x1d, 0x5a, 0x1b, 0x50, 0x43, 0x4d, + 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x3b, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_idl_pbtenant_tenant_proto_rawDescOnce sync.Once - file_idl_pbtenant_tenant_proto_rawDescData = file_idl_pbtenant_tenant_proto_rawDesc + file_idl_tenant_proto_rawDescOnce sync.Once + file_idl_tenant_proto_rawDescData = file_idl_tenant_proto_rawDesc ) -func file_idl_pbtenant_tenant_proto_rawDescGZIP() []byte { - file_idl_pbtenant_tenant_proto_rawDescOnce.Do(func() { - file_idl_pbtenant_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_pbtenant_tenant_proto_rawDescData) +func file_idl_tenant_proto_rawDescGZIP() []byte { + file_idl_tenant_proto_rawDescOnce.Do(func() { + file_idl_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_tenant_proto_rawDescData) }) - return file_idl_pbtenant_tenant_proto_rawDescData + return file_idl_tenant_proto_rawDescData } -var file_idl_pbtenant_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_idl_pbtenant_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_idl_pbtenant_tenant_proto_goTypes = []interface{}{ - (CloudProvider)(0), // 0: pbtenant.CloudProvider - (CloudProduct)(0), // 1: pbtenant.CloudProduct - (AliRegionId)(0), // 2: pbtenant.AliRegionId - (TencentRegionId)(0), // 3: pbtenant.TencentRegionId - (HuaweiRegionId)(0), // 4: pbtenant.HuaweiRegionId - (K8SRegionId)(0), // 5: pbtenant.K8SRegionId - (AwsRegionId)(0), // 6: pbtenant.AwsRegionId - (*CloudConfigs)(nil), // 7: pbtenant.CloudConfigs - (*CloudConfig)(nil), // 8: pbtenant.CloudConfig - (*Region)(nil), // 9: pbtenant.Region +var file_idl_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_idl_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_idl_tenant_proto_goTypes = []interface{}{ + (CloudProvider)(0), // 0: tenant.CloudProvider + (CloudProduct)(0), // 1: tenant.CloudProduct + (AliRegionId)(0), // 2: tenant.AliRegionId + (TencentRegionId)(0), // 3: tenant.TencentRegionId + (HuaweiRegionId)(0), // 4: tenant.HuaweiRegionId + (K8SRegionId)(0), // 5: tenant.K8SRegionId + (AwsRegionId)(0), // 6: tenant.AwsRegionId + (*CloudConfigs)(nil), // 7: tenant.CloudConfigs + (*CloudConfig)(nil), // 8: tenant.CloudConfig + (*Region)(nil), // 9: tenant.Region } -var file_idl_pbtenant_tenant_proto_depIdxs = []int32{ - 8, // 0: pbtenant.CloudConfigs.configs:type_name -> pbtenant.CloudConfig - 0, // 1: pbtenant.CloudConfig.provider:type_name -> pbtenant.CloudProvider +var file_idl_tenant_proto_depIdxs = []int32{ + 8, // 0: tenant.CloudConfigs.configs:type_name -> tenant.CloudConfig + 0, // 1: tenant.CloudConfig.provider:type_name -> tenant.CloudProvider 2, // [2:2] is the sub-list for method output_type 2, // [2:2] is the sub-list for method input_type 2, // [2:2] is the sub-list for extension type_name @@ -989,13 +987,13 @@ var file_idl_pbtenant_tenant_proto_depIdxs = []int32{ 0, // [0:2] is the sub-list for field type_name } -func init() { file_idl_pbtenant_tenant_proto_init() } -func file_idl_pbtenant_tenant_proto_init() { - if File_idl_pbtenant_tenant_proto != nil { +func init() { file_idl_tenant_proto_init() } +func file_idl_tenant_proto_init() { + if File_idl_tenant_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_idl_pbtenant_tenant_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_idl_tenant_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CloudConfigs); i { case 0: return &v.state @@ -1007,7 +1005,7 @@ func file_idl_pbtenant_tenant_proto_init() { return nil } } - file_idl_pbtenant_tenant_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_idl_tenant_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CloudConfig); i { case 0: return &v.state @@ -1019,7 +1017,7 @@ func file_idl_pbtenant_tenant_proto_init() { return nil } } - file_idl_pbtenant_tenant_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_idl_tenant_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Region); i { case 0: return &v.state @@ -1036,19 +1034,19 @@ func file_idl_pbtenant_tenant_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_idl_pbtenant_tenant_proto_rawDesc, + RawDescriptor: file_idl_tenant_proto_rawDesc, NumEnums: 7, NumMessages: 3, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_idl_pbtenant_tenant_proto_goTypes, - DependencyIndexes: file_idl_pbtenant_tenant_proto_depIdxs, - EnumInfos: file_idl_pbtenant_tenant_proto_enumTypes, - MessageInfos: file_idl_pbtenant_tenant_proto_msgTypes, + GoTypes: file_idl_tenant_proto_goTypes, + DependencyIndexes: file_idl_tenant_proto_depIdxs, + EnumInfos: file_idl_tenant_proto_enumTypes, + MessageInfos: file_idl_tenant_proto_msgTypes, }.Build() - File_idl_pbtenant_tenant_proto = out.File - file_idl_pbtenant_tenant_proto_rawDesc = nil - file_idl_pbtenant_tenant_proto_goTypes = nil - file_idl_pbtenant_tenant_proto_depIdxs = nil + File_idl_tenant_proto = out.File + file_idl_tenant_proto_rawDesc = nil + file_idl_tenant_proto_goTypes = nil + file_idl_tenant_proto_depIdxs = nil } diff --git a/lan_trans/idl/pbtenant/tenant_grpc.pb.go b/tenant/gen/idl/tenant_grpc.pb.go similarity index 94% rename from lan_trans/idl/pbtenant/tenant_grpc.pb.go rename to tenant/gen/idl/tenant_grpc.pb.go index 1fd0710c..00d106c9 100644 --- a/lan_trans/idl/pbtenant/tenant_grpc.pb.go +++ b/tenant/gen/idl/tenant_grpc.pb.go @@ -2,9 +2,9 @@ // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc (unknown) -// source: idl/pbtenant/tenant.proto +// source: idl/tenant.proto -package pbtenant +package tenantpb import ( grpc "google.golang.org/grpc" @@ -57,9 +57,9 @@ func RegisterTenantServiceServer(s grpc.ServiceRegistrar, srv TenantServiceServe // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var TenantService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "pbtenant.TenantService", + ServiceName: "tenant.TenantService", HandlerType: (*TenantServiceServer)(nil), Methods: []grpc.MethodDesc{}, Streams: []grpc.StreamDesc{}, - Metadata: "idl/pbtenant/tenant.proto", + Metadata: "idl/tenant.proto", } diff --git a/lan_trans/openapiv2/idl/pbtenant/tenant.swagger.json b/tenant/gen/openapiv2/idl/tenant.swagger.json similarity index 82% rename from lan_trans/openapiv2/idl/pbtenant/tenant.swagger.json rename to tenant/gen/openapiv2/idl/tenant.swagger.json index 0a73b355..99e1518b 100644 --- a/lan_trans/openapiv2/idl/pbtenant/tenant.swagger.json +++ b/tenant/gen/openapiv2/idl/tenant.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "idl/pbtenant/tenant.proto", + "title": "idl/tenant.proto", "version": "version not set" }, "consumes": [ @@ -15,11 +15,14 @@ "protobufAny": { "type": "object", "properties": { - "@type": { + "typeUrl": { "type": "string" + }, + "value": { + "type": "string", + "format": "byte" } - }, - "additionalProperties": {} + } }, "rpcStatus": { "type": "object", diff --git a/idl/pbtenant/tenant.proto b/tenant/idl/tenant.proto similarity index 98% rename from idl/pbtenant/tenant.proto rename to tenant/idl/tenant.proto index 062bc374..63dc967e 100644 --- a/idl/pbtenant/tenant.proto +++ b/tenant/idl/tenant.proto @@ -1,7 +1,7 @@ syntax = "proto3"; -package pbtenant; +package tenant; -option go_package = "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant"; +option go_package = "PCM/tenant/idl/gen;tenantpb"; import "google/api/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; diff --git a/vm/buf.gen.yaml b/vm/buf.gen.yaml new file mode 100644 index 00000000..f5e58160 --- /dev/null +++ b/vm/buf.gen.yaml @@ -0,0 +1,17 @@ +version: v1 +plugins: + - name: go + out: gen + opt: + - paths=source_relative + - name: go-grpc + out: gen + opt: + - paths=source_relative + - name: grpc-gateway + out: gen + opt: + - paths=source_relative + - grpc_api_configuration=idl/ecs.yaml + - name: openapiv2 + out: gen/openapiv2 \ No newline at end of file diff --git a/vm/buf.yaml b/vm/buf.yaml new file mode 100644 index 00000000..ea7eb016 --- /dev/null +++ b/vm/buf.yaml @@ -0,0 +1,13 @@ +version: v1 +name: buf.build/JCCE/PCM +breaking: + use: + - FILE +lint: + use: + - DEFAULT +# ignore: +# - google/type/datetime.proto +deps: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway \ No newline at end of file diff --git a/lan_trans/idl/pbecs/ecs.pb.go b/vm/gen/idl/ecs.pb.go similarity index 55% rename from lan_trans/idl/pbecs/ecs.pb.go rename to vm/gen/idl/ecs.pb.go index 271027e3..1a84f675 100644 --- a/lan_trans/idl/pbecs/ecs.pb.go +++ b/vm/gen/idl/ecs.pb.go @@ -2,12 +2,11 @@ // versions: // protoc-gen-go v1.28.0 // protoc (unknown) -// source: idl/pbecs/ecs.proto +// source: idl/ecs.proto -package pbecs +package ecspb import ( - pbtenant "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -22,7 +21,68 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -//网络计费类型 +// 云提供商 +type CloudProvider int32 + +const ( + // 0 - 阿里云 + CloudProvider_ali CloudProvider = 0 + // 1 - 腾讯云 + CloudProvider_tencent CloudProvider = 1 + // 2 - 华为云 + CloudProvider_huawei CloudProvider = 2 + // 3 - K8S + CloudProvider_k8s CloudProvider = 3 + // 3 - Harvester + CloudProvider_harvester CloudProvider = 4 +) + +// Enum value maps for CloudProvider. +var ( + CloudProvider_name = map[int32]string{ + 0: "ali", + 1: "tencent", + 2: "huawei", + 3: "k8s", + 4: "harvester", + } + CloudProvider_value = map[string]int32{ + "ali": 0, + "tencent": 1, + "huawei": 2, + "k8s": 3, + "harvester": 4, + } +) + +func (x CloudProvider) Enum() *CloudProvider { + p := new(CloudProvider) + *p = x + return p +} + +func (x CloudProvider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudProvider) Descriptor() protoreflect.EnumDescriptor { + return file_idl_ecs_proto_enumTypes[0].Descriptor() +} + +func (CloudProvider) Type() protoreflect.EnumType { + return &file_idl_ecs_proto_enumTypes[0] +} + +func (x CloudProvider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudProvider.Descriptor instead. +func (CloudProvider) EnumDescriptor() ([]byte, []int) { + return file_idl_ecs_proto_rawDescGZIP(), []int{0} +} + +// 网络计费类型 type InternetChargeType int32 const ( @@ -55,11 +115,11 @@ func (x InternetChargeType) String() string { } func (InternetChargeType) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbecs_ecs_proto_enumTypes[0].Descriptor() + return file_idl_ecs_proto_enumTypes[1].Descriptor() } func (InternetChargeType) Type() protoreflect.EnumType { - return &file_idl_pbecs_ecs_proto_enumTypes[0] + return &file_idl_ecs_proto_enumTypes[1] } func (x InternetChargeType) Number() protoreflect.EnumNumber { @@ -68,10 +128,10 @@ func (x InternetChargeType) Number() protoreflect.EnumNumber { // Deprecated: Use InternetChargeType.Descriptor instead. func (InternetChargeType) EnumDescriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{0} + return file_idl_ecs_proto_rawDescGZIP(), []int{1} } -//虚拟机状态操作 +// 虚拟机状态操作 type ActionType int32 const ( @@ -108,11 +168,11 @@ func (x ActionType) String() string { } func (ActionType) Descriptor() protoreflect.EnumDescriptor { - return file_idl_pbecs_ecs_proto_enumTypes[1].Descriptor() + return file_idl_ecs_proto_enumTypes[2].Descriptor() } func (ActionType) Type() protoreflect.EnumType { - return &file_idl_pbecs_ecs_proto_enumTypes[1] + return &file_idl_ecs_proto_enumTypes[2] } func (x ActionType) Number() protoreflect.EnumNumber { @@ -121,17 +181,17 @@ func (x ActionType) Number() protoreflect.EnumNumber { // Deprecated: Use ActionType.Descriptor instead. func (ActionType) EnumDescriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{1} + return file_idl_ecs_proto_rawDescGZIP(), []int{2} } -//ECS 实例 +// ECS 实例 type EcsInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 实例id @@ -174,7 +234,7 @@ type EcsInstance struct { func (x *EcsInstance) Reset() { *x = EcsInstance{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[0] + mi := &file_idl_ecs_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -187,7 +247,7 @@ func (x *EcsInstance) String() string { func (*EcsInstance) ProtoMessage() {} func (x *EcsInstance) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[0] + mi := &file_idl_ecs_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -200,14 +260,14 @@ func (x *EcsInstance) ProtoReflect() protoreflect.Message { // Deprecated: Use EcsInstance.ProtoReflect.Descriptor instead. func (*EcsInstance) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{0} + return file_idl_ecs_proto_rawDescGZIP(), []int{0} } -func (x *EcsInstance) GetProvider() pbtenant.CloudProvider { +func (x *EcsInstance) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *EcsInstance) GetAccountName() string { @@ -336,7 +396,7 @@ func (x *EcsInstance) GetNamespace() string { return "" } -//创建多家云ECS入参 +// 创建多家云ECS入参 type CreateEcsMultipleReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -348,7 +408,7 @@ type CreateEcsMultipleReq struct { func (x *CreateEcsMultipleReq) Reset() { *x = CreateEcsMultipleReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[1] + mi := &file_idl_ecs_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -361,7 +421,7 @@ func (x *CreateEcsMultipleReq) String() string { func (*CreateEcsMultipleReq) ProtoMessage() {} func (x *CreateEcsMultipleReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[1] + mi := &file_idl_ecs_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -374,7 +434,7 @@ func (x *CreateEcsMultipleReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEcsMultipleReq.ProtoReflect.Descriptor instead. func (*CreateEcsMultipleReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{1} + return file_idl_ecs_proto_rawDescGZIP(), []int{1} } func (x *CreateEcsMultipleReq) GetCreateEcsReqs() []*CreateEcsReq { @@ -384,7 +444,7 @@ func (x *CreateEcsMultipleReq) GetCreateEcsReqs() []*CreateEcsReq { return nil } -//创建多家云ECS返回值 +// 创建多家云ECS返回值 type CreateEcsMultipleResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -399,7 +459,7 @@ type CreateEcsMultipleResp struct { func (x *CreateEcsMultipleResp) Reset() { *x = CreateEcsMultipleResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[2] + mi := &file_idl_ecs_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -412,7 +472,7 @@ func (x *CreateEcsMultipleResp) String() string { func (*CreateEcsMultipleResp) ProtoMessage() {} func (x *CreateEcsMultipleResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[2] + mi := &file_idl_ecs_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -425,7 +485,7 @@ func (x *CreateEcsMultipleResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEcsMultipleResp.ProtoReflect.Descriptor instead. func (*CreateEcsMultipleResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{2} + return file_idl_ecs_proto_rawDescGZIP(), []int{2} } func (x *CreateEcsMultipleResp) GetRequestId() []string { @@ -442,14 +502,14 @@ func (x *CreateEcsMultipleResp) GetFinished() bool { return false } -//创建ECS入参 +// 创建ECS入参 type CreateEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 地域,数据中心 @@ -479,7 +539,7 @@ type CreateEcsReq struct { //数据盘N的云盘种类。取值范围:cloud_efficiency:高效云盘;cloud_ssd:SSD云盘;cloud_essd:ESSD云盘;cloud:普通云盘。 Category string `protobuf:"bytes,15,opt,name=category,proto3" json:"category,omitempty"` //网络计费类型。取值范围:PayByBandwidth:按固定带宽计费。PayByTraffic(默认):按使用流量计费 - InternetChargeType InternetChargeType `protobuf:"varint,16,opt,name=internet_charge_type,json=internetChargeType,proto3,enum=pbecs.InternetChargeType" json:"internet_charge_type,omitempty"` + InternetChargeType InternetChargeType `protobuf:"varint,16,opt,name=internet_charge_type,json=internetChargeType,proto3,enum=ecs.InternetChargeType" json:"internet_charge_type,omitempty"` //公网入带宽最大值,单位为Mbit/s。创建的实例如果参数InternetMaxBandwidthOut的值大于0,则自动为实例分配公网IP。 InternetMaxBandwidthOut int32 `protobuf:"varint,17,opt,name=internet_max_bandwidth_out,json=internetMaxBandwidthOut,proto3" json:"internet_max_bandwidth_out,omitempty"` // vpc id 华为云必需 @@ -530,7 +590,7 @@ type CreateEcsReq struct { func (x *CreateEcsReq) Reset() { *x = CreateEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[3] + mi := &file_idl_ecs_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -543,7 +603,7 @@ func (x *CreateEcsReq) String() string { func (*CreateEcsReq) ProtoMessage() {} func (x *CreateEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[3] + mi := &file_idl_ecs_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -556,14 +616,14 @@ 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{3} + return file_idl_ecs_proto_rawDescGZIP(), []int{3} } -func (x *CreateEcsReq) GetProvider() pbtenant.CloudProvider { +func (x *CreateEcsReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *CreateEcsReq) GetAccountName() string { @@ -825,7 +885,7 @@ func (x *CreateEcsReq) GetVmTemplateVersion() string { return "" } -//系统磁盘 +// 系统磁盘 type SystemDisk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -848,7 +908,7 @@ type SystemDisk struct { func (x *SystemDisk) Reset() { *x = SystemDisk{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[4] + mi := &file_idl_ecs_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -861,7 +921,7 @@ func (x *SystemDisk) String() string { func (*SystemDisk) ProtoMessage() {} func (x *SystemDisk) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[4] + mi := &file_idl_ecs_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -874,7 +934,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{4} + return file_idl_ecs_proto_rawDescGZIP(), []int{4} } func (x *SystemDisk) GetSize() string { @@ -919,14 +979,14 @@ func (x *SystemDisk) GetAutoSnapshotPolicyId() string { return "" } -//创建ECS返回值 +// 创建ECS返回值 type CreateEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -946,7 +1006,7 @@ type CreateEcsResp struct { func (x *CreateEcsResp) Reset() { *x = CreateEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[5] + mi := &file_idl_ecs_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +1019,7 @@ func (x *CreateEcsResp) String() string { func (*CreateEcsResp) ProtoMessage() {} func (x *CreateEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[5] + mi := &file_idl_ecs_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,14 +1032,14 @@ 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{5} + return file_idl_ecs_proto_rawDescGZIP(), []int{5} } -func (x *CreateEcsResp) GetProvider() pbtenant.CloudProvider { +func (x *CreateEcsResp) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *CreateEcsResp) GetAccountName() string { @@ -1031,14 +1091,14 @@ func (x *CreateEcsResp) GetFinished() bool { return false } -//删除ECS入参 +// 删除ECS入参 type DeleteEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 地域,数据中心 @@ -1071,7 +1131,7 @@ type DeleteEcsReq struct { func (x *DeleteEcsReq) Reset() { *x = DeleteEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[6] + mi := &file_idl_ecs_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1084,7 +1144,7 @@ func (x *DeleteEcsReq) String() string { func (*DeleteEcsReq) ProtoMessage() {} func (x *DeleteEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[6] + mi := &file_idl_ecs_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1097,14 +1157,14 @@ 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{6} + return file_idl_ecs_proto_rawDescGZIP(), []int{6} } -func (x *DeleteEcsReq) GetProvider() pbtenant.CloudProvider { +func (x *DeleteEcsReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *DeleteEcsReq) GetAccountName() string { @@ -1184,14 +1244,14 @@ func (x *DeleteEcsReq) GetDiskName() string { return "" } -//删除ECS返回值 +// 删除ECS返回值 type DeleteEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -1203,7 +1263,7 @@ type DeleteEcsResp struct { func (x *DeleteEcsResp) Reset() { *x = DeleteEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[7] + mi := &file_idl_ecs_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1276,7 @@ func (x *DeleteEcsResp) String() string { func (*DeleteEcsResp) ProtoMessage() {} func (x *DeleteEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[7] + mi := &file_idl_ecs_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,14 +1289,14 @@ 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{7} + return file_idl_ecs_proto_rawDescGZIP(), []int{7} } -func (x *DeleteEcsResp) GetProvider() pbtenant.CloudProvider { +func (x *DeleteEcsResp) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *DeleteEcsResp) GetAccountName() string { @@ -1260,14 +1320,14 @@ func (x *DeleteEcsResp) GetRequestId() string { return "" } -//更新ECS入参 +// 更新ECS入参 type UpdateEcsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云类型 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账号名称 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 地域,数据中心 @@ -1298,7 +1358,7 @@ type UpdateEcsReq struct { func (x *UpdateEcsReq) Reset() { *x = UpdateEcsReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[8] + mi := &file_idl_ecs_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1311,7 +1371,7 @@ func (x *UpdateEcsReq) String() string { func (*UpdateEcsReq) ProtoMessage() {} func (x *UpdateEcsReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[8] + mi := &file_idl_ecs_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1324,14 +1384,14 @@ 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{8} + return file_idl_ecs_proto_rawDescGZIP(), []int{8} } -func (x *UpdateEcsReq) GetProvider() pbtenant.CloudProvider { +func (x *UpdateEcsReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *UpdateEcsReq) GetAccountName() string { @@ -1418,14 +1478,14 @@ func (x *UpdateEcsReq) GetIsRestart() bool { return false } -//更新ECS返回值 +// 更新ECS返回值 type UpdateEcsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -1437,7 +1497,7 @@ type UpdateEcsResp struct { func (x *UpdateEcsResp) Reset() { *x = UpdateEcsResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[9] + mi := &file_idl_ecs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1450,7 +1510,7 @@ func (x *UpdateEcsResp) String() string { func (*UpdateEcsResp) ProtoMessage() {} func (x *UpdateEcsResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[9] + mi := &file_idl_ecs_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1463,14 +1523,14 @@ 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{9} + return file_idl_ecs_proto_rawDescGZIP(), []int{9} } -func (x *UpdateEcsResp) GetProvider() pbtenant.CloudProvider { +func (x *UpdateEcsResp) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *UpdateEcsResp) GetAccountName() string { @@ -1494,14 +1554,14 @@ func (x *UpdateEcsResp) GetRequestId() string { return "" } -//查询ECS入参 +// 查询ECS入参 type ListDetailReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -1520,7 +1580,7 @@ type ListDetailReq struct { func (x *ListDetailReq) Reset() { *x = ListDetailReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[10] + mi := &file_idl_ecs_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1533,7 +1593,7 @@ func (x *ListDetailReq) String() string { func (*ListDetailReq) ProtoMessage() {} func (x *ListDetailReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[10] + mi := &file_idl_ecs_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1546,14 +1606,14 @@ 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{10} + return file_idl_ecs_proto_rawDescGZIP(), []int{10} } -func (x *ListDetailReq) GetProvider() pbtenant.CloudProvider { +func (x *ListDetailReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *ListDetailReq) GetAccountName() string { @@ -1598,7 +1658,7 @@ func (x *ListDetailReq) GetNamespace() string { return "" } -//查询ECS返回值 +// 查询ECS返回值 type ListDetailResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1621,7 +1681,7 @@ type ListDetailResp struct { func (x *ListDetailResp) Reset() { *x = ListDetailResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[11] + mi := &file_idl_ecs_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1634,7 +1694,7 @@ func (x *ListDetailResp) String() string { func (*ListDetailResp) ProtoMessage() {} func (x *ListDetailResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[11] + mi := &file_idl_ecs_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1647,7 +1707,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{11} + return file_idl_ecs_proto_rawDescGZIP(), []int{11} } func (x *ListDetailResp) GetEcses() []*EcsInstance { @@ -1698,7 +1758,7 @@ type ActionReq struct { unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -1708,13 +1768,13 @@ type ActionReq struct { //虚拟机名称 VmName string `protobuf:"bytes,5,opt,name=vm_name,json=vmName,proto3" json:"vm_name,omitempty"` //虚拟机操作状态 - ActionType ActionType `protobuf:"varint,6,opt,name=action_type,json=actionType,proto3,enum=pbecs.ActionType" json:"action_type,omitempty"` + ActionType ActionType `protobuf:"varint,6,opt,name=action_type,json=actionType,proto3,enum=ecs.ActionType" json:"action_type,omitempty"` } func (x *ActionReq) Reset() { *x = ActionReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[12] + mi := &file_idl_ecs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1727,7 +1787,7 @@ func (x *ActionReq) String() string { func (*ActionReq) ProtoMessage() {} func (x *ActionReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[12] + mi := &file_idl_ecs_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1740,14 +1800,14 @@ func (x *ActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionReq.ProtoReflect.Descriptor instead. func (*ActionReq) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{12} + return file_idl_ecs_proto_rawDescGZIP(), []int{12} } -func (x *ActionReq) GetProvider() pbtenant.CloudProvider { +func (x *ActionReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *ActionReq) GetAccountName() string { @@ -1791,7 +1851,7 @@ type ActionResp struct { unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` // Ecs 机器集合 @@ -1805,7 +1865,7 @@ type ActionResp struct { func (x *ActionResp) Reset() { *x = ActionResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[13] + mi := &file_idl_ecs_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1818,7 +1878,7 @@ func (x *ActionResp) String() string { func (*ActionResp) ProtoMessage() {} func (x *ActionResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[13] + mi := &file_idl_ecs_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1831,14 +1891,14 @@ func (x *ActionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionResp.ProtoReflect.Descriptor instead. func (*ActionResp) Descriptor() ([]byte, []int) { - return file_idl_pbecs_ecs_proto_rawDescGZIP(), []int{13} + return file_idl_ecs_proto_rawDescGZIP(), []int{13} } -func (x *ActionResp) GetProvider() pbtenant.CloudProvider { +func (x *ActionResp) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } func (x *ActionResp) GetAccountName() string { @@ -1875,13 +1935,13 @@ type ListReq struct { unknownFields protoimpl.UnknownFields // 云名称 - Provider pbtenant.CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=pbtenant.CloudProvider" json:"provider,omitempty"` + Provider CloudProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=ecs.CloudProvider" json:"provider,omitempty"` } func (x *ListReq) Reset() { *x = ListReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[14] + mi := &file_idl_ecs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1894,7 +1954,7 @@ func (x *ListReq) String() string { func (*ListReq) ProtoMessage() {} func (x *ListReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[14] + mi := &file_idl_ecs_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1907,14 +1967,14 @@ 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{14} + return file_idl_ecs_proto_rawDescGZIP(), []int{14} } -func (x *ListReq) GetProvider() pbtenant.CloudProvider { +func (x *ListReq) GetProvider() CloudProvider { if x != nil { return x.Provider } - return pbtenant.CloudProvider(0) + return CloudProvider_ali } type ListResp struct { @@ -1929,7 +1989,7 @@ type ListResp struct { func (x *ListResp) Reset() { *x = ListResp{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[15] + mi := &file_idl_ecs_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1942,7 +2002,7 @@ func (x *ListResp) String() string { func (*ListResp) ProtoMessage() {} func (x *ListResp) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[15] + mi := &file_idl_ecs_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1955,7 +2015,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{15} + return file_idl_ecs_proto_rawDescGZIP(), []int{15} } func (x *ListResp) GetEcses() []*EcsInstance { @@ -1974,7 +2034,7 @@ type ListAllReq struct { func (x *ListAllReq) Reset() { *x = ListAllReq{} if protoimpl.UnsafeEnabled { - mi := &file_idl_pbecs_ecs_proto_msgTypes[16] + mi := &file_idl_ecs_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1987,7 +2047,7 @@ func (x *ListAllReq) String() string { func (*ListAllReq) ProtoMessage() {} func (x *ListAllReq) ProtoReflect() protoreflect.Message { - mi := &file_idl_pbecs_ecs_proto_msgTypes[16] + mi := &file_idl_ecs_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2000,453 +2060,434 @@ 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{16} + return file_idl_ecs_proto_rawDescGZIP(), []int{16} } -var File_idl_pbecs_ecs_proto protoreflect.FileDescriptor +var File_idl_ecs_proto protoreflect.FileDescriptor -var file_idl_pbecs_ecs_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x69, 0x64, 0x6c, 0x2f, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x62, 0x65, 0x63, 0x73, 0x1a, 0x19, 0x69, 0x64, - 0x6c, 0x2f, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x04, 0x0a, 0x0b, 0x45, 0x63, 0x73, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 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, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, - 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x49, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, - 0x72, 0x79, 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, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x73, 0x18, - 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x73, 0x12, - 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 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, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 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, 0xca, 0x0a, - 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, +var file_idl_ecs_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x69, 0x64, 0x6c, 0x2f, 0x65, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x03, 0x65, 0x63, 0x73, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xf9, 0x04, 0x0a, 0x0b, 0x45, 0x63, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 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, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x76, 0x70, 0x63, 0x5f, 0x69, + 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x70, 0x63, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x70, 0x75, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, - 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, - 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x64, 0x69, 0x73, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x73, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x1e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x21, 0x0a, 0x0c, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, - 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x12, 0x28, 0x0a, 0x10, 0x76, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x6d, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6d, - 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 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, 0xba, 0x03, 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, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 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, 0xbb, 0x03, 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, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4f, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 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, 0xc1, 0x0a, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, + 0x73, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x30, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x69, 0x73, + 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 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, 0x49, 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, + 0x17, 0x2e, 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, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, + 0x70, 0x75, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, + 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1b, + 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, + 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, + 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x73, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x62, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, + 0x6f, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, + 0x10, 0x76, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6d, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x26, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 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, 0xa0, 0x02, 0x0a, 0x0d, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x65, 0x63, 0x73, 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, 0xb5, 0x03, 0x0a, + 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x63, 0x70, 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x65, - 0x73, 0x74, 0x61, 0x72, 0x74, 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, 0xff, 0x01, 0x0a, 0x0d, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, + 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, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, + 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0xb6, 0x03, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, + 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x9e, + 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, + 0xfa, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xd0, 0x01, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x26, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 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, + 0xe4, 0x01, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x2e, 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, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 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, 0xeb, 0x01, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x76, + 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x65, 0x63, 0x73, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x0b, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x22, 0xc2, 0x01, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x28, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, 0x73, - 0x18, 0x03, 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, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x2a, 0x2e, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x10, 0x02, 0x32, 0xaf, 0x05, 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, 0x12, 0x4d, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x63, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x65, 0x63, 0x73, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x43, 0x43, 0x45, 0x2d, 0x6e, 0x75, 0x64, 0x74, 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, + 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x65, 0x63, 0x73, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 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, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x39, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x63, 0x73, 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, + 0x32, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x05, 0x65, + 0x63, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 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, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x6c, 0x69, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x74, + 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x68, 0x75, 0x61, 0x77, + 0x65, 0x69, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x6b, 0x38, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x65, 0x72, 0x10, 0x04, 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, 0x2a, 0x2e, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x02, 0x32, 0xb2, 0x03, 0x0a, 0x0a, 0x45, 0x63, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x45, 0x63, 0x73, 0x12, 0x19, 0x2e, 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, 0x1a, 0x2e, 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, 0x12, 0x32, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, + 0x12, 0x11, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x63, 0x73, 0x12, 0x11, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x09, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x12, 0x11, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x65, 0x63, + 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x38, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x12, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x07, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x63, 0x73, 0x12, 0x0c, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x2c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x63, 0x73, 0x41, 0x6c, 0x6c, 0x12, + 0x0f, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x1a, 0x0d, 0x2e, 0x65, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x2c, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x63, 0x73, 0x12, 0x0e, 0x2e, 0x65, + 0x63, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x65, + 0x63, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x17, 0x5a, + 0x15, 0x50, 0x43, 0x4d, 0x2f, 0x65, 0x63, 0x73, 0x2f, 0x69, 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, + 0x3b, 0x65, 0x63, 0x73, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_idl_pbecs_ecs_proto_rawDescOnce sync.Once - file_idl_pbecs_ecs_proto_rawDescData = file_idl_pbecs_ecs_proto_rawDesc + file_idl_ecs_proto_rawDescOnce sync.Once + file_idl_ecs_proto_rawDescData = file_idl_ecs_proto_rawDesc ) -func file_idl_pbecs_ecs_proto_rawDescGZIP() []byte { - file_idl_pbecs_ecs_proto_rawDescOnce.Do(func() { - file_idl_pbecs_ecs_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_pbecs_ecs_proto_rawDescData) +func file_idl_ecs_proto_rawDescGZIP() []byte { + file_idl_ecs_proto_rawDescOnce.Do(func() { + file_idl_ecs_proto_rawDescData = protoimpl.X.CompressGZIP(file_idl_ecs_proto_rawDescData) }) - return file_idl_pbecs_ecs_proto_rawDescData + return file_idl_ecs_proto_rawDescData } -var file_idl_pbecs_ecs_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_idl_pbecs_ecs_proto_msgTypes = make([]protoimpl.MessageInfo, 17) -var file_idl_pbecs_ecs_proto_goTypes = []interface{}{ - (InternetChargeType)(0), // 0: pbecs.InternetChargeType - (ActionType)(0), // 1: pbecs.ActionType - (*EcsInstance)(nil), // 2: pbecs.EcsInstance - (*CreateEcsMultipleReq)(nil), // 3: pbecs.CreateEcsMultipleReq - (*CreateEcsMultipleResp)(nil), // 4: pbecs.CreateEcsMultipleResp - (*CreateEcsReq)(nil), // 5: pbecs.CreateEcsReq - (*SystemDisk)(nil), // 6: pbecs.SystemDisk - (*CreateEcsResp)(nil), // 7: pbecs.CreateEcsResp - (*DeleteEcsReq)(nil), // 8: pbecs.DeleteEcsReq - (*DeleteEcsResp)(nil), // 9: pbecs.DeleteEcsResp - (*UpdateEcsReq)(nil), // 10: pbecs.UpdateEcsReq - (*UpdateEcsResp)(nil), // 11: pbecs.UpdateEcsResp - (*ListDetailReq)(nil), // 12: pbecs.ListDetailReq - (*ListDetailResp)(nil), // 13: pbecs.ListDetailResp - (*ActionReq)(nil), // 14: pbecs.ActionReq - (*ActionResp)(nil), // 15: pbecs.ActionResp - (*ListReq)(nil), // 16: pbecs.ListReq - (*ListResp)(nil), // 17: pbecs.ListResp - (*ListAllReq)(nil), // 18: pbecs.ListAllReq - (pbtenant.CloudProvider)(0), // 19: pbtenant.CloudProvider +var file_idl_ecs_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_idl_ecs_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_idl_ecs_proto_goTypes = []interface{}{ + (CloudProvider)(0), // 0: ecs.CloudProvider + (InternetChargeType)(0), // 1: ecs.InternetChargeType + (ActionType)(0), // 2: ecs.ActionType + (*EcsInstance)(nil), // 3: ecs.EcsInstance + (*CreateEcsMultipleReq)(nil), // 4: ecs.CreateEcsMultipleReq + (*CreateEcsMultipleResp)(nil), // 5: ecs.CreateEcsMultipleResp + (*CreateEcsReq)(nil), // 6: ecs.CreateEcsReq + (*SystemDisk)(nil), // 7: ecs.SystemDisk + (*CreateEcsResp)(nil), // 8: ecs.CreateEcsResp + (*DeleteEcsReq)(nil), // 9: ecs.DeleteEcsReq + (*DeleteEcsResp)(nil), // 10: ecs.DeleteEcsResp + (*UpdateEcsReq)(nil), // 11: ecs.UpdateEcsReq + (*UpdateEcsResp)(nil), // 12: ecs.UpdateEcsResp + (*ListDetailReq)(nil), // 13: ecs.ListDetailReq + (*ListDetailResp)(nil), // 14: ecs.ListDetailResp + (*ActionReq)(nil), // 15: ecs.ActionReq + (*ActionResp)(nil), // 16: ecs.ActionResp + (*ListReq)(nil), // 17: ecs.ListReq + (*ListResp)(nil), // 18: ecs.ListResp + (*ListAllReq)(nil), // 19: ecs.ListAllReq } -var file_idl_pbecs_ecs_proto_depIdxs = []int32{ - 19, // 0: pbecs.EcsInstance.provider:type_name -> pbtenant.CloudProvider - 5, // 1: pbecs.CreateEcsMultipleReq.createEcsReqs:type_name -> pbecs.CreateEcsReq - 19, // 2: pbecs.CreateEcsReq.provider:type_name -> pbtenant.CloudProvider - 6, // 3: pbecs.CreateEcsReq.system_disk:type_name -> pbecs.SystemDisk - 0, // 4: pbecs.CreateEcsReq.internet_charge_type:type_name -> pbecs.InternetChargeType - 19, // 5: pbecs.CreateEcsResp.provider:type_name -> pbtenant.CloudProvider - 19, // 6: pbecs.DeleteEcsReq.provider:type_name -> pbtenant.CloudProvider - 19, // 7: pbecs.DeleteEcsResp.provider:type_name -> pbtenant.CloudProvider - 19, // 8: pbecs.UpdateEcsReq.provider:type_name -> pbtenant.CloudProvider - 19, // 9: pbecs.UpdateEcsResp.provider:type_name -> pbtenant.CloudProvider - 19, // 10: pbecs.ListDetailReq.provider:type_name -> pbtenant.CloudProvider - 2, // 11: pbecs.ListDetailResp.ecses:type_name -> pbecs.EcsInstance - 19, // 12: pbecs.ActionReq.provider:type_name -> pbtenant.CloudProvider - 1, // 13: pbecs.ActionReq.action_type:type_name -> pbecs.ActionType - 19, // 14: pbecs.ActionResp.provider:type_name -> pbtenant.CloudProvider - 2, // 15: pbecs.ActionResp.ecses:type_name -> pbecs.EcsInstance - 19, // 16: pbecs.ListReq.provider:type_name -> pbtenant.CloudProvider - 2, // 17: pbecs.ListResp.ecses:type_name -> pbecs.EcsInstance - 3, // 18: pbecs.EcsService.CreateMultipleEcs:input_type -> pbecs.CreateEcsMultipleReq - 5, // 19: pbecs.EcsService.CreateEcs:input_type -> pbecs.CreateEcsReq - 8, // 20: pbecs.EcsService.DeleteEcs:input_type -> pbecs.DeleteEcsReq - 10, // 21: pbecs.EcsService.UpdateEcs:input_type -> pbecs.UpdateEcsReq - 12, // 22: pbecs.EcsService.ListEcsDetail:input_type -> pbecs.ListDetailReq - 16, // 23: pbecs.EcsService.ListEcs:input_type -> pbecs.ListReq - 18, // 24: pbecs.EcsService.ListEcsAll:input_type -> pbecs.ListAllReq - 14, // 25: pbecs.EcsService.ActionEcs:input_type -> pbecs.ActionReq - 4, // 26: pbecs.EcsService.CreateMultipleEcs:output_type -> pbecs.CreateEcsMultipleResp - 7, // 27: pbecs.EcsService.CreateEcs:output_type -> pbecs.CreateEcsResp - 9, // 28: pbecs.EcsService.DeleteEcs:output_type -> pbecs.DeleteEcsResp - 11, // 29: pbecs.EcsService.UpdateEcs:output_type -> pbecs.UpdateEcsResp - 13, // 30: pbecs.EcsService.ListEcsDetail:output_type -> pbecs.ListDetailResp - 17, // 31: pbecs.EcsService.ListEcs:output_type -> pbecs.ListResp - 17, // 32: pbecs.EcsService.ListEcsAll:output_type -> pbecs.ListResp - 15, // 33: pbecs.EcsService.ActionEcs:output_type -> pbecs.ActionResp +var file_idl_ecs_proto_depIdxs = []int32{ + 0, // 0: ecs.EcsInstance.provider:type_name -> ecs.CloudProvider + 6, // 1: ecs.CreateEcsMultipleReq.createEcsReqs:type_name -> ecs.CreateEcsReq + 0, // 2: ecs.CreateEcsReq.provider:type_name -> ecs.CloudProvider + 7, // 3: ecs.CreateEcsReq.system_disk:type_name -> ecs.SystemDisk + 1, // 4: ecs.CreateEcsReq.internet_charge_type:type_name -> ecs.InternetChargeType + 0, // 5: ecs.CreateEcsResp.provider:type_name -> ecs.CloudProvider + 0, // 6: ecs.DeleteEcsReq.provider:type_name -> ecs.CloudProvider + 0, // 7: ecs.DeleteEcsResp.provider:type_name -> ecs.CloudProvider + 0, // 8: ecs.UpdateEcsReq.provider:type_name -> ecs.CloudProvider + 0, // 9: ecs.UpdateEcsResp.provider:type_name -> ecs.CloudProvider + 0, // 10: ecs.ListDetailReq.provider:type_name -> ecs.CloudProvider + 3, // 11: ecs.ListDetailResp.ecses:type_name -> ecs.EcsInstance + 0, // 12: ecs.ActionReq.provider:type_name -> ecs.CloudProvider + 2, // 13: ecs.ActionReq.action_type:type_name -> ecs.ActionType + 0, // 14: ecs.ActionResp.provider:type_name -> ecs.CloudProvider + 3, // 15: ecs.ActionResp.ecses:type_name -> ecs.EcsInstance + 0, // 16: ecs.ListReq.provider:type_name -> ecs.CloudProvider + 3, // 17: ecs.ListResp.ecses:type_name -> ecs.EcsInstance + 4, // 18: ecs.EcsService.CreateMultipleEcs:input_type -> ecs.CreateEcsMultipleReq + 6, // 19: ecs.EcsService.CreateEcs:input_type -> ecs.CreateEcsReq + 9, // 20: ecs.EcsService.DeleteEcs:input_type -> ecs.DeleteEcsReq + 11, // 21: ecs.EcsService.UpdateEcs:input_type -> ecs.UpdateEcsReq + 13, // 22: ecs.EcsService.ListEcsDetail:input_type -> ecs.ListDetailReq + 17, // 23: ecs.EcsService.ListEcs:input_type -> ecs.ListReq + 19, // 24: ecs.EcsService.ListEcsAll:input_type -> ecs.ListAllReq + 15, // 25: ecs.EcsService.ActionEcs:input_type -> ecs.ActionReq + 5, // 26: ecs.EcsService.CreateMultipleEcs:output_type -> ecs.CreateEcsMultipleResp + 8, // 27: ecs.EcsService.CreateEcs:output_type -> ecs.CreateEcsResp + 10, // 28: ecs.EcsService.DeleteEcs:output_type -> ecs.DeleteEcsResp + 12, // 29: ecs.EcsService.UpdateEcs:output_type -> ecs.UpdateEcsResp + 14, // 30: ecs.EcsService.ListEcsDetail:output_type -> ecs.ListDetailResp + 18, // 31: ecs.EcsService.ListEcs:output_type -> ecs.ListResp + 18, // 32: ecs.EcsService.ListEcsAll:output_type -> ecs.ListResp + 16, // 33: ecs.EcsService.ActionEcs:output_type -> ecs.ActionResp 26, // [26:34] is the sub-list for method output_type 18, // [18:26] is the sub-list for method input_type 18, // [18:18] is the sub-list for extension type_name @@ -2454,13 +2495,13 @@ var file_idl_pbecs_ecs_proto_depIdxs = []int32{ 0, // [0:18] is the sub-list for field type_name } -func init() { file_idl_pbecs_ecs_proto_init() } -func file_idl_pbecs_ecs_proto_init() { - if File_idl_pbecs_ecs_proto != nil { +func init() { file_idl_ecs_proto_init() } +func file_idl_ecs_proto_init() { + if File_idl_ecs_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_idl_pbecs_ecs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EcsInstance); i { case 0: return &v.state @@ -2472,7 +2513,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateEcsMultipleReq); i { case 0: return &v.state @@ -2484,7 +2525,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateEcsMultipleResp); i { case 0: return &v.state @@ -2496,7 +2537,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateEcsReq); i { case 0: return &v.state @@ -2508,7 +2549,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SystemDisk); i { case 0: return &v.state @@ -2520,7 +2561,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateEcsResp); i { case 0: return &v.state @@ -2532,7 +2573,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteEcsReq); i { case 0: return &v.state @@ -2544,7 +2585,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteEcsResp); i { case 0: return &v.state @@ -2556,7 +2597,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateEcsReq); i { case 0: return &v.state @@ -2568,7 +2609,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateEcsResp); i { case 0: return &v.state @@ -2580,7 +2621,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDetailReq); i { case 0: return &v.state @@ -2592,7 +2633,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDetailResp); i { case 0: return &v.state @@ -2604,7 +2645,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionReq); i { case 0: return &v.state @@ -2616,7 +2657,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionResp); i { case 0: return &v.state @@ -2628,7 +2669,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReq); i { case 0: return &v.state @@ -2640,7 +2681,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListResp); i { case 0: return &v.state @@ -2652,7 +2693,7 @@ func file_idl_pbecs_ecs_proto_init() { return nil } } - file_idl_pbecs_ecs_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_idl_ecs_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllReq); i { case 0: return &v.state @@ -2669,19 +2710,19 @@ func file_idl_pbecs_ecs_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_idl_pbecs_ecs_proto_rawDesc, - NumEnums: 2, + RawDescriptor: file_idl_ecs_proto_rawDesc, + NumEnums: 3, NumMessages: 17, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_idl_pbecs_ecs_proto_goTypes, - DependencyIndexes: file_idl_pbecs_ecs_proto_depIdxs, - EnumInfos: file_idl_pbecs_ecs_proto_enumTypes, - MessageInfos: file_idl_pbecs_ecs_proto_msgTypes, + GoTypes: file_idl_ecs_proto_goTypes, + DependencyIndexes: file_idl_ecs_proto_depIdxs, + EnumInfos: file_idl_ecs_proto_enumTypes, + MessageInfos: file_idl_ecs_proto_msgTypes, }.Build() - File_idl_pbecs_ecs_proto = out.File - file_idl_pbecs_ecs_proto_rawDesc = nil - file_idl_pbecs_ecs_proto_goTypes = nil - file_idl_pbecs_ecs_proto_depIdxs = nil + File_idl_ecs_proto = out.File + file_idl_ecs_proto_rawDesc = nil + file_idl_ecs_proto_goTypes = nil + file_idl_ecs_proto_depIdxs = nil } diff --git a/lan_trans/idl/pbecs/ecs.pb.gw.go b/vm/gen/idl/ecs.pb.gw.go similarity index 87% rename from lan_trans/idl/pbecs/ecs.pb.gw.go rename to vm/gen/idl/ecs.pb.gw.go index 5e399764..ec8d6fd7 100644 --- a/lan_trans/idl/pbecs/ecs.pb.gw.go +++ b/vm/gen/idl/ecs.pb.gw.go @@ -1,12 +1,12 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: idl/pbecs/ecs.proto +// source: idl/ecs.proto /* -Package pbecs is a reverse proxy. +Package ecspb is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package pbecs +package ecspb import ( "context" @@ -303,13 +303,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/CreateMultipleEcs", runtime.WithHTTPPathPattern("/apis/ecs/createMultiple")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/CreateMultipleEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_CreateMultipleEcs_0(ctx, inboundMarshaler, server, req, pathParams) + 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 { @@ -327,13 +326,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/CreateEcs", runtime.WithHTTPPathPattern("/apis/ecs/create")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/CreateEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_CreateEcs_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_CreateEcs_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 { @@ -351,13 +349,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/DeleteEcs", runtime.WithHTTPPathPattern("/apis/ecs/delete")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/DeleteEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_DeleteEcs_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_DeleteEcs_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 { @@ -375,13 +372,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/UpdateEcs", runtime.WithHTTPPathPattern("/apis/ecs/update")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/UpdateEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_UpdateEcs_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_UpdateEcs_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 { @@ -399,13 +395,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/ListEcsDetail", runtime.WithHTTPPathPattern("/apis/ecs/detail")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/ListEcsDetail") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_ListEcsDetail_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_ListEcsDetail_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 { @@ -423,13 +418,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/ListEcs", runtime.WithHTTPPathPattern("/apis/ecs")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/ListEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_ListEcs_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_ListEcs_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 { @@ -447,13 +441,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/ListEcsAll", runtime.WithHTTPPathPattern("/apis/ecs/all")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/ListEcsAll") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_ListEcsAll_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_ListEcsAll_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 { @@ -471,13 +464,12 @@ func RegisterEcsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbecs.EcsService/ActionEcs", runtime.WithHTTPPathPattern("/apis/ecs/action")) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ecs.EcsService/ActionEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EcsService_ActionEcs_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EcsService_ActionEcs_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 { @@ -534,13 +526,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/CreateMultipleEcs", runtime.WithHTTPPathPattern("/apis/ecs/createMultiple")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/CreateMultipleEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_CreateMultipleEcs_0(ctx, inboundMarshaler, client, req, pathParams) + 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) @@ -555,13 +546,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/CreateEcs", runtime.WithHTTPPathPattern("/apis/ecs/create")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/CreateEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_CreateEcs_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_CreateEcs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -576,13 +566,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/DeleteEcs", runtime.WithHTTPPathPattern("/apis/ecs/delete")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/DeleteEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_DeleteEcs_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_DeleteEcs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -597,13 +586,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/UpdateEcs", runtime.WithHTTPPathPattern("/apis/ecs/update")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/UpdateEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_UpdateEcs_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_UpdateEcs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -618,13 +606,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/ListEcsDetail", runtime.WithHTTPPathPattern("/apis/ecs/detail")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/ListEcsDetail") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_ListEcsDetail_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_ListEcsDetail_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -639,13 +626,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/ListEcs", runtime.WithHTTPPathPattern("/apis/ecs")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/ListEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_ListEcs_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_ListEcs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -660,13 +646,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/ListEcsAll", runtime.WithHTTPPathPattern("/apis/ecs/all")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/ListEcsAll") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_ListEcsAll_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_ListEcsAll_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -681,13 +666,12 @@ func RegisterEcsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/pbecs.EcsService/ActionEcs", runtime.WithHTTPPathPattern("/apis/ecs/action")) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ecs.EcsService/ActionEcs") if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EcsService_ActionEcs_0(ctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_EcsService_ActionEcs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/lan_trans/idl/pbecs/ecs_grpc.pb.go b/vm/gen/idl/ecs_grpc.pb.go similarity index 92% rename from lan_trans/idl/pbecs/ecs_grpc.pb.go rename to vm/gen/idl/ecs_grpc.pb.go index a2b1bcbe..7e71130f 100644 --- a/lan_trans/idl/pbecs/ecs_grpc.pb.go +++ b/vm/gen/idl/ecs_grpc.pb.go @@ -2,9 +2,9 @@ // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc (unknown) -// source: idl/pbecs/ecs.proto +// source: idl/ecs.proto -package pbecs +package ecspb import ( context "context" @@ -50,7 +50,7 @@ func NewEcsServiceClient(cc grpc.ClientConnInterface) EcsServiceClient { 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...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/CreateMultipleEcs", in, out, opts...) if err != nil { return nil, err } @@ -59,7 +59,7 @@ func (c *ecsServiceClient) CreateMultipleEcs(ctx context.Context, in *CreateEcsM 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...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/CreateEcs", in, out, opts...) if err != nil { return nil, err } @@ -68,7 +68,7 @@ func (c *ecsServiceClient) CreateEcs(ctx context.Context, in *CreateEcsReq, opts func (c *ecsServiceClient) DeleteEcs(ctx context.Context, in *DeleteEcsReq, opts ...grpc.CallOption) (*DeleteEcsResp, error) { out := new(DeleteEcsResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/DeleteEcs", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/DeleteEcs", in, out, opts...) if err != nil { return nil, err } @@ -77,7 +77,7 @@ func (c *ecsServiceClient) DeleteEcs(ctx context.Context, in *DeleteEcsReq, opts func (c *ecsServiceClient) UpdateEcs(ctx context.Context, in *UpdateEcsReq, opts ...grpc.CallOption) (*UpdateEcsResp, error) { out := new(UpdateEcsResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/UpdateEcs", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/UpdateEcs", in, out, opts...) if err != nil { return nil, err } @@ -86,7 +86,7 @@ func (c *ecsServiceClient) UpdateEcs(ctx context.Context, in *UpdateEcsReq, opts func (c *ecsServiceClient) ListEcsDetail(ctx context.Context, in *ListDetailReq, opts ...grpc.CallOption) (*ListDetailResp, error) { out := new(ListDetailResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/ListEcsDetail", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/ListEcsDetail", in, out, opts...) if err != nil { return nil, err } @@ -95,7 +95,7 @@ func (c *ecsServiceClient) ListEcsDetail(ctx context.Context, in *ListDetailReq, func (c *ecsServiceClient) ListEcs(ctx context.Context, in *ListReq, opts ...grpc.CallOption) (*ListResp, error) { out := new(ListResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/ListEcs", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/ListEcs", in, out, opts...) if err != nil { return nil, err } @@ -104,7 +104,7 @@ func (c *ecsServiceClient) ListEcs(ctx context.Context, in *ListReq, opts ...grp func (c *ecsServiceClient) ListEcsAll(ctx context.Context, in *ListAllReq, opts ...grpc.CallOption) (*ListResp, error) { out := new(ListResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/ListEcsAll", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/ListEcsAll", in, out, opts...) if err != nil { return nil, err } @@ -113,7 +113,7 @@ func (c *ecsServiceClient) ListEcsAll(ctx context.Context, in *ListAllReq, opts func (c *ecsServiceClient) ActionEcs(ctx context.Context, in *ActionReq, opts ...grpc.CallOption) (*ActionResp, error) { out := new(ActionResp) - err := c.cc.Invoke(ctx, "/pbecs.EcsService/ActionEcs", in, out, opts...) + err := c.cc.Invoke(ctx, "/ecs.EcsService/ActionEcs", in, out, opts...) if err != nil { return nil, err } @@ -194,7 +194,7 @@ func _EcsService_CreateMultipleEcs_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/CreateMultipleEcs", + FullMethod: "/ecs.EcsService/CreateMultipleEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).CreateMultipleEcs(ctx, req.(*CreateEcsMultipleReq)) @@ -212,7 +212,7 @@ func _EcsService_CreateEcs_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/CreateEcs", + FullMethod: "/ecs.EcsService/CreateEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).CreateEcs(ctx, req.(*CreateEcsReq)) @@ -230,7 +230,7 @@ func _EcsService_DeleteEcs_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/DeleteEcs", + FullMethod: "/ecs.EcsService/DeleteEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).DeleteEcs(ctx, req.(*DeleteEcsReq)) @@ -248,7 +248,7 @@ func _EcsService_UpdateEcs_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/UpdateEcs", + FullMethod: "/ecs.EcsService/UpdateEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).UpdateEcs(ctx, req.(*UpdateEcsReq)) @@ -266,7 +266,7 @@ func _EcsService_ListEcsDetail_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/ListEcsDetail", + FullMethod: "/ecs.EcsService/ListEcsDetail", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).ListEcsDetail(ctx, req.(*ListDetailReq)) @@ -284,7 +284,7 @@ func _EcsService_ListEcs_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/ListEcs", + FullMethod: "/ecs.EcsService/ListEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).ListEcs(ctx, req.(*ListReq)) @@ -302,7 +302,7 @@ func _EcsService_ListEcsAll_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/ListEcsAll", + FullMethod: "/ecs.EcsService/ListEcsAll", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).ListEcsAll(ctx, req.(*ListAllReq)) @@ -320,7 +320,7 @@ func _EcsService_ActionEcs_Handler(srv interface{}, ctx context.Context, dec fun } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pbecs.EcsService/ActionEcs", + FullMethod: "/ecs.EcsService/ActionEcs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(EcsServiceServer).ActionEcs(ctx, req.(*ActionReq)) @@ -332,7 +332,7 @@ func _EcsService_ActionEcs_Handler(srv interface{}, ctx context.Context, dec fun // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var EcsService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "pbecs.EcsService", + ServiceName: "ecs.EcsService", HandlerType: (*EcsServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -369,5 +369,5 @@ var EcsService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "idl/pbecs/ecs.proto", + Metadata: "idl/ecs.proto", } diff --git a/vm/gen/openapiv2/idl/ecs.swagger.json b/vm/gen/openapiv2/idl/ecs.swagger.json new file mode 100644 index 00000000..19da0dcf --- /dev/null +++ b/vm/gen/openapiv2/idl/ecs.swagger.json @@ -0,0 +1,546 @@ +{ + "swagger": "2.0", + "info": { + "title": "idl/ecs.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "EcsService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "ecsActionResp": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云名称" + }, + "accountName": { + "type": "string", + "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" + }, + "ecses": { + "type": "array", + "items": { + "$ref": "#/definitions/ecsEcsInstance" + }, + "title": "Ecs 机器集合" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + }, + "status": { + "type": "string", + "title": "vm状态" + } + } + }, + "ecsActionType": { + "type": "string", + "enum": [ + "start", + "stop", + "restart" + ], + "default": "start", + "description": "- start: 启动\n - stop: 停止\n - restart: 重启", + "title": "虚拟机状态操作" + }, + "ecsCloudProvider": { + "type": "string", + "enum": [ + "ali", + "tencent", + "huawei", + "k8s", + "harvester" + ], + "default": "ali", + "description": "- ali: 0 - 阿里云\n - tencent: 1 - 腾讯云\n - huawei: 2 - 华为云\n - k8s: 3 - K8S\n - harvester: 3 - Harvester", + "title": "云提供商" + }, + "ecsCreateEcsMultipleResp": { + "type": "object", + "properties": { + "requestId": { + "type": "array", + "items": { + "type": "string" + }, + "title": "请求ID" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + } + }, + "title": "创建多家云ECS返回值" + }, + "ecsCreateEcsReq": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云类型" + }, + "accountName": { + "type": "string", + "title": "账号名称" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "地域,数据中心" + }, + "imageId": { + "type": "string", + "title": "镜像id" + }, + "instanceChargeType": { + "type": "string", + "title": "实例的付费方式" + }, + "instanceType": { + "type": "string", + "title": "实例的资源规格" + }, + "securityGroupId": { + "type": "string", + "title": "安全组id" + }, + "vSwitchId": { + "type": "string", + "title": "交换机id" + }, + "instanceName": { + "type": "string", + "title": "实例名称" + }, + "description": { + "type": "string", + "title": "实例描述" + }, + "zoneId": { + "type": "string", + "title": "可用区id" + }, + "systemDisk": { + "$ref": "#/definitions/ecsSystemDisk", + "title": "系统磁盘" + }, + "amount": { + "type": "integer", + "format": "int32", + "title": "创建ECS的数量" + }, + "dryRun": { + "type": "string", + "title": "预检此次请求,为true时请求通过,则返回 Request validation has been passed with DryRun flag set" + }, + "category": { + "type": "string", + "title": "数据盘N的云盘种类。取值范围:cloud_efficiency:高效云盘;cloud_ssd:SSD云盘;cloud_essd:ESSD云盘;cloud:普通云盘。" + }, + "internetChargeType": { + "$ref": "#/definitions/ecsInternetChargeType", + "title": "网络计费类型。取值范围:PayByBandwidth:按固定带宽计费。PayByTraffic(默认):按使用流量计费" + }, + "internetMaxBandwidthOut": { + "type": "integer", + "format": "int32", + "title": "公网入带宽最大值,单位为Mbit/s。创建的实例如果参数InternetMaxBandwidthOut的值大于0,则自动为实例分配公网IP。" + }, + "vpcId": { + "type": "string", + "title": "vpc id 华为云必需" + }, + "subnetId": { + "type": "string", + "title": "待创建云服务器所在的子网信息。需要指定vpcid对应VPC下已创建的子网(subnet)的网络ID,UUID格式。华为云必需" + }, + "namespace": { + "type": "string", + "title": "-------------harvester---------------\n命名空间" + }, + "cpu": { + "type": "integer", + "format": "int32", + "title": "vCpu" + }, + "memory": { + "type": "string", + "title": "memory" + }, + "sshKey": { + "type": "string", + "title": "ssh_key" + }, + "diskName": { + "type": "string", + "title": "diskName" + }, + "diskType": { + "type": "string", + "title": "disk类型 disk,cd-rom" + }, + "diskSize": { + "type": "string", + "title": "卷大小" + }, + "bus": { + "type": "string", + "description": "bus 总线指示要模拟的磁盘设备的类型,支持virtio, sata, scsi." + }, + "networkName": { + "type": "string", + "title": "网络名称" + }, + "networkModel": { + "type": "string", + "description": "network_model 网络模式,支持e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio." + }, + "network": { + "type": "string", + "title": "网络" + }, + "networkType": { + "type": "string", + "title": "网络连接方法,默认bridge" + }, + "osType": { + "type": "string", + "title": "osType //系统类型" + }, + "machineType": { + "type": "string", + "title": "machineType //机器类型 none、q35、pc" + }, + "machineName": { + "type": "string", + "title": "machineName //主机名称,默认为虚拟机名称" + }, + "userDataTemplate": { + "type": "string", + "title": "userDataTemplate //用户数据模板" + }, + "networkDataTemplate": { + "type": "string", + "title": "networkDataTemplate //网络数据模板" + }, + "vmTemplateName": { + "type": "string", + "title": "vmTemplateName //模板名称" + }, + "vmTemplateVersion": { + "type": "string", + "title": "vmTemplateVersion //版本号" + } + }, + "title": "创建ECS入参" + }, + "ecsCreateEcsResp": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云名称" + }, + "accountName": { + "type": "string", + "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "区域Id,参考 tenant.proto 中的各个云的区域" + }, + "requestId": { + "type": "string", + "title": "请求ID" + }, + "orderId": { + "type": "string", + "title": "订单id" + }, + "tradePrice": { + "type": "number", + "format": "float", + "title": "订单成交价" + }, + "instanceIdSets": { + "type": "array", + "items": { + "type": "string" + }, + "title": "实例ID(InstanceIdSet)列表" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + } + }, + "title": "创建ECS返回值" + }, + "ecsDeleteEcsResp": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云名称" + }, + "accountName": { + "type": "string", + "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "区域Id,参考 tenant.proto 中的各个云的区域" + }, + "requestId": { + "type": "string", + "title": "请求ID" + } + }, + "title": "删除ECS返回值" + }, + "ecsEcsInstance": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云类型" + }, + "accountName": { + "type": "string", + "title": "账号名称" + }, + "instanceId": { + "type": "string", + "title": "实例id" + }, + "instanceName": { + "type": "string", + "title": "实例名称" + }, + "regionName": { + "type": "string", + "title": "地域,数据中心" + }, + "publicIps": { + "type": "array", + "items": { + "type": "string" + }, + "title": "公网ip" + }, + "instanceType": { + "type": "string", + "title": "实例类型" + }, + "cpu": { + "type": "string", + "title": "vcpu数" + }, + "memory": { + "type": "string", + "title": "内存MB" + }, + "description": { + "type": "string", + "title": "实例描述" + }, + "status": { + "type": "string", + "title": "状态" + }, + "creationTime": { + "type": "string", + "title": "创建时间,ISO8601" + }, + "expireTime": { + "type": "string", + "title": "过期时间" + }, + "innerIps": { + "type": "array", + "items": { + "type": "string" + }, + "title": "内网ip" + }, + "vpcId": { + "type": "string", + "title": "vpc id" + }, + "resourceGroupId": { + "type": "string", + "title": "资源组id" + }, + "instanceChargeType": { + "type": "string", + "title": "收费类型" + }, + "node": { + "type": "string", + "title": "-----------harvester---------\n虚拟机所在的节点" + }, + "namespace": { + "type": "string", + "title": "namespace" + } + }, + "title": "ECS 实例" + }, + "ecsInternetChargeType": { + "type": "string", + "enum": [ + "PayByBandwidth", + "PayByTraffic" + ], + "default": "PayByBandwidth", + "description": "- PayByBandwidth: 按固定带宽计费。\n - PayByTraffic: (默认):按使用流量计费", + "title": "网络计费类型" + }, + "ecsListDetailResp": { + "type": "object", + "properties": { + "ecses": { + "type": "array", + "items": { + "$ref": "#/definitions/ecsEcsInstance" + }, + "title": "Ecs 机器集合" + }, + "finished": { + "type": "boolean", + "title": "查询是否完成,如果为否-false,则可以将下面三个分页参数填入到请求中,继续查询" + }, + "pageNumber": { + "type": "integer", + "format": "int32", + "title": "分页相关参数,页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "title": "分页相关参数,每页数量" + }, + "nextToken": { + "type": "string", + "title": "分页相关参数,下一页的token" + }, + "requestId": { + "type": "string", + "title": "请求id,出现问题后提供给云厂商,排查问题" + } + }, + "title": "查询ECS返回值" + }, + "ecsListResp": { + "type": "object", + "properties": { + "ecses": { + "type": "array", + "items": { + "$ref": "#/definitions/ecsEcsInstance" + }, + "title": "Ecs 机器集合" + } + } + }, + "ecsSystemDisk": { + "type": "object", + "properties": { + "size": { + "type": "string", + "title": "系统盘大小,单位为GiB。取值范围:20~500。该参数的取值必须大于或者等于max{20, ImageSize}。默认值:max{40, 参数ImageId对应的镜像大小}" + }, + "category": { + "type": "string", + "title": "系统盘类型。系统盘的云盘种类。取值范围:cloud_efficiency:高效云盘。cloud_ssd:SSD云盘。cloud_essd:ESSD云盘。cloud:普通云盘。" + }, + "diskName": { + "type": "string", + "title": "系统盘名称" + }, + "description": { + "type": "string", + "title": "系统盘描述" + }, + "performanceLevel": { + "type": "string", + "title": "创建ESSD云盘作为系统盘使用时,设置云盘的性能等级。取值范围:PL0:单盘最高随机读写IOPS 1万。PL1(默认):单盘最高随机读写IOPS 5万。PL2:单盘最高随机读写IOPS 10万。PL3:单盘最高随机读写IOPS 100万。" + }, + "autoSnapshotPolicyId": { + "type": "string", + "title": "系统盘采用的自动快照策略ID。" + } + }, + "title": "系统磁盘" + }, + "ecsUpdateEcsResp": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/ecsCloudProvider", + "title": "云名称" + }, + "accountName": { + "type": "string", + "title": "账户名称,根据config.yaml中的配置,默认为第一个配置的账户" + }, + "regionId": { + "type": "integer", + "format": "int32", + "title": "区域Id,参考 tenant.proto 中的各个云的区域" + }, + "requestId": { + "type": "string", + "title": "请求ID" + } + }, + "title": "更新ECS返回值" + }, + "protobufAny": { + "type": "object", + "properties": { + "typeUrl": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + } + } +} diff --git a/idl/pbecs/ecs.proto b/vm/idl/ecs.proto similarity index 87% rename from idl/pbecs/ecs.proto rename to vm/idl/ecs.proto index 3695289d..8c25e7a4 100644 --- a/idl/pbecs/ecs.proto +++ b/vm/idl/ecs.proto @@ -1,15 +1,28 @@ syntax = "proto3"; -package pbecs; +package ecs; -option go_package = "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs"; +option go_package = "PCM/ecs/idl/gen;ecspb"; -import "idl/pbtenant/tenant.proto"; import "google/api/annotations.proto"; +// 云提供商 +enum CloudProvider { + // 0 - 阿里云 + ali = 0; + // 1 - 腾讯云 + tencent = 1; + // 2 - 华为云 + huawei = 2; + // 3 - K8S + k8s = 3; + // 3 - Harvester + harvester = 4; +} + //ECS 实例 message EcsInstance { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // 实例id @@ -72,7 +85,7 @@ message CreateEcsMultipleResp { //创建ECS入参 message CreateEcsReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // 地域,数据中心 @@ -169,7 +182,7 @@ message SystemDisk { //创建ECS返回值 message CreateEcsResp { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -189,7 +202,7 @@ message CreateEcsResp { //删除ECS入参 message DeleteEcsReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // 地域,数据中心 @@ -222,7 +235,7 @@ message DeleteEcsReq { //删除ECS返回值 message DeleteEcsResp { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -234,7 +247,7 @@ message DeleteEcsResp { //更新ECS入参 message UpdateEcsReq { // 云类型 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账号名称 string account_name = 2; // 地域,数据中心 @@ -265,7 +278,7 @@ message UpdateEcsReq { //更新ECS返回值 message UpdateEcsResp { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -277,7 +290,7 @@ message UpdateEcsResp { //查询ECS入参 message ListDetailReq { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -321,7 +334,7 @@ enum ActionType { message ActionReq { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // 区域Id,参考 tenant.proto 中的各个云的区域 @@ -336,7 +349,7 @@ message ActionReq { message ActionResp { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; // 账户名称,根据config.yaml中的配置,默认为第一个配置的账户 string account_name = 2; // Ecs 机器集合 @@ -349,7 +362,7 @@ message ActionResp { message ListReq { // 云名称 - pbtenant.CloudProvider provider = 1; + CloudProvider provider = 1; } message ListResp { @@ -368,63 +381,26 @@ message ListAllReq{} service EcsService { // 创建多家云ECS - rpc CreateMultipleEcs(CreateEcsMultipleReq) returns (CreateEcsMultipleResp) { - option (google.api.http) = { - post : "/apis/ecs/createMultiple" - body : "*" - }; - } + rpc CreateMultipleEcs(CreateEcsMultipleReq) returns (CreateEcsMultipleResp); // 创建ECS - rpc CreateEcs(CreateEcsReq) returns (CreateEcsResp) { - option (google.api.http) = { - post : "/apis/ecs/create" - body : "*" - }; - } + rpc CreateEcs(CreateEcsReq) returns (CreateEcsResp); // 删除ECS - rpc DeleteEcs(DeleteEcsReq) returns (DeleteEcsResp) { - option (google.api.http) = { - post : "/apis/ecs/delete" - body : "*" - }; - } + rpc DeleteEcs(DeleteEcsReq) returns (DeleteEcsResp); // 修改ECS - rpc UpdateEcs(UpdateEcsReq) returns (UpdateEcsResp) { - option (google.api.http) = { - put : "/apis/ecs/update" - body : "*" - }; - } + rpc UpdateEcs(UpdateEcsReq) returns (UpdateEcsResp); // 查询ECS明细 - 支持云类型、区域、账户、分页等过滤条件 - rpc ListEcsDetail(ListDetailReq) returns (ListDetailResp) { - option (google.api.http) = { - get : "/apis/ecs/detail" - }; - } + rpc ListEcsDetail(ListDetailReq) returns (ListDetailResp); // 查询ECS全量 - 根据云类型 - rpc ListEcs(ListReq) returns (ListResp) { - option (google.api.http) = { - get : "/apis/ecs" - }; - } + rpc ListEcs(ListReq) returns (ListResp); // 查询所有云的ECS - rpc ListEcsAll(ListAllReq) returns (ListResp) { - option (google.api.http) = { - get : "/apis/ecs/all" - }; - } + rpc ListEcsAll(ListAllReq) returns (ListResp); //操作ecs(start-stop-restart) - rpc ActionEcs(ActionReq) returns (ActionResp){ - option (google.api.http) = { - post : "/apis/ecs/action" - body : "*" - }; - } + rpc ActionEcs(ActionReq) returns (ActionResp); } \ No newline at end of file diff --git a/vm/idl/ecs.yaml b/vm/idl/ecs.yaml new file mode 100644 index 00000000..97ee03c9 --- /dev/null +++ b/vm/idl/ecs.yaml @@ -0,0 +1,26 @@ +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: ecs.EcsService.CreateMultipleEcs + post: "/apis/ecs/createMultiple" + body: "*" + - selector: ecs.EcsService.CreateEcs + post: "/apis/ecs/create" + body: "*" + - selector: ecs.EcsService.DeleteEcs + post: "/apis/ecs/delete" + body: "*" + - selector: ecs.EcsService.UpdateEcs + put: "/apis/ecs/update" + body: "*" + - selector: ecs.EcsService.ListEcsDetail + get: "/apis/ecs/detail" + - selector: ecs.EcsService.ListEcs + get: "/apis/ecs" + - selector: ecs.EcsService.ListEcsAll + get: "/apis/ecs/all" + - selector: ecs.EcsService.ActionEcs + post: "/apis/ecs/action" + body: "*" \ No newline at end of file diff --git a/vm/main.go b/vm/main.go new file mode 100644 index 00000000..ac5737a4 --- /dev/null +++ b/vm/main.go @@ -0,0 +1,56 @@ +package main + +import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/config" + "code.gitlink.org.cn/JCCE/PCM.git/common/global" + "code.gitlink.org.cn/JCCE/PCM.git/common/server" + "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" + vmpb "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" + vmserver "code.gitlink.org.cn/JCCE/PCM.git/vm/server" + "flag" + "github.com/golang/glog" + "github.com/pkg/errors" + "go.uber.org/zap" + "google.golang.org/grpc" + "log" +) + +func main() { + var configFile string + flag.StringVar(&configFile, "conf", "configs/config.yaml", "config.yaml") + flag.Parse() + defer glog.Flush() + + if err := tenanter.LoadCloudConfigsFromFile(configFile); err != nil { + if !errors.Is(err, tenanter.ErrLoadTenanterFileEmpty) { + glog.Fatalf("LoadCloudConfigsFromFile error %+v", err) + } + glog.Warningf("LoadCloudConfigsFromFile empty file path %s", configFile) + } + + // 初始化配置以及数据库 + config.InitConfig() + // 新建一个zap logger实例 + logger, err := zap.NewDevelopment() + if err != nil { + log.Fatalf("cannot create logger: %v", err) + } + if err != nil { + logger.Fatal("cannot open private key", zap.Error(err)) + } + if err != nil { + logger.Fatal("cannot read private key", zap.Error(err)) + } + if err != nil { + logger.Fatal("cannot parse private key", zap.Error(err)) + } + // logger.Sugar().Fatal 直接可以少几行判错的代码 + logger.Sugar().Fatal(server.RunGRPCServer(&server.GRPCConfig{ + Name: "vm", + Addr: global.S.VmInfo.Address, + RegisterFunc: func(g *grpc.Server) { + vmpb.RegisterEcsServiceServer(g, &vmserver.Server{}) + }, + Logger: logger, + })) +} diff --git a/common/server/server_ecs.go b/vm/server/ecs.go similarity index 84% rename from common/server/server_ecs.go rename to vm/server/ecs.go index 97ceebba..5fd27283 100644 --- a/common/server/server_ecs.go +++ b/vm/server/ecs.go @@ -1,19 +1,20 @@ package server import ( + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "context" - - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_vm/server/ecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "github.com/golang/glog" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) +type Server struct { + pbecs.UnimplementedEcsServiceServer +} + // CreateMultipleEcs return create cloudy ecs func (s *Server) CreateMultipleEcs(ctx context.Context, reqs *pbecs.CreateEcsMultipleReq) (*pbecs.CreateEcsMultipleResp, error) { - resp, err := ecs.CreateMultipleEcs(ctx, reqs) + resp, err := CreateMultipleEcs(ctx, reqs) if err != nil { glog.Errorf("ListEcsDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -23,7 +24,7 @@ func (s *Server) CreateMultipleEcs(ctx context.Context, reqs *pbecs.CreateEcsMul // CreateEcs return create ecs func (s *Server) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs.CreateEcsResp, error) { - resp, err := ecs.CreateEcs(ctx, req) + resp, err := CreateEcs(ctx, req) if err != nil { glog.Errorf("ListEcsDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -33,7 +34,7 @@ func (s *Server) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs // DeleteEcs return Delete ecs func (s *Server) DeleteEcs(ctx context.Context, req *pbecs.DeleteEcsReq) (*pbecs.DeleteEcsResp, error) { - resp, err := ecs.DeleteEcs(ctx, req) + resp, err := DeleteEcs(ctx, req) if err != nil { glog.Errorf("ListEcsDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -43,7 +44,7 @@ func (s *Server) DeleteEcs(ctx context.Context, req *pbecs.DeleteEcsReq) (*pbecs // UpdateEcs return Update ecs func (s *Server) UpdateEcs(ctx context.Context, req *pbecs.UpdateEcsReq) (*pbecs.UpdateEcsResp, error) { - resp, err := ecs.UpdateEcs(ctx, req) + resp, err := UpdateEcs(ctx, req) if err != nil { glog.Errorf("ListEcsDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -53,7 +54,7 @@ func (s *Server) UpdateEcs(ctx context.Context, req *pbecs.UpdateEcsReq) (*pbecs // ListEcsDetail return ecs detail func (s *Server) ListEcsDetail(ctx context.Context, req *pbecs.ListDetailReq) (*pbecs.ListDetailResp, error) { - resp, err := ecs.ListDetail(ctx, req) + resp, err := ListDetail(ctx, req) if err != nil { glog.Errorf("ListEcsDetail error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -63,7 +64,7 @@ func (s *Server) ListEcsDetail(ctx context.Context, req *pbecs.ListDetailReq) (* // ListEcs return ecs list func (s *Server) ListEcs(ctx context.Context, req *pbecs.ListReq) (*pbecs.ListResp, error) { - resp, err := ecs.List(ctx, req) + resp, err := List(ctx, req) if err != nil { glog.Errorf("ListEcs error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -73,7 +74,7 @@ func (s *Server) ListEcs(ctx context.Context, req *pbecs.ListReq) (*pbecs.ListRe // ListEcsAll return all ecs func (s *Server) ListEcsAll(ctx context.Context, req *pbecs.ListAllReq) (*pbecs.ListResp, error) { - resp, err := ecs.ListAll(ctx) + resp, err := ListAll(ctx) if err != nil { glog.Errorf("ListEcsAll error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) @@ -83,7 +84,7 @@ func (s *Server) ListEcsAll(ctx context.Context, req *pbecs.ListAllReq) (*pbecs. // ActionEcs return ecs action func (s *Server) ActionEcs(ctx context.Context, req *pbecs.ActionReq) (*pbecs.ActionResp, error) { - resp, err := ecs.ActionEcs(ctx, req) + resp, err := ActionEcs(ctx, req) if err != nil { glog.Errorf("ActionEcs error %+v", err) return nil, status.Errorf(codes.Internal, err.Error()) diff --git a/adaptor/pcm_vm/server/ecs/list.go b/vm/server/ecsImpl.go similarity index 80% rename from adaptor/pcm_vm/server/ecs/list.go rename to vm/server/ecsImpl.go index 590f63c9..ffadcb35 100644 --- a/adaptor/pcm_vm/server/ecs/list.go +++ b/vm/server/ecsImpl.go @@ -1,13 +1,13 @@ -package ecs +package server import ( + "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" "context" "sync" - "code.gitlink.org.cn/JCCE/PCM.git/adaptor/pcm_vm/service/ecser" - "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" + ecser "code.gitlink.org.cn/JCCE/PCM.git/vm/service" "github.com/golang/glog" "github.com/pkg/errors" ) @@ -54,8 +54,8 @@ func CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (*pbecs.CreateEcsRe var ( ecs ecser.Ecser ) - tenanters, err := tenanter.GetTenanters(req.Provider) - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.Wrap(err, "get tenanters failed") } @@ -74,8 +74,8 @@ func DeleteEcs(ctx context.Context, req *pbecs.DeleteEcsReq) (*pbecs.DeleteEcsRe var ( ecs ecser.Ecser ) - tenanters, err := tenanter.GetTenanters(req.Provider) - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.Wrap(err, "get tenanters failed") } @@ -94,8 +94,8 @@ func UpdateEcs(ctx context.Context, req *pbecs.UpdateEcsReq) (*pbecs.UpdateEcsRe var ( ecs ecser.Ecser ) - tenanters, err := tenanter.GetTenanters(req.Provider) - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.Wrap(err, "get tenanters failed") } @@ -116,12 +116,12 @@ func ListDetail(ctx context.Context, req *pbecs.ListDetailReq) (*pbecs.ListDetai ecs ecser.Ecser ) - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.WithMessagef(err, "provider %v regionId %v", req.Provider, req.RegionId) } @@ -146,12 +146,12 @@ func List(ctx context.Context, req *pbecs.ListReq) (*pbecs.ListResp, error) { ecses []*pbecs.EcsInstance ) - tenanters, err := tenanter.GetTenanters(req.Provider) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) if err != nil { return nil, errors.WithMessage(err, "getTenanters error") } - regions := tenanter.GetAllRegionIds(req.Provider) + regions := tenanter.GetAllRegionIds(pbtenant.CloudProvider(req.Provider)) wg.Add(len(tenanters) * len(regions)) for _, t := range tenanters { @@ -202,12 +202,12 @@ func ListAll(ctx context.Context) (*pbecs.ListResp, error) { ecses []*pbecs.EcsInstance ) - wg.Add(len(pbtenant.CloudProvider_name)) - for k := range pbtenant.CloudProvider_name { + wg.Add(len(pbecs.CloudProvider_name)) + for k := range pbecs.CloudProvider_name { go func(provider int32) { defer wg.Done() - resp, err := List(ctx, &pbecs.ListReq{Provider: pbtenant.CloudProvider(provider)}) + resp, err := List(ctx, &pbecs.ListReq{Provider: pbecs.CloudProvider(provider)}) if err != nil { glog.Errorf("List error %v", err) return @@ -227,8 +227,8 @@ func ActionEcs(ctx context.Context, req *pbecs.ActionReq) (*pbecs.ActionResp, er var ( ecs ecser.Ecser ) - tenanters, err := tenanter.GetTenanters(req.Provider) - region, err := tenanter.NewRegion(req.Provider, req.RegionId) + tenanters, err := tenanter.GetTenanters(pbtenant.CloudProvider(req.Provider)) + region, err := tenanter.NewRegion(pbtenant.CloudProvider(req.Provider), req.RegionId) if err != nil { return nil, errors.Wrap(err, "get tenanters failed") } diff --git a/adaptor/pcm_vm/server/ecs/list_test.go b/vm/server/ecsImpl_test.go similarity index 61% rename from adaptor/pcm_vm/server/ecs/list_test.go rename to vm/server/ecsImpl_test.go index 7dce8ca5..5f6814b0 100644 --- a/adaptor/pcm_vm/server/ecs/list_test.go +++ b/vm/server/ecsImpl_test.go @@ -1,8 +1,8 @@ -package ecs +package server import ( - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "context" "testing" ) @@ -16,9 +16,9 @@ func TestListDetail(t *testing.T) { args args wantErr bool }{ - {name: "ali", args: args{req: &pbecs.ListDetailReq{Provider: pbtenant.CloudProvider_ali, RegionId: int32(pbtenant.AliRegionId_ali_cn_hangzhou), PageNumber: 1, PageSize: 10}}, wantErr: false}, - {name: "tencent", args: args{req: &pbecs.ListDetailReq{Provider: pbtenant.CloudProvider_tencent, RegionId: int32(pbtenant.TencentRegionId_tc_ap_beijing), PageNumber: 1, PageSize: 10}}, wantErr: false}, - {name: "aws", args: args{req: &pbecs.ListDetailReq{Provider: pbtenant.CloudProvider_aws, RegionId: int32(pbtenant.AwsRegionId_aws_us_east_2), PageNumber: 1, PageSize: 10}}, wantErr: false}, + {name: "ali", args: args{req: &pbecs.ListDetailReq{Provider: pbecs.CloudProvider_ali, RegionId: int32(pbtenant.AliRegionId_ali_cn_hangzhou), PageNumber: 1, PageSize: 10}}, wantErr: false}, + {name: "tencent", args: args{req: &pbecs.ListDetailReq{Provider: pbecs.CloudProvider_tencent, RegionId: int32(pbtenant.TencentRegionId_tc_ap_beijing), PageNumber: 1, PageSize: 10}}, wantErr: false}, + {name: "aws", args: args{req: &pbecs.ListDetailReq{Provider: pbecs.CloudProvider_huawei, RegionId: int32(pbtenant.HuaweiRegionId_hw_af_south_1), PageNumber: 1, PageSize: 10}}, wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -41,10 +41,10 @@ func TestList(t *testing.T) { args args wantErr bool }{ - {name: "ali", args: args{req: &pbecs.ListReq{Provider: pbtenant.CloudProvider_ali}}, wantErr: false}, - {name: "tencent", args: args{req: &pbecs.ListReq{Provider: pbtenant.CloudProvider_tencent}}, wantErr: false}, - {name: "huawei", args: args{req: &pbecs.ListReq{Provider: pbtenant.CloudProvider_huawei}}, wantErr: false}, - {name: "aws", args: args{req: &pbecs.ListReq{Provider: pbtenant.CloudProvider_aws}}, wantErr: false}, + {name: "ali", args: args{req: &pbecs.ListReq{Provider: pbecs.CloudProvider_ali}}, wantErr: false}, + {name: "tencent", args: args{req: &pbecs.ListReq{Provider: pbecs.CloudProvider_tencent}}, wantErr: false}, + {name: "huawei", args: args{req: &pbecs.ListReq{Provider: pbecs.CloudProvider_huawei}}, wantErr: false}, + {name: "aws", args: args{req: &pbecs.ListReq{Provider: pbecs.CloudProvider_huawei}}, wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/adaptor/pcm_vm/server/ecs/main_test.go b/vm/server/main_test.go similarity index 69% rename from adaptor/pcm_vm/server/ecs/main_test.go rename to vm/server/main_test.go index efcd89a5..5926546c 100644 --- a/adaptor/pcm_vm/server/ecs/main_test.go +++ b/vm/server/main_test.go @@ -1,8 +1,9 @@ -package ecs +package server import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "os" "testing" ) @@ -16,16 +17,16 @@ func TestMain(m *testing.M) { if err != nil { panic(err) } - if aliTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_ali); err != nil { + if aliTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_ali)); err != nil { panic("get aliTenant failed") } - if tcTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_tencent); err != nil { + if tcTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_tencent)); err != nil { panic("get tcTenant failed") } - if hwTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_huawei); err != nil { + if hwTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_huawei)); err != nil { panic("get hwTenant failed") } - if k8sTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_k8s); err != nil { + if k8sTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_k8s)); err != nil { panic("get awsTenant failed") } os.Exit(m.Run()) diff --git a/adaptor/pcm_vm/service/ecser/ali.go b/vm/service/ali.go similarity index 97% rename from adaptor/pcm_vm/service/ecser/ali.go rename to vm/service/ali.go index 2e2b7dc9..0dc47d10 100644 --- a/adaptor/pcm_vm/service/ecser/ali.go +++ b/vm/service/ali.go @@ -1,12 +1,11 @@ -package ecser +package service import ( "context" "sync" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" openapi "github.com/alibabacloud-go/darabonba-openapi/client" string_ "github.com/alibabacloud-go/darabonba-string/client" aliecs "github.com/alibabacloud-go/ecs-20140526/v2/client" @@ -201,7 +200,7 @@ func (ecs *AliEcs) ListDetail(ctx context.Context, req *pbecs.ListDetailReq) (*p InnerIps = append(InnerIps, *vv) } ecses[k] = &pbecs.EcsInstance{ - Provider: pbtenant.CloudProvider_ali, + Provider: pbecs.CloudProvider_ali, AccountName: ecs.tenanter.AccountName(), InstanceId: *v.InstanceId, InstanceName: *v.InstanceName, diff --git a/adaptor/pcm_vm/service/ecser/aws.go b/vm/service/aws.go similarity index 99% rename from adaptor/pcm_vm/service/ecser/aws.go rename to vm/service/aws.go index 3d420feb..2c55c3a3 100644 --- a/adaptor/pcm_vm/service/ecser/aws.go +++ b/vm/service/aws.go @@ -1,4 +1,4 @@ -package ecser +package service //TODO aws // diff --git a/adaptor/pcm_vm/service/ecser/ecser.go b/vm/service/ecser.go similarity index 76% rename from adaptor/pcm_vm/service/ecser/ecser.go rename to vm/service/ecser.go index 423b2337..f32beeed 100644 --- a/adaptor/pcm_vm/service/ecser/ecser.go +++ b/vm/service/ecser.go @@ -1,11 +1,10 @@ -package ecser +package service import ( "context" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "github.com/golang/glog" "github.com/pkg/errors" @@ -24,7 +23,7 @@ type Ecser interface { ActionEcs(ctx context.Context, req *pbecs.ActionReq) (resp *pbecs.ActionResp, err error) //操作ecs } -func NewEcsClient(provider pbtenant.CloudProvider, region tenanter.Region, tenant tenanter.Tenanter) (ecser Ecser, err error) { +func NewEcsClient(provider pbecs.CloudProvider, region tenanter.Region, tenant tenanter.Tenanter) (ecser Ecser, err error) { // 部分sdk会在内部panic defer func() { if err1 := recover(); err1 != nil { @@ -34,14 +33,13 @@ func NewEcsClient(provider pbtenant.CloudProvider, region tenanter.Region, tenan }() switch provider { - case pbtenant.CloudProvider_ali: + case pbecs.CloudProvider_ali: return newAliEcsClient(region, tenant) - case pbtenant.CloudProvider_tencent: + case pbecs.CloudProvider_tencent: return newTencentCvmClient(region, tenant) - case pbtenant.CloudProvider_huawei: + case pbecs.CloudProvider_huawei: return newHuaweiEcsClient(region, tenant) - //TODO aws - case pbtenant.CloudProvider_harvester: + case pbecs.CloudProvider_harvester: return newHarvesterClient(tenant) } diff --git a/adaptor/pcm_vm/service/ecser/ecser_test.go b/vm/service/ecser_test.go similarity index 76% rename from adaptor/pcm_vm/service/ecser/ecser_test.go rename to vm/service/ecser_test.go index 811f49fd..6a5eda3f 100644 --- a/adaptor/pcm_vm/service/ecser/ecser_test.go +++ b/vm/service/ecser_test.go @@ -1,24 +1,24 @@ -package ecser +package service import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "context" "testing" ) func TestEcser_ListDetail(t *testing.T) { region, _ := tenanter.NewRegion(pbtenant.CloudProvider_ali, int32(pbtenant.AliRegionId_ali_cn_hangzhou)) - ali, _ := NewEcsClient(pbtenant.CloudProvider_ali, region, aliTenant[0]) - aliFailed, _ := NewEcsClient(pbtenant.CloudProvider_ali, region, tenanter.NewTenantWithAccessKey("empty", "", "", "", "")) + ali, _ := NewEcsClient(pbecs.CloudProvider(pbtenant.CloudProvider_ali), region, aliTenant[0]) + aliFailed, _ := NewEcsClient(pbecs.CloudProvider(pbtenant.CloudProvider_ali), region, tenanter.NewTenantWithAccessKey("empty", "", "", "", "")) region, _ = tenanter.NewRegion(pbtenant.CloudProvider_tencent, int32(pbtenant.TencentRegionId_tc_ap_beijing)) - tc, _ := NewEcsClient(pbtenant.CloudProvider_tencent, region, tcTenant[0]) - tcFailed, _ := NewEcsClient(pbtenant.CloudProvider_tencent, region, tenanter.NewTenantWithAccessKey("empty", "", "", "", "")) + tc, _ := NewEcsClient(pbecs.CloudProvider(pbtenant.CloudProvider_tencent), region, tcTenant[0]) + tcFailed, _ := NewEcsClient(pbecs.CloudProvider(pbtenant.CloudProvider_tencent), region, tenanter.NewTenantWithAccessKey("empty", "", "", "", "")) region, _ = tenanter.NewRegion(pbtenant.CloudProvider_huawei, int32(pbtenant.HuaweiRegionId_hw_cn_southwest_2)) - hw, _ := NewEcsClient(pbtenant.CloudProvider_huawei, region, hwTenant[0]) + hw, _ := NewEcsClient(pbecs.CloudProvider(pbtenant.CloudProvider_huawei), region, hwTenant[0]) // hwFailed, _ := newHuaweiEcsClient(int32(pbtenant.HuaweiRegionId_hw_cn_north_1), tenanter.NewTenantWithAccessKey("empty", "", "", "")) type args struct { diff --git a/adaptor/pcm_vm/service/ecser/google.go b/vm/service/google.go similarity index 99% rename from adaptor/pcm_vm/service/ecser/google.go rename to vm/service/google.go index 12ee9a79..b0d5724d 100644 --- a/adaptor/pcm_vm/service/ecser/google.go +++ b/vm/service/google.go @@ -1,4 +1,4 @@ -package ecser +package service // // import ( diff --git a/adaptor/pcm_vm/service/ecser/harvester.go b/vm/service/harvester.go similarity index 95% rename from adaptor/pcm_vm/service/ecser/harvester.go rename to vm/service/harvester.go index 89add91f..9754ba5f 100644 --- a/adaptor/pcm_vm/service/ecser/harvester.go +++ b/vm/service/harvester.go @@ -1,9 +1,8 @@ -package ecser +package service import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "context" "fmt" "github.com/harvester/harvester/pkg/apis/harvesterhci.io/v1beta1" @@ -173,14 +172,14 @@ func (h *HarVMer) CreateEcs(ctx context.Context, req *pbecs.CreateEcsReq) (resp isFinished = true } return &pbecs.CreateEcsResp{ - Provider: pbtenant.CloudProvider_harvester, + Provider: pbecs.CloudProvider_harvester, AccountName: h.tenanter.AccountName(), InstanceIdSets: InstanceIds, Finished: isFinished, }, nil } -//buildVMTemplate creates a *kubirtv1.VirtualMachineInstanceTemplateSpec from the CLI Flags and some computed values +// buildVMTemplate creates a *kubirtv1.VirtualMachineInstanceTemplateSpec from the CLI Flags and some computed values func buildVMTemplate(vCpu int, memory, sshKeyName string, c *harvClient.Clientset, pvcName string, vmiLabels map[string]string, vmName string, secretName string) (vmTemplate *kubirtv1.VirtualMachineInstanceTemplateSpec, err error) { vmTemplate = nil @@ -323,7 +322,7 @@ func vmiAnnotations(pvcName string, sshKeyName string) map[string]string { } } -//CreateCloudInitDataFromSecret creates a cloud-init configmap from a secret +// CreateCloudInitDataFromSecret creates a cloud-init configmap from a secret func createCloudInitDataFromSecret(c *k8s.Clientset, vmName string, uid types.UID, secretName, namespace, userData, networkData string) (secret *v1.Secret, err error) { toCreate := &v1.Secret{ TypeMeta: k8smetav1.TypeMeta{ @@ -387,7 +386,7 @@ func (h *HarVMer) DeleteEcs(ctx context.Context, req *pbecs.DeleteEcsReq) (resp } } return &pbecs.DeleteEcsResp{ - Provider: pbtenant.CloudProvider_harvester, + Provider: pbecs.CloudProvider_harvester, AccountName: h.tenanter.AccountName(), }, nil } @@ -440,7 +439,7 @@ func (h *HarVMer) UpdateEcs(ctx context.Context, req *pbecs.UpdateEcsReq) (resp } } return &pbecs.UpdateEcsResp{ - Provider: pbtenant.CloudProvider_harvester, + Provider: pbecs.CloudProvider_harvester, AccountName: h.tenanter.AccountName(), }, nil } @@ -474,7 +473,7 @@ func (h *HarVMer) ListDetail(ctx context.Context, req *pbecs.ListDetailReq) (res IP = append(IP, vmiMap[vm.Name].Status.Interfaces[0].IP) } ecses[k] = &pbecs.EcsInstance{ - Provider: pbtenant.CloudProvider_harvester, + Provider: pbecs.CloudProvider_harvester, AccountName: h.tenanter.AccountName(), Status: state, InstanceName: vm.Name, @@ -520,13 +519,13 @@ func (h *HarVMer) ActionEcs(ctx context.Context, req *pbecs.ActionReq) (resp *pb status = "Running" } return &pbecs.ActionResp{ - Provider: pbtenant.CloudProvider_harvester, + Provider: pbecs.CloudProvider_harvester, AccountName: h.tenanter.AccountName(), Status: status, }, nil } -//startVmByName starts a VM by first issuing a GET using the VM name, then updating the resulting VM object +// startVmByName starts a VM by first issuing a GET using the VM name, then updating the resulting VM object func startVmByName(c *harvClient.Clientset, namespace, vmName string) error { vm, err := c.KubevirtV1().VirtualMachines(namespace).Get(context.TODO(), vmName, k8smetav1.GetOptions{}) if err != nil { @@ -540,7 +539,7 @@ func startVmByName(c *harvClient.Clientset, namespace, vmName string) error { return nil } -//stopVmByName will stop a VM by first finding it by its name and then call stopBMbyRef function +// stopVmByName will stop a VM by first finding it by its name and then call stopBMbyRef function func stopVmByName(c *harvClient.Clientset, namespace, vmName string) error { vm, err := c.KubevirtV1().VirtualMachines(namespace).Get(context.TODO(), vmName, k8smetav1.GetOptions{}) if err != nil { @@ -554,7 +553,7 @@ func stopVmByName(c *harvClient.Clientset, namespace, vmName string) error { return nil } -//restartVMbyName will restart a VM by first finding it by its name and then call restartVMbyRef function +// restartVMbyName will restart a VM by first finding it by its name and then call restartVMbyRef function func restartVmByName(c *harvClient.Clientset, namespace, vmName string) error { vm, err := c.KubevirtV1().VirtualMachines(namespace).Get(context.TODO(), vmName, k8smetav1.GetOptions{}) if err != nil { diff --git a/adaptor/pcm_vm/service/ecser/harvester_util.go b/vm/service/harvester_util.go similarity index 99% rename from adaptor/pcm_vm/service/ecser/harvester_util.go rename to vm/service/harvester_util.go index bf578e7d..b98003fa 100644 --- a/adaptor/pcm_vm/service/ecser/harvester_util.go +++ b/vm/service/harvester_util.go @@ -1,4 +1,4 @@ -package ecser +package service import ( "bytes" @@ -368,7 +368,7 @@ func defaultListOpts(ctx *cli.Context) *ntypes.ListOpts { return listOpts } -//NewTrue returns a pointer to true +// NewTrue returns a pointer to true func NewTrue() *bool { b := true return &b diff --git a/adaptor/pcm_vm/service/ecser/huawei.go b/vm/service/huawei.go similarity index 97% rename from adaptor/pcm_vm/service/ecser/huawei.go rename to vm/service/huawei.go index 3782d7b8..dc2bef43 100644 --- a/adaptor/pcm_vm/service/ecser/huawei.go +++ b/vm/service/huawei.go @@ -1,12 +1,11 @@ -package ecser +package service import ( "context" "strconv" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" string_ "github.com/alibabacloud-go/darabonba-string/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" @@ -229,7 +228,7 @@ func (ecs *HuaweiEcs) ListDetail(ctx context.Context, req *pbecs.ListDetailReq) } } ecses[k] = &pbecs.EcsInstance{ - Provider: pbtenant.CloudProvider_huawei, + Provider: pbecs.CloudProvider_huawei, AccountName: ecs.tenanter.AccountName(), InstanceId: v.Id, InstanceName: v.Name, diff --git a/adaptor/pcm_vm/service/ecser/main_test.go b/vm/service/main_test.go similarity index 69% rename from adaptor/pcm_vm/service/ecser/main_test.go rename to vm/service/main_test.go index 619e028c..de00bdc6 100644 --- a/adaptor/pcm_vm/service/ecser/main_test.go +++ b/vm/service/main_test.go @@ -1,8 +1,9 @@ -package ecser +package service import ( "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbtenant "code.gitlink.org.cn/JCCE/PCM.git/tenant/gen/idl" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" "os" "testing" ) @@ -16,13 +17,13 @@ func TestMain(m *testing.M) { if err != nil { panic(err) } - if aliTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_ali); err != nil { + if aliTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_ali)); err != nil { panic("get aliTenant failed") } - if tcTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_tencent); err != nil { + if tcTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_tencent)); err != nil { panic("get tcTenant failed") } - if hwTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider_huawei); err != nil { + if hwTenant, err = tenanter.GetTenanters(pbtenant.CloudProvider(pbecs.CloudProvider_huawei)); err != nil { panic("get hwTenant failed") } os.Exit(m.Run()) diff --git a/adaptor/pcm_vm/service/ecser/tencent.go b/vm/service/tencent.go similarity index 97% rename from adaptor/pcm_vm/service/ecser/tencent.go rename to vm/service/tencent.go index c51eeeea..a93d3db7 100644 --- a/adaptor/pcm_vm/service/ecser/tencent.go +++ b/vm/service/tencent.go @@ -1,12 +1,11 @@ -package ecser +package service import ( "context" "strconv" "code.gitlink.org.cn/JCCE/PCM.git/common/tenanter" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbecs" - "code.gitlink.org.cn/JCCE/PCM.git/lan_trans/idl/pbtenant" + pbecs "code.gitlink.org.cn/JCCE/PCM.git/vm/gen/idl" string_ "github.com/alibabacloud-go/darabonba-string/client" util "github.com/alibabacloud-go/tea-utils/service" "github.com/alibabacloud-go/tea/tea" @@ -145,7 +144,7 @@ func (ecs *TencentCvm) ListDetail(ctx context.Context, req *pbecs.ListDetailReq) ExpiredTime = *v.ExpiredTime } ecses[k] = &pbecs.EcsInstance{ - Provider: pbtenant.CloudProvider_tencent, + Provider: pbecs.CloudProvider_tencent, AccountName: ecs.tenanter.AccountName(), InstanceId: *v.InstanceId, InstanceName: *v.InstanceName,