diff --git a/api/desc/pcm.api b/api/desc/pcm.api index 24fd3043..ab6669c7 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -405,6 +405,10 @@ service pcm { @handler CreateServerHandler post /vm/createServer (CreateServerReq) returns (CreateServerResp) + @doc "跨域创建虚拟机" + @handler CreateMulServerHandler + post /vm/createMulServer (CreateMulServerReq) returns (CreateMulServerResp) + @doc "根据ID查询虚拟机详情" @handler GetServersDetailedByIdHandler get /vm/getServersDetailedById (GetServersDetailedByIdReq) returns (GetServersDetailedByIdResp) diff --git a/api/desc/vm/pcm-vm.api b/api/desc/vm/pcm-vm.api index b632439e..fb21c68c 100644 --- a/api/desc/vm/pcm-vm.api +++ b/api/desc/vm/pcm-vm.api @@ -121,19 +121,19 @@ type ( } ServersDetailed { - //created string `json:"created" copier:"created"` - Id string `json:"Id" copier:"Id"` - Name string `json:"Name" copier:"Name"` - OSTaskState uint32 `json:"OSTaskState" copier:"OSTaskState"` - Status string `json:"Status" copier:"Status"` - VmState string `json:"VmState" copier:"VmState"` - OS_EXT_SRV_ATTR_Instance_Name string `json:"OS_EXT_SRV_ATTR_Instance_Name" copier:"OS_EXT_SRV_ATTR_Instance_Name"` - Created string `json:"Created" copier:"Created"` - HostId string `json:"HostId" copier:"HostId"` - Ip string `json:"Ip" copier:"Ip"` - Image string `json:"Image" copier:"Image"` - Updated string `json:"Updated" copier:"Updated"` - Flavor string `json:"Flavor" copier:"Flavor"` + Id string `json:"id" copier:"Id"` + Name string `json:"name" copier:"Name"` + OSTaskState uint32 `json:"os_task_state" copier:"OSTaskState"` + Status string `json:"status" copier:"Status"` + VmState string `json:"vm_state" copier:"VmState"` + OS_EXT_SRV_ATTR_Instance_Name string `json:"os_ext_srv_attr_instance_name" copier:"OS_EXT_SRV_ATTR_Instance_Name"` + Created string `json:"created" copier:"Created"` + HostId string `json:"hostId" copier:"HostId"` + Ip string `json:"ip" copier:"Ip"` + Image string `json:"image" copier:"Image"` + Updated string `json:"updated" copier:"Updated"` + Flavor string `json:"flavor" copier:"Flavor"` + Key_name string `json:"key_name" copier:"Key_name"` } ) @@ -368,6 +368,41 @@ type ( } ) +type ( + CreateMulServerReq { + CreateMulServer []CreateMulServer `json:"createMulServer,optional"` + } + CreateMulServer { + Platform string `json:"platform,optional"` + CrServer MulCrServer `json:"crserver" copier:"CrServer"` + } + MulCrServer { + Server MulServer `json:"server" copier:"Server"` + } + MulServer { + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Name string `json:"name,optional" copier:"Name"` + FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"` + Description string `json:"description,optional" copier:"Description"` + ImageRef string `json:"imageRef,optional" copier:"ImageRef"` + Networks []CreNetwork `json:"networks,optional" copier:"Networks"` + MinCount int32 `json:"min_count,optional" copier:"MinCount"` + } + CreateMulServerResp { + Server []MulServerResp `json:"server" copier:"Server"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + MulServerResp { + Id string `json:"id" copier:"Id"` + Links []Links `json:"links" copier:"Links"` + OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"` + SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"` + AdminPass string `json:"adminPass" copier:"AdminPass"` + } +) + type( RebuildServerReq{ ServerId string `json:"server_id" copier:"ServerId"` diff --git a/api/etc/pcm.yaml b/api/etc/pcm.yaml index b2b4766e..1be194eb 100644 --- a/api/etc/pcm.yaml +++ b/api/etc/pcm.yaml @@ -5,7 +5,8 @@ Port: 8999 Timeout: 50000 DB: - DataSource: root:uJpLd6u-J?HC1@(10.206.0.12:3306)/pcm?parseTime=true&loc=Local + # DataSource: root:uJpLd6u-J?HC1@(10.206.0.12:3306)/pcm?parseTime=true&loc=Local + DataSource: root:uJpLd6u-J?HC1@(47.92.88.143:3306)/pcm?parseTime=true&loc=Local Redis: Host: 10.206.0.12:6379 Pass: redisPW123 diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index 45e701c2..91736dbf 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -476,6 +476,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/vm/createServer", Handler: vm.CreateServerHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/vm/createMulServer", + Handler: vm.CreateMulServerHandler(serverCtx), + }, { Method: http.MethodGet, Path: "/vm/getServersDetailedById", diff --git a/api/internal/handler/vm/createmulserverhandler.go b/api/internal/handler/vm/createmulserverhandler.go new file mode 100644 index 00000000..613f1ca2 --- /dev/null +++ b/api/internal/handler/vm/createmulserverhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" +) + +func CreateMulServerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateMulServerReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewCreateMulServerLogic(r.Context(), svcCtx) + resp, err := l.CreateMulServer(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/logic/core/commitvmtasktemplogic.go b/api/internal/logic/core/commitvmtasktemplogic.go index f9501d46..85137007 100644 --- a/api/internal/logic/core/commitvmtasktemplogic.go +++ b/api/internal/logic/core/commitvmtasktemplogic.go @@ -2,6 +2,13 @@ package core import ( "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/helper/xerr" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils" + "gitlink.org.cn/JointCloud/pcm-openstack/openstack" + "k8s.io/apimachinery/pkg/util/json" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" @@ -25,6 +32,18 @@ func NewCommitVmTaskTempLogic(ctx context.Context, svcCtx *svc.ServiceContext) * func (l *CommitVmTaskTempLogic) CommitVmTaskTemp(req *types.CommitVmTaskReq) (resp *types.CommitVmTaskResp, err error) { // todo: add your logic here and delete this line - + CreateServerReq := &openstack.CreateServerReq{} + err = copier.CopyWithOption(CreateServerReq, req, copier.Option{Converters: utils.Converters}) + CreateServerResp, err := l.svcCtx.OpenstackRpc.CreateServer(l.ctx, CreateServerReq) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrMsg("Failed to get Servers list"), "Failed to get db Servers list err : %v ,req:%+v", err, req) + } + marshal, err := json.Marshal(&CreateServerResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &CreateServerResp, copier.Option{Converters: utils.Converters}) + return resp, err return } diff --git a/api/internal/logic/vm/createmulserverlogic.go b/api/internal/logic/vm/createmulserverlogic.go new file mode 100644 index 00000000..b59f575c --- /dev/null +++ b/api/internal/logic/vm/createmulserverlogic.go @@ -0,0 +1,82 @@ +package vm + +import ( + "context" + "fmt" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/helper/xerr" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result" + "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils" + "gitlink.org.cn/JointCloud/pcm-openstack/openstack" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateMulServerLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewCreateMulServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateMulServerLogic { + return &CreateMulServerLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// ServerLinks 表示服务器链接的结构体 +type ServerLinks struct { + Href string `json:"href"` // 注意:在JSON中,"href "有一个额外的空格,需要移除 + Rel string `json:"rel"` +} + +// SecurityGroup 表示安全组的结构体 +type SecurityGroup struct { + Name string `json:"name"` +} + +// Server 表示服务器的结构体 +type Server struct { + ID string `json:"id"` + Links []ServerLinks `json:"links"` + OSDCFDiskConfig string `json:"OS_DCF_diskConfig"` + SecurityGroups []SecurityGroup `json:"security_groups"` + AdminPass string `json:"adminPass"` +} + +// Response 表示整个响应的结构体 +type Response struct { + Server Server `json:"server"` +} + +func (l *CreateMulServerLogic) CreateMulServer(req *types.CreateMulServerReq) (resp *types.CreateMulServerResp, err error) { + // todo: add your logic here and delete this line + CreateServerReq := &openstack.CreateServerReq{} + var response Response + fmt.Println("请求入参:", req) + for _, server := range req.CreateMulServer { + fmt.Println("入参参数:", server) + err = copier.CopyWithOption(CreateServerReq, server, copier.Option{Converters: utils.Converters}) + CreateServerResp, err := l.svcCtx.OpenstackRpc.CreateServer(l.ctx, CreateServerReq) + fmt.Println("返回结果:", CreateServerResp) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrMsg("Failed to create Server list"), "Failed to get db Server list err : %v ,req:%+v", err, req) + } + marshal, err := json.Marshal(&CreateServerResp) + fmt.Println("返回结果b:", marshal) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &response) + } + err = copier.CopyWithOption(&resp, &response, copier.Option{Converters: utils.Converters}) + fmt.Println("返回结果c:", resp) + return resp, err +} diff --git a/api/internal/types/types.go b/api/internal/types/types.go index d6214767..2fa9ef29 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -2735,18 +2735,19 @@ type ListServersDetailedResp struct { } type ServersDetailed struct { - Id string `json:"Id" copier:"Id"` - Name string `json:"Name" copier:"Name"` - OSTaskState uint32 `json:"OSTaskState" copier:"OSTaskState"` - Status string `json:"Status" copier:"Status"` - VmState string `json:"VmState" copier:"VmState"` - OS_EXT_SRV_ATTR_Instance_Name string `json:"OS_EXT_SRV_ATTR_Instance_Name" copier:"OS_EXT_SRV_ATTR_Instance_Name"` - Created string `json:"Created" copier:"Created"` - HostId string `json:"HostId" copier:"HostId"` - Ip string `json:"Ip" copier:"Ip"` - Image string `json:"Image" copier:"Image"` - Updated string `json:"Updated" copier:"Updated"` - Flavor string `json:"Flavor" copier:"Flavor"` + Id string `json:"id" copier:"Id"` + Name string `json:"name" copier:"Name"` + OSTaskState uint32 `json:"os_task_state" copier:"OSTaskState"` + Status string `json:"status" copier:"Status"` + VmState string `json:"vm_state" copier:"VmState"` + OS_EXT_SRV_ATTR_Instance_Name string `json:"os_ext_srv_attr_instance_name" copier:"OS_EXT_SRV_ATTR_Instance_Name"` + Created string `json:"created" copier:"Created"` + HostId string `json:"hostId" copier:"HostId"` + Ip string `json:"ip" copier:"Ip"` + Image string `json:"image" copier:"Image"` + Updated string `json:"updated" copier:"Updated"` + Flavor string `json:"flavor" copier:"Flavor"` + Key_name string `json:"key_name" copier:"Key_name"` } type GetServersDetailedByIdReq struct { @@ -2983,6 +2984,44 @@ type ServerResp struct { AdminPass string `json:"adminPass" copier:"AdminPass"` } +type CreateMulServerReq struct { + CreateMulServer []CreateMulServer `json:"createMulServer,optional"` +} + +type CreateMulServer struct { + Platform string `json:"platform,optional"` + CrServer MulCrServer `json:"crserver" copier:"CrServer"` +} + +type MulCrServer struct { + Server MulServer `json:"server" copier:"Server"` +} + +type MulServer struct { + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Name string `json:"name,optional" copier:"Name"` + FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"` + Description string `json:"description,optional" copier:"Description"` + ImageRef string `json:"imageRef,optional" copier:"ImageRef"` + Networks []CreNetwork `json:"networks,optional" copier:"Networks"` + MinCount int32 `json:"min_count,optional" copier:"MinCount"` +} + +type CreateMulServerResp struct { + Server []MulServerResp `json:"server" copier:"Server"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type MulServerResp struct { + Id string `json:"id" copier:"Id"` + Links []Links `json:"links" copier:"Links"` + OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"` + SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"` + AdminPass string `json:"adminPass" copier:"AdminPass"` +} + type RebuildServerReq struct { ServerId string `json:"server_id" copier:"ServerId"` Platform string `form:"platform,optional"` diff --git a/go.mod b/go.mod index 1717af8a..03bfbc16 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module gitlink.org.cn/JointCloud/pcm-coordinator -go 1.22 - -toolchain go1.22.1 +go 1.21 require ( github.com/JCCE-nudt/zero-contrib/zrpc/registry/nacos v0.0.0-20230419021610-13bbc83fbc3c @@ -25,7 +23,7 @@ require ( github.com/rs/zerolog v1.28.0 github.com/zeromicro/go-zero v1.6.3 gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c - gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d + gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240402074843-46c7d05954e6 gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5 gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20240301085553-f6ad88fa357a gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d @@ -164,8 +162,8 @@ require ( golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.18.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 4c2e07cc..60c36c6f 100644 --- a/go.sum +++ b/go.sum @@ -464,6 +464,7 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -728,6 +729,7 @@ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/z github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= @@ -1079,10 +1081,10 @@ github.com/zeromicro/go-zero v1.6.3 h1:OL0NnHD5LdRNDolfcK9vUkJt7K8TcBE3RkzfM8poO github.com/zeromicro/go-zero v1.6.3/go.mod h1:XZL435ZxVi9MSXXtw2MRQhHgx6OoX3++MRMOE9xU70c= gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c h1:2Wl/hvaSFjh6fmCSIQhjkr9llMRREQeqcXNLZ/HPY18= gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c/go.mod h1:lSRfGs+PxFvw7CcndHWRd6UlLlGrZn0b0hp5cfaMNGw= -gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240328020739-cbdd8f5b226b h1:suRANMHQPhKKmgdJOZcbFYDJ0NUQkUGgVvMKxw75BQI= -gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240328020739-cbdd8f5b226b/go.mod h1:i2rrbMQ+Fve345BY9Heh4MUqVTAimZQElQhzzRee5B8= gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d h1:ZX/Kg8eKdaAfDsTd+Y+TrJsUvxp/DpbWUp+Ij4CtR+s= gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d/go.mod h1:i2rrbMQ+Fve345BY9Heh4MUqVTAimZQElQhzzRee5B8= +gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240402074843-46c7d05954e6 h1:d40gT5SaARH82SWJMMOao9iJ4QxrnjswjHFmU3tCPac= +gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240402074843-46c7d05954e6/go.mod h1:i2rrbMQ+Fve345BY9Heh4MUqVTAimZQElQhzzRee5B8= gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5 h1:+/5vnzkJBfMRnya1NrhOzlroUtRa5ePiYbPKlHLoLV0= gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5/go.mod h1:97AlUXN13g9UN3+9/DzCHpeoU5sbdyv0IQuTEHNexzQ= gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20240301085553-f6ad88fa357a h1:fY1KmyZ6O7wVBvgt2HB+C9e1DncJdk/Wkv8m5Qz7abw= @@ -1094,18 +1096,12 @@ gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20231101085149-724c7c4c gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20240222124813-e275cfa342f4 h1:NrxKAZ5uAzshB9EHcPw+XTOTzpxb5HslNRMYBrFC1Qo= gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20240222124813-e275cfa342f4/go.mod h1:uyvpVqG1jHDXX+ubXI0RBwnWXzVykD/mliqGQIDvRoo= go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA= -go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= -go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= go.etcd.io/etcd/api/v3 v3.5.13 h1:8WXU2/NBge6AUF1K1gOexB6e07NgsN1hXK0rSTtgSp4= go.etcd.io/etcd/api/v3 v3.5.13/go.mod h1:gBqlqkcMMZMVTMm4NDZloEVJzxQOQIls8splbqBDa0c= go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY= -go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= -go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= go.etcd.io/etcd/client/pkg/v3 v3.5.13 h1:RVZSAnWWWiI5IrYAXjQorajncORbS0zI48LQlE2kQWg= go.etcd.io/etcd/client/pkg/v3 v3.5.13/go.mod h1:XxHT4u1qU12E2+po+UVPrEeL94Um6zL58ppuJWXSAB8= go.etcd.io/etcd/client/v3 v3.5.7/go.mod h1:sOWmj9DZUMyAngS7QQwCyAXXAL6WhgTOPLNS/NabQgw= -go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= -go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.etcd.io/etcd/client/v3 v3.5.13 h1:o0fHTNJLeO0MyVbc7I3fsCf6nrOqn5d+diSarKnB2js= go.etcd.io/etcd/client/v3 v3.5.13/go.mod h1:cqiAeY8b5DEEcpxvgWKsbLIWNM/8Wy2xJSDMtioMcoI= go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= @@ -1755,8 +1751,12 @@ google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa h1:Jt1XW5PaLXF1/ePZrznsh/aAUvI7Adfc3LY1dAKlzRs= google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:K4kfzHtI0kqWA79gecJarFtDn/Mls+GxQcg3Zox91Ac= +google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38= +google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c= google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa h1:RBgMaUMP+6soRkik4VoN8ojR2nex2TqZwjSSogic+eo= google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=