From ca27385099ed77d423d17387f8a6a5120c61f899 Mon Sep 17 00:00:00 2001 From: zhouqunjie Date: Thu, 31 Aug 2023 12:12:13 +0800 Subject: [PATCH] =?UTF-8?q?openstack=20C=E7=AB=AF=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: 1b06963640128ac9c65b621ce96830d1aef14c42 --- api/desc/pcm.api | 93 ++-- api/desc/vm/pcm-vm.api | 438 ++++++++++++++++++ api/etc/pcm.yaml | 4 +- api/internal/config/config.go | 1 + api/internal/handler/routes.go | 77 +++ .../handler/vm/createnetworkhandler.go | 28 ++ .../handler/vm/createserverhandler.go | 28 ++ .../handler/vm/createsubnethandler.go | 28 ++ .../handler/vm/createvolumehandler.go | 28 ++ api/internal/handler/vm/deleteimagehandler.go | 28 ++ .../handler/vm/deletenetworkhandler.go | 28 ++ .../handler/vm/deleteserverhandler.go | 28 ++ .../handler/vm/deletevolumehandler.go | 28 ++ .../handler/vm/listflavorsdetailhandler.go | 28 ++ api/internal/handler/vm/listimageshandler.go | 28 ++ .../handler/vm/listnetworkshandler.go | 28 ++ api/internal/handler/vm/listserverhandler.go | 28 ++ .../handler/vm/listserversdetailedhandler.go | 28 ++ .../handler/vm/listvolumesdetailhandler.go | 28 ++ api/internal/logic/vm/createnetworklogic.go | 48 ++ api/internal/logic/vm/createserverlogic.go | 48 ++ api/internal/logic/vm/createsubnetlogic.go | 48 ++ api/internal/logic/vm/createvolumelogic.go | 48 ++ api/internal/logic/vm/deleteimagelogic.go | 48 ++ api/internal/logic/vm/deletenetworklogic.go | 48 ++ api/internal/logic/vm/deleteserverlogic.go | 48 ++ api/internal/logic/vm/deletevolumelogic.go | 48 ++ .../logic/vm/listflavorsdetaillogic.go | 48 ++ api/internal/logic/vm/listimageslogic.go | 48 ++ api/internal/logic/vm/listnetworkslogic.go | 48 ++ api/internal/logic/vm/listserverlogic.go | 47 ++ .../logic/vm/listserversdetailedlogic.go | 49 ++ .../logic/vm/listvolumesdetaillogic.go | 49 ++ api/internal/svc/servicecontext.go | 3 + api/internal/types/types.go | 389 ++++++++++++++++ go.mod | 21 +- rpc/etc/pcmcore.yaml | 2 +- 37 files changed, 2052 insertions(+), 41 deletions(-) create mode 100644 api/desc/vm/pcm-vm.api create mode 100644 api/internal/handler/vm/createnetworkhandler.go create mode 100644 api/internal/handler/vm/createserverhandler.go create mode 100644 api/internal/handler/vm/createsubnethandler.go create mode 100644 api/internal/handler/vm/createvolumehandler.go create mode 100644 api/internal/handler/vm/deleteimagehandler.go create mode 100644 api/internal/handler/vm/deletenetworkhandler.go create mode 100644 api/internal/handler/vm/deleteserverhandler.go create mode 100644 api/internal/handler/vm/deletevolumehandler.go create mode 100644 api/internal/handler/vm/listflavorsdetailhandler.go create mode 100644 api/internal/handler/vm/listimageshandler.go create mode 100644 api/internal/handler/vm/listnetworkshandler.go create mode 100644 api/internal/handler/vm/listserverhandler.go create mode 100644 api/internal/handler/vm/listserversdetailedhandler.go create mode 100644 api/internal/handler/vm/listvolumesdetailhandler.go create mode 100644 api/internal/logic/vm/createnetworklogic.go create mode 100644 api/internal/logic/vm/createserverlogic.go create mode 100644 api/internal/logic/vm/createsubnetlogic.go create mode 100644 api/internal/logic/vm/createvolumelogic.go create mode 100644 api/internal/logic/vm/deleteimagelogic.go create mode 100644 api/internal/logic/vm/deletenetworklogic.go create mode 100644 api/internal/logic/vm/deleteserverlogic.go create mode 100644 api/internal/logic/vm/deletevolumelogic.go create mode 100644 api/internal/logic/vm/listflavorsdetaillogic.go create mode 100644 api/internal/logic/vm/listimageslogic.go create mode 100644 api/internal/logic/vm/listnetworkslogic.go create mode 100644 api/internal/logic/vm/listserverlogic.go create mode 100644 api/internal/logic/vm/listserversdetailedlogic.go create mode 100644 api/internal/logic/vm/listvolumesdetaillogic.go diff --git a/api/desc/pcm.api b/api/desc/pcm.api index 86631bd7..9f159fae 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -5,6 +5,7 @@ import ( "hpc/pcm-hpc.api" "ai/pcm-ai.api" "storage/pcm-storage.api" + "vm/pcm-vm.api" ) info( @@ -23,49 +24,49 @@ info( service pcm { @handler scheduleTaskByYamlHandler post /core/scheduleTaskByYaml (scheduleTaskByYamlReq) returns () - + @handler scheduleTaskHandler post /core/scheduleTask (scheduleTaskReq) returns () - + @handler TaskListHandler get /core/taskList () returns (taskListResp) - + @handler JobTotalHandler get /core/jobTotal () returns (jobTotalResp) - + @handler listCenterHandler get /core/listCenter () returns (listCenterResp) - + @handler listClusterHandler get /core/listCluster/:centerId (listClusterReq) returns (listClusterResp) - + @handler submitJobHandler post /core/submitJob (submitJobReq) returns (submitJobResp) - + @handler getRegionHandler get /core/getRegion () returns (getRegionResp) - + @handler listRegionHandler get /core/listRegion () returns (listRegionResp) - + @handler getComputingPowerHandler get /core/getComputingPower returns (cpResp) - + @handler getGeneralInfoHandler get /core/getGeneralInfo () returns (GiResp) - + @handler listDomainResourceHandler get /core/listDomainResource returns (DomainResourceResp) - + @handler getResourcePanelConfigHandler get /core/getResourcePanelConfigHandler () returns (ResourcePanelConfigResp) - + @handler putResourcePanelConfigHandler put /core/resourcePanelConfigHandler (ResourcePanelConfigReq) returns () - + @handler nodeAssetsHandler get /core/assets () returns (NodeAssetsResp) - + } //hpc二级接口 @@ -76,10 +77,10 @@ service pcm { service pcm { @handler listJobHandler get /hpc/listJob (listJobReq) returns (listJobResp) - + @handler listHistoryJobHandler get /hpc/listHistoryJob (listHistoryJobReq) returns (listHistoryJobResp) - + @handler queueAssetsHandler get /queue/assets () returns (QueueAssetsResp) } @@ -92,10 +93,10 @@ service pcm { service pcm { @handler listDataSetHandler get /ai/listDataSet/:projectId (DataSetReq) returns (DataSetResp) - + @handler CreateDataSetHandler post /ai/createDataSet/:projectId (CreateDataSetReq) returns (CreateDataSetResp) - + @handler DeleteDataSetHandler delete /ai/deleteDataSet/:projectId/:datasetId (DeleteDataSetReq) returns (DeleteDataSetResp) // creat task 创建导入任务 @@ -126,7 +127,7 @@ service pcm { // ShowAlgorithmByUuid 展示算法详情 @handler ShowAlgorithmByUuid get /ai/ShowAlgorithmByUuid/:projectId/:algorithmId (ShowAlgorithmByUuidReq) returns (ShowAlgorithmByUuidResp) - + // creat export task 创建导出任务 @handler CreateExportTaskHandler post /ai/CreateExportTask/:projectId/:datasetId (CreateExportTaskReq) returns (ExportTaskDataResp) @@ -134,11 +135,11 @@ service pcm { get /ai/GetExportTasksOfDataset/:projectId/:datasetId (GetExportTasksOfDatasetReq) returns (GetExportTasksOfDatasetResp) @handler GetExportTaskStatusOfDatasetHandler get /ai/GetExportTaskStatusOfDataset/:projectId/:resourceId/:taskId (GetExportTaskStatusOfDatasetReq) returns (GetExportTaskStatusOfDatasetResp) - + // create processor task 创建处理任务 @handler CreateProcessorTaskHandler post /ai/CreateProcessorTask (CreateProcessorTaskReq) returns (CreateProcessorTaskResp) - + // create service 创建服务 @handler CreateServiceHandler post /ai/CreateService/:projectId (CreateServiceReq) returns (CreateServiceResp) @@ -154,7 +155,7 @@ service pcm { // ListClusters查询专属资源池列表 @handler ListClustersHandler get /ai/ListClusters (ListClustersReq) returns (ListClustersResp) - + /******************Notebook Method start*************************/ @handler listNotebookHandler get /ai/listNotebook (ListNotebookReq) returns (ListNotebookResp) @@ -169,7 +170,7 @@ service pcm { @handler mountNotebookStorageHandler post /ai/mountNotebookStorage (MountNotebookStorageReq) returns (MountNotebookStorageResp) /******************Notebook Method end*************************/ - + /******************Visualization Job Method start*************************/ @handler getVisualizationJobHandler get /ai/getVisualizationJob (GetVisualizationJobReq) returns (GetVisualizationJobResp) @@ -200,16 +201,52 @@ service pcm { service pcm { @handler uploadHandler post /upload () returns () - + @handler chunkHandler post /chunk () returns () - + @handler imageListHandler get /image/list () returns (imageListResp) - + @handler dataSetCheckHandler get /dataSet/check/:fileMd5 (checkReq) returns (checkResp) - + @handler uploadDataSetHandler post /dataSet/upload () returns () +} + +//openstack 接口 +@server( + prefix: pcm/v1 + group : vm +) +service pcm { + @handler ListServerHandler + get /vm/listServer (ListServersReq) returns (ListServersResp) + @handler ListServersDetailedHandler + get /vm/listServersDetailed (ListServersDetailedReq) returns (ListServersDetailedResp) + @handler DeleteServerHandler + delete /vm/deleteServer (DeleteServerReq) returns (DeleteServerResp) + @handler ListImagesHandler + get /vm/listImages (ListImagesReq) returns (ListImagesResp) + @handler DeleteImageHandler + delete /vm/deleteImage (DeleteImageReq) returns (DeleteImageResp) + @handler ListNetworksHandler + get /vm/listNetworks (ListNetworksReq) returns (ListNetworksResp) + @handler DeleteNetworkHandler + delete /vm/deleteNetwork (DeleteNetworkReq) returns (DeleteNetworkResp) + @handler CreateNetworkHandler + post /vm/createNetwork (CreateNetworkReq) returns (CreateNetworkResp) + @handler CreateSubnetHandler + post /vm/createSubnet (CreateSubnetReq) returns (CreateSubnetResp) + @handler ListVolumesDetailHandler + get /vm/listVolumesDetail (ListVolumesDetailReq) returns (ListVolumesDetailResp) + @handler DeleteVolumeHandler + delete /vm/deleteVolume (DeleteVolumeReq) returns (DeleteVolumeResp) + @handler CreateVolumeHandler + post /vm/createVolume (CreateVolumeReq) returns (CreateVolumeResp) + @handler ListFlavorsDetailHandler + get /vm/listFlavorsDetail (ListFlavorsDetailReq) returns (ListFlavorsDetailResp) + @handler CreateServerHandler + post /vm/createServer (CreateServerReq) returns (CreateServerResp) } \ No newline at end of file diff --git a/api/desc/vm/pcm-vm.api b/api/desc/vm/pcm-vm.api new file mode 100644 index 00000000..8c5a884b --- /dev/null +++ b/api/desc/vm/pcm-vm.api @@ -0,0 +1,438 @@ +syntax = "v1" + +info( + title: "VM core" + desc: "VM core微服务" + author: "wanqgi" + email: "1364512070@qq.com" +) + +/****************** servers start*************************/ + +type ( + ListServersReq { + Limit int32 `form:"limit,optional"` + OffSet int32 `form:"offSet,optional"` + } + ListServersResp { + TotalNumber uint32 `json:"totalNumber" copier:"TotalNumber"` + Servers []Servers `json:"servers" copier:"Servers"` + servers_links []Servers_links `json:"serversLinks" copier:"Servers_links"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + + Servers { + Id string `json:"id" copier:"Id"` + Name string `json:"name" copier:"Name"` + Links []Links `json:"links " copier:"Links "` + } + + Links { + Href string `json:"href " copier:"Href"` + Rel string `json:"rel" copier:"Rel"` + } + + Servers_links{ + Href string `json:"href " copier:"Href"` + Rel string `json:"rel" copier:"Rel"` + } +) + +type( + ListServersDetailedReq{ + + } + ListServersDetailedResp{ + ServersDetailed []ServersDetailed `json:"servers" copier:"ServersDetailed"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + + ServersDetailed{ + created string `json:"created" copier:"created"` + id string `json:"id" copier:"id"` + key_name string `json:"key_name" copier:"key_name"` + locked bool `json:"locked" copier:"locked"` + name string `json:"name" copier:"name"` + progress uint32 `json:"progress" copier:"progress"` + status string `json:"status" copier:"status"` + tenant_id string `json:"tenant_id" copier:"tenant_id"` + updated string `json:"updated" copier:"updated"` + user_id string `json:"user_id" copier:"user_id"` + } +) + +type ( + DeleteServerReq{ + ServerId string `form:"server_id" copier:"ServerId"` + } + + DeleteServerResp{ + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } +) + +type ( + CreateServerReq{ + Server Server `json:"server" copier:"Server"` + } + CreateServerResp{ + Server ServerResp `json:"server" copier:"Server"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + Server { + Name string `json:"name" copier:"Name"` + FlavorRef string `json:"flavorRef" copier:"FlavorRef"` + ImageRef string `json:"imageRef" copier:"ImageRef"` + Networks []CreNetwork `json:"networks" copier:"Networks"` + //AdminPass string `json:"adminPass" copier:"AdminPass"` + } + CreNetwork { + Uuid string `json:"uuid" copier:"Uuid"` + } + ServerResp { + Id string `json:"id" copier:"Id"` + Links []Links `json:"links" copier:"Links"` + OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"` + SecurityGroups []Security_groups `json:"security_groups" copier:"SecurityGroups"` + AdminPass string `json:"adminPass" copier:"AdminPass"` + + } + Security_groups { + Name string `json:"name" copier:"Name"` + } +) + +/****************** servers end*************************/ + +/******************find images end*************************/ +type ( + ListImagesReq { + Limit int32 `form:"limit,optional"` + + // Marker string `json:"marker" copier:"Marker"` + // Name string `json:"name" copier:"Name"` + // Owner string `json:"owner" copier:"Owner"` + // Protected bool `json:"protected" copier:"Protected"` + // Status int32 `json:"status" copier:"Status"` + // Visibility int32 `json:"visibility" copier:"Visibility"` + // Os_hidden bool `json:"os_hidden" copier:"Os_hidden"` + // Member_status string `json:"member_status" copier:"Member_status"` + // Size_max string `json:"size_max" copier:"Size_max"` + // Size_min string `json:"size_min" copier:"Size_min"` + // Created_at string `json:"created_at" copier:"Created_at"` + // Updated_at string `json:"updated_at" copier:"Updated_at"` + // Sort_dir string `json:"sort_dir" copier:"Sort_dir"` + // Sort_key string `json:"sort_key" copier:"Sort_key"` + // Sort string `json:"sort" copier:"Sort"` + } + ListImagesResp { + First string `json:"first" copier:"First"` + Next string `json:"next" copier:"Next"` + Schema string `json:"schema" copier:"Schema"` + Images []Images `json:"images" copier:"Images"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + Images { + Status string `json:"status" copier:"Status"` + Name string `json:"name" copier:"Name"` + Tags []Tags `json:"tags" copier:"Tags"` + Container_format string `json:"container_format" copier:"Container_format"` + Created_at string `json:"created_at" copier:"Created_at"` + Disk_format string `json:"disk_format" copier:"Disk_format"` + Updated_at string `json:"updated_at" copier:"Updated_at"` + Visibility string `json:"visibility" copier:"Visibility"` + Self string `json:"self" copier:"Self"` + min_disk uint32 `json:"min_disk" copier:"Min_disk"` + Protected bool `json:"protected" copier:"Protected"` + Id string `json:"id" copier:"Id"` + File string `json:"file" copier:"File"` + Checksum string `json:"checksum" copier:"Checksum"` + Os_hash_algo string `json:"os_hash_algo" copier:"Os_hash_algo"` + Os_hash_value string `json:"os_hash_value" copier:"Os_hash_value"` + Os_hidden string `json:"os_hidden" copier:"Os_hidden"` + Owner string `json:"owner" copier:"Owner"` + Size uint32 `json:"size" copier:"Size"` + Min_ram uint32 `json:"min_ram" copier:"Min_ram"` + Schema string `json:"schema" copier:"Schema"` + Virtual_size int32 `json:"virtual_size" copier:"Virtual_size"` + } + Tags { + } +) + +type( + CreateImageReq{ + Container_format string `json:"container_format" copier:"Container_format"` + Disk_format string `json:"disk_format" copier:"Disk_format"` + Id string `json:"id" copier:"Id"` + Min_disk string `json:"min_disk" copier:"Min_disk"` + Min_ram string `json:"min_ram" copier:"Min_ram"` + Name string `json:"name" copier:"Name"` + Protected string `json:"protected" copier:"Protected"` + Tags []Tags `json:"tags" copier:"Tags"` + visibility string `json:"visibility" copier:"visibility"` +} + CreateImageResq { + Location string `json:"location" copier:"Location"` + } + +) + +type( + DeleteImageReq{ + ImageId string `form:"image_id" copier:"ImageId"` + } + DeleteImageResp { + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + +) +/******************find images end*************************/ + +/******************find Networks end*************************/ +type( + ListNetworksReq{ + + } + ListNetworksResp{ + Networks []Network `json:"networks" copier:"Networks"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + Network { + AdminStateUp bool `json:"admin_state_up" copier:"AdminStateUp"` + AvailabilityZoneHints []string `json:"availability_zone_hints" copier:"AvailabilityZoneHints"` + AvailabilityZones []string `json:"availability_zones" copier:"AvailabilityZones"` + CreatedAt string `json:"created_at" copier:"CreatedAt"` + DnsDomain string `json:"dns_domain" copier:"DnsDomain"` + Id string `json:"id" copier:"Id"` + Ipv4AddressScope string `json:"ipv4_address_scope" copier:"Ipv4AddressScope"` + Ipv6AddressScope string `json:"ipv6_address_scope" copier:"Ipv6AddressScope"` + L2Adjacency bool `json:"l2_adjacency" copier:"L2Adjacency"` + Mtu int64 `json:"mtu" copier:"Mtu"` + Name string `json:"name" copier:"Name"` + PortSecurityEnabled bool `json:"port_security_enabled" copier:"PortSecurityEnabled"` + ProjectId string `json:"project_id" copier:"ProjectId"` + QosPolicyId string `json:"qos_policy_id" copier:"QosPolicyId"` + RevisionNumber string `json:"revision_number" copier:"RevisionNumber"` + Shared bool `json:"shared" copier:"Shared"` + RouterExternal bool `json:"router_external" copier:"RouterExternal"` + Status string `json:"status" copier:"Status"` + Subnets []string `json:"subnets" copier:"Subnets"` + Tags []string `json:"tags" copier:"Tags"` + TenantId string `json:"tenant_id" copier:"TenantId"` + UpdatedAt string `json:"updated_at" copier:"UpdatedAt"` + VlanTransparent bool `json:"vlan_transparent" copier:"VlanTransparent"` + Description string `json:"description" copier:"Description"` + IsDefault bool `json:"is_default" copier:"IsDefault"` + } +) +type( + DeleteNetworkReq{ + NetworkId string `form:"network_id" copier:"NetworkId"` + } + DeleteNetworkResp { + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` + } + +) +type( + CreateNetworkReq{ + Network CreateNetwork `json:"network" copier:"Network"` + } + CreateNetworkResp{ + Network Network `json:"network" copier:"Network"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` + } + CreateNetwork { + AdminStateUp bool `json:"admin_state_up" copier:"AdminStateUp"` + Name string `json:"name" copier:"Name"` + Shared bool `json:"shared" copier:"Shared"` + } +) + +type ( + CreateSubnetReq{ + Subnet Subnet `json:"subnet" copier:"Subnet"` + } + CreateSubnetResp{ + Subnet SubnetResp `json:"subnet" copier:"Subnet"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` + } + Subnet { + NetworkId string `json:"network_id" copier:"NetworkId"` + Name string `json:"name" copier:"Name"` + Cidr string `json:"cidr" copier:"Cidr"` + Ip_version int32 `json:"ip_version" copier:"IpVersion"` + Gateway_ip string `json:"gateway_ip" copier:"GatewayIp"` + Enable_dhcp bool `json:"enable_dhcp" copier:"EnableDhcp"` + Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"AllocationPools"` + Dns_nameservers []string `json:"dns_nameservers" copier:"DnsNameservers"` + Host_routes []string `json:"host_routes" copier:"HostRoutes"` + } + SubnetResp { + Name string `json:"name" copier:"Name"` + Cidr string `json:"cidr" copier:"Cidr"` + Ip_version int32 `json:"ip_version" copier:"Ip_version"` + Gateway_ip string `json:"gateway_ip" copier:"Gateway_ip"` + Enable_dhcp bool `json:"enable_dhcp" copier:"Enable_dhcp"` + Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"Allocation_pools"` + Dns_nameservers []string `json:"dns_nameservers" copier:"Dns_nameservers"` + Host_routes []string `json:"host_routes" copier:"Host_routes"` + Network_id string `json:"network_id" copier:"Network_id"` + Segment_id string `json:"segment_id" copier:"Segment_id"` + Project_id string `json:"project_id" copier:"Project_id"` + Tenant_id string `json:"tenant_id" copier:"Tenant_id"` + Dns_publish_fixed_ip string `json:"Dns_publish_fixed_ip" copier:"Dns_publish_fixed_ip"` + Id string `json:"id" copier:"Id"` + Created_at string `json:"created_at" copier:"Created_at"` + Description string `json:"description" copier:"Description"` + Ipv6_address_mode string `json:"ipv6_address_mode" copier:"Ipv6_address_mode"` + Ipv6_ra_mode string `json:"ipv6_ra_mode" copier:"Ipv6_ra_mode"` + Revision_number string `json:"revision_number" copier:"Revision_number"` + Service_types []string `json:"service_types" copier:"Service_types"` + Subnetpool_id string `json:"subnetpool_id" copier:"Subnetpool_id"` + Tags []string `json:"tags" copier:"Tags"` + Updated_at string `json:"updated_at" copier:"Updated_at"` + } + Allocation_pools{ + Start string `json:"start" copier:"Start"` + End string `json:"end" copier:"End"` + } +) +/******************find Networks end*************************/ + +/******************find ListVolumesDetail start*************************/ +type( + ListVolumesDetailReq{ + + } + ListVolumesDetailResp{ + VolumeDetail []VolumeDetail `json:"volumes" copier:"VolumeDetail"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + + VolumeDetail{ + created_at string `json:"created_at" copier:"created_at"` + id string `json:"id" copier:"id"` + availability_zone string `json:"availability_zone" copier:"availability_zone"` + encrypted bool `json:"encrypted" copier:"encrypted"` + name string `json:"name" copier:"name"` + size int32 `json:"size" copier:"size"` + status string `json:"status" copier:"status"` + tenant_id string `json:"tenant_id" copier:"tenant_id"` + updated string `json:"Updated" copier:"updated"` + user_id string `json:"User_id" copier:"user_id"` + description string `json:"description" copier:"description"` + multiattach bool `json:"multiattach" copier:"multiattach"` + bootable bool `json:"bootable" copier:"bootable"` + volume_type string `json:"volume_type" copier:"volume_type"` + count int32 `json:"count" copier:"Count"` + shared_targets bool `json:"shared_targets" copier:"shared_targets"` + consumes_quota bool `json:"consumes_quota" copier:"consumes_quota"` + } +) + +type( + DeleteVolumeReq{ + VolumeId string `form:"volume_id" copier:"VolumeId"` + cascade bool `json:"cascade" copier:"cascade"` + force bool `json:"force" copier:"force"` + } + DeleteVolumeResp { + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` + } +) + +type( + CreateVolumeReq{ + Volume Volume `json:"volume" copier:"Volume"` + } + CreateVolumeResp { + Volume VolumeResp `json:"volume" copier:"Volume"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` + } + + Volume { + Size int32 `json:"size" copier:"Size"` + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Description string `json:"description" copier:"Description"` + Name string `json:"name" copier:"Name"` + VolumeType string `json:"volume_type" copier:"VolumeType"` + } + + VolumeResp{ + CreatedAt string `json:"created_at" copier:"CreatedAt"` + Id string `json:"id" copier:"Id"` + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Encrypted bool `json:"encrypted" copier:"Encrypted"` + Name string `json:"name" copier:"Name"` + Size int32 `json:"size" copier:"Size"` + Status string `json:"status" copier:"Status"` + TenantId string `json:"tenant_id" copier:"TenantId"` + Updated string `json:"updated" copier:"Updated"` + UserId string `json:"user_id" copier:"UserId"` + Description string `json:"description" copier:"Description"` + Multiattach bool `json:"multiattach" copier:"Multiattach"` + Bootable bool `json:"bootable" copier:"Bootable"` + VolumeType string `json:"volume_type" copier:"VolumeType"` + Count int32 `json:"count" copier:"Count"` + SharedTargets bool `json:"shared_targets" copier:"SharedTargets"` + ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"` + } +) + +/******************find ListVolumesDetail end*************************/ + +type( + ListFlavorsDetailReq{ + + } + + ListFlavorsDetailResp{ + Flavor []Flavors `json:"flavors" copier:"Flavor"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` + } + Flavors{ + name string `json:"name" copier:"name"` + description string `json:"description" copier:"description"` + id string `json:"id" copier:"id"` + disk int32 `json:"disk" copier:"disk"` + ephemeral uint32 `json:"ephemeral" copier:"ephemeral"` + original_name string `json:"original_name" copier:"original_name"` + ram int32 `json:"ram" copier:"ram"` + swap int32 `json:"swap" copier:"swap"` + vcpus int32 `json:"vcpus" copier:"vcpus"` + rxtx_factor float32 `json:"rxtx_factor" copier:"rxtx_factor"` + os_flavor_access_is_public bool `json:"os_flavor_access_is_public" copier:"os_flavor_access_is_public"` + } + + +) \ No newline at end of file diff --git a/api/etc/pcm.yaml b/api/etc/pcm.yaml index 169e9e35..2fbc4829 100644 --- a/api/etc/pcm.yaml +++ b/api/etc/pcm.yaml @@ -4,10 +4,10 @@ NacosConfig: ServerConfigs: # - IpAddr: 127.0.0.1 # Port: 8848 - - IpAddr: nacos.jcce.dev + - IpAddr: 119.45.100.73 Port: 8848 ClientConfig: - NamespaceId: test + NamespaceId: zhouqj TimeoutMs: 5000 NotLoadCacheAtStart: true LogDir: diff --git a/api/internal/config/config.go b/api/internal/config/config.go index f01e508e..bd7392ff 100644 --- a/api/internal/config/config.go +++ b/api/internal/config/config.go @@ -31,6 +31,7 @@ type Config struct { THRpcConf zrpc.RpcClientConf ModelArtsRpcConf zrpc.RpcClientConf CephRpcConf zrpc.RpcClientConf + OpenstackRpcConf zrpc.RpcClientConf OctopusRpcConf zrpc.RpcClientConf NexusUrl string JccScheduleUrl string diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index bdc1c79e..05d1f9ab 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -9,6 +9,7 @@ import ( hpc "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/hpc" image "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/image" storage "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/storage" + vm "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/vm" "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" "github.com/zeromicro/go-zero/rest" @@ -319,4 +320,80 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { }, rest.WithPrefix("/pcm/v1"), ) + + server.AddRoutes( + []rest.Route{ + { + Method: http.MethodGet, + Path: "/vm/listServer", + Handler: vm.ListServerHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/vm/listServersDetailed", + Handler: vm.ListServersDetailedHandler(serverCtx), + }, + { + Method: http.MethodDelete, + Path: "/vm/deleteServer", + Handler: vm.DeleteServerHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/vm/listImages", + Handler: vm.ListImagesHandler(serverCtx), + }, + { + Method: http.MethodDelete, + Path: "/vm/deleteImage", + Handler: vm.DeleteImageHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/vm/listNetworks", + Handler: vm.ListNetworksHandler(serverCtx), + }, + { + Method: http.MethodDelete, + Path: "/vm/deleteNetwork", + Handler: vm.DeleteNetworkHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/vm/createNetwork", + Handler: vm.CreateNetworkHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/vm/createSubnet", + Handler: vm.CreateSubnetHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/vm/listVolumesDetail", + Handler: vm.ListVolumesDetailHandler(serverCtx), + }, + { + Method: http.MethodDelete, + Path: "/vm/deleteVolume", + Handler: vm.DeleteVolumeHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/vm/createVolume", + Handler: vm.CreateVolumeHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/vm/listFlavorsDetail", + Handler: vm.ListFlavorsDetailHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/vm/createServer", + Handler: vm.CreateServerHandler(serverCtx), + }, + }, + rest.WithPrefix("/pcm/v1"), + ) } diff --git a/api/internal/handler/vm/createnetworkhandler.go b/api/internal/handler/vm/createnetworkhandler.go new file mode 100644 index 00000000..3a847ed2 --- /dev/null +++ b/api/internal/handler/vm/createnetworkhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func CreateNetworkHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateNetworkReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewCreateNetworkLogic(r.Context(), svcCtx) + resp, err := l.CreateNetwork(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/createserverhandler.go b/api/internal/handler/vm/createserverhandler.go new file mode 100644 index 00000000..460ec6e3 --- /dev/null +++ b/api/internal/handler/vm/createserverhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func CreateServerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateServerReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewCreateServerLogic(r.Context(), svcCtx) + resp, err := l.CreateServer(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/createsubnethandler.go b/api/internal/handler/vm/createsubnethandler.go new file mode 100644 index 00000000..c36b212a --- /dev/null +++ b/api/internal/handler/vm/createsubnethandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func CreateSubnetHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateSubnetReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewCreateSubnetLogic(r.Context(), svcCtx) + resp, err := l.CreateSubnet(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/createvolumehandler.go b/api/internal/handler/vm/createvolumehandler.go new file mode 100644 index 00000000..a5ef8f50 --- /dev/null +++ b/api/internal/handler/vm/createvolumehandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func CreateVolumeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.CreateVolumeReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewCreateVolumeLogic(r.Context(), svcCtx) + resp, err := l.CreateVolume(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/deleteimagehandler.go b/api/internal/handler/vm/deleteimagehandler.go new file mode 100644 index 00000000..e60c3818 --- /dev/null +++ b/api/internal/handler/vm/deleteimagehandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func DeleteImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteImageReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewDeleteImageLogic(r.Context(), svcCtx) + resp, err := l.DeleteImage(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/deletenetworkhandler.go b/api/internal/handler/vm/deletenetworkhandler.go new file mode 100644 index 00000000..b97e0607 --- /dev/null +++ b/api/internal/handler/vm/deletenetworkhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func DeleteNetworkHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteNetworkReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewDeleteNetworkLogic(r.Context(), svcCtx) + resp, err := l.DeleteNetwork(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/deleteserverhandler.go b/api/internal/handler/vm/deleteserverhandler.go new file mode 100644 index 00000000..7c479d0b --- /dev/null +++ b/api/internal/handler/vm/deleteserverhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func DeleteServerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteServerReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewDeleteServerLogic(r.Context(), svcCtx) + resp, err := l.DeleteServer(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/deletevolumehandler.go b/api/internal/handler/vm/deletevolumehandler.go new file mode 100644 index 00000000..5719f6cb --- /dev/null +++ b/api/internal/handler/vm/deletevolumehandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func DeleteVolumeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.DeleteVolumeReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewDeleteVolumeLogic(r.Context(), svcCtx) + resp, err := l.DeleteVolume(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listflavorsdetailhandler.go b/api/internal/handler/vm/listflavorsdetailhandler.go new file mode 100644 index 00000000..d4b6824f --- /dev/null +++ b/api/internal/handler/vm/listflavorsdetailhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListFlavorsDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListFlavorsDetailReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListFlavorsDetailLogic(r.Context(), svcCtx) + resp, err := l.ListFlavorsDetail(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listimageshandler.go b/api/internal/handler/vm/listimageshandler.go new file mode 100644 index 00000000..707897dd --- /dev/null +++ b/api/internal/handler/vm/listimageshandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListImagesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListImagesReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListImagesLogic(r.Context(), svcCtx) + resp, err := l.ListImages(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listnetworkshandler.go b/api/internal/handler/vm/listnetworkshandler.go new file mode 100644 index 00000000..e03dc093 --- /dev/null +++ b/api/internal/handler/vm/listnetworkshandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListNetworksHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListNetworksReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListNetworksLogic(r.Context(), svcCtx) + resp, err := l.ListNetworks(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listserverhandler.go b/api/internal/handler/vm/listserverhandler.go new file mode 100644 index 00000000..d7351902 --- /dev/null +++ b/api/internal/handler/vm/listserverhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListServerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListServersReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListServerLogic(r.Context(), svcCtx) + resp, err := l.ListServer(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listserversdetailedhandler.go b/api/internal/handler/vm/listserversdetailedhandler.go new file mode 100644 index 00000000..fdcf54f8 --- /dev/null +++ b/api/internal/handler/vm/listserversdetailedhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListServersDetailedHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListServersDetailedReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListServersDetailedLogic(r.Context(), svcCtx) + resp, err := l.ListServersDetailed(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/handler/vm/listvolumesdetailhandler.go b/api/internal/handler/vm/listvolumesdetailhandler.go new file mode 100644 index 00000000..e02c77f9 --- /dev/null +++ b/api/internal/handler/vm/listvolumesdetailhandler.go @@ -0,0 +1,28 @@ +package vm + +import ( + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/vm" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func ListVolumesDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.ListVolumesDetailReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := vm.NewListVolumesDetailLogic(r.Context(), svcCtx) + resp, err := l.ListVolumesDetail(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/api/internal/logic/vm/createnetworklogic.go b/api/internal/logic/vm/createnetworklogic.go new file mode 100644 index 00000000..5c1e81e0 --- /dev/null +++ b/api/internal/logic/vm/createnetworklogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateNetworkLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewCreateNetworkLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateNetworkLogic { + return &CreateNetworkLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateNetworkLogic) CreateNetwork(req *types.CreateNetworkReq) (resp *types.CreateNetworkResp, err error) { + // todo: add your logic here and delete this line + CreateNetworkReq := &openstack.CreateNetworkReq{} + err = copier.CopyWithOption(CreateNetworkReq, req, copier.Option{Converters: tool.Converters}) + CreateNetworkResp, err := l.svcCtx.OpenstackRpc.CreateNetwork(l.ctx, CreateNetworkReq) + 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(&CreateNetworkResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &CreateNetworkResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/createserverlogic.go b/api/internal/logic/vm/createserverlogic.go new file mode 100644 index 00000000..3de4c579 --- /dev/null +++ b/api/internal/logic/vm/createserverlogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateServerLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewCreateServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateServerLogic { + return &CreateServerLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateServerLogic) CreateServer(req *types.CreateServerReq) (resp *types.CreateServerResp, err error) { + // todo: add your logic here and delete this line + CreateServerReq := &openstack.CreateServerReq{} + err = copier.CopyWithOption(CreateServerReq, req, copier.Option{Converters: tool.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: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/createsubnetlogic.go b/api/internal/logic/vm/createsubnetlogic.go new file mode 100644 index 00000000..0696cb85 --- /dev/null +++ b/api/internal/logic/vm/createsubnetlogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateSubnetLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewCreateSubnetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateSubnetLogic { + return &CreateSubnetLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateSubnetLogic) CreateSubnet(req *types.CreateSubnetReq) (resp *types.CreateSubnetResp, err error) { + // todo: add your logic here and delete this line + CreateSubnetReq := &openstack.CreateSubnetReq{} + err = copier.CopyWithOption(CreateSubnetReq, req, copier.Option{Converters: tool.Converters}) + CreateSubnetResp, err := l.svcCtx.OpenstackRpc.CreateSubnet(l.ctx, CreateSubnetReq) + 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(&CreateSubnetResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &CreateSubnetResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/createvolumelogic.go b/api/internal/logic/vm/createvolumelogic.go new file mode 100644 index 00000000..45ea3484 --- /dev/null +++ b/api/internal/logic/vm/createvolumelogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type CreateVolumeLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewCreateVolumeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateVolumeLogic { + return &CreateVolumeLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *CreateVolumeLogic) CreateVolume(req *types.CreateVolumeReq) (resp *types.CreateVolumeResp, err error) { + // todo: add your logic here and delete this line + CreateVolumeReq := &openstack.CreateVolumeReq{} + err = copier.CopyWithOption(CreateVolumeReq, req, copier.Option{Converters: tool.Converters}) + CreateVolumeResp, err := l.svcCtx.OpenstackRpc.CreateVolume(l.ctx, CreateVolumeReq) + 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(&CreateVolumeResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &CreateVolumeResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/deleteimagelogic.go b/api/internal/logic/vm/deleteimagelogic.go new file mode 100644 index 00000000..88b52dba --- /dev/null +++ b/api/internal/logic/vm/deleteimagelogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteImageLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDeleteImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteImageLogic { + return &DeleteImageLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteImageLogic) DeleteImage(req *types.DeleteImageReq) (resp *types.DeleteImageResp, err error) { + // todo: add your logic here and delete this line + DeleteImageReq := &openstack.DeleteImageReq{} + err = copier.CopyWithOption(DeleteImageReq, req, copier.Option{Converters: tool.Converters}) + DeleteImageResp, err := l.svcCtx.OpenstackRpc.DeleteImage(l.ctx, DeleteImageReq) + 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(&DeleteImageResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &DeleteImageResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/deletenetworklogic.go b/api/internal/logic/vm/deletenetworklogic.go new file mode 100644 index 00000000..d6caef8b --- /dev/null +++ b/api/internal/logic/vm/deletenetworklogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteNetworkLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDeleteNetworkLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteNetworkLogic { + return &DeleteNetworkLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteNetworkLogic) DeleteNetwork(req *types.DeleteNetworkReq) (resp *types.DeleteNetworkResp, err error) { + // todo: add your logic here and delete this line + DeleteNetworkReq := &openstack.DeleteNetworkReq{} + err = copier.CopyWithOption(DeleteNetworkReq, req, copier.Option{Converters: tool.Converters}) + DeleteNetworkResp, err := l.svcCtx.OpenstackRpc.DeleteNetwork(l.ctx, DeleteNetworkReq) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrMsg("Failed to delete network "), "Failed to delete network err : %v ,req:%+v", err, req) + } + marshal, err := json.Marshal(&DeleteNetworkResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &DeleteNetworkResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/deleteserverlogic.go b/api/internal/logic/vm/deleteserverlogic.go new file mode 100644 index 00000000..643c9d73 --- /dev/null +++ b/api/internal/logic/vm/deleteserverlogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteServerLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDeleteServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteServerLogic { + return &DeleteServerLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteServerLogic) DeleteServer(req *types.DeleteServerReq) (resp *types.DeleteServerResp, err error) { + // todo: add your logic here and delete this line + DeleteServerReq := &openstack.DeleteServerReq{} + err = copier.CopyWithOption(DeleteServerReq, req, copier.Option{Converters: tool.Converters}) + DeleteServerResp, err := l.svcCtx.OpenstackRpc.DeleteServer(l.ctx, DeleteServerReq) + 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(&DeleteServerResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &DeleteServerResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/deletevolumelogic.go b/api/internal/logic/vm/deletevolumelogic.go new file mode 100644 index 00000000..064918c3 --- /dev/null +++ b/api/internal/logic/vm/deletevolumelogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteVolumeLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDeleteVolumeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteVolumeLogic { + return &DeleteVolumeLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DeleteVolumeLogic) DeleteVolume(req *types.DeleteVolumeReq) (resp *types.DeleteVolumeResp, err error) { + // todo: add your logic here and delete this line + DeleteVolumeReq := &openstack.DeleteVolumeReq{} + err = copier.CopyWithOption(DeleteVolumeReq, req, copier.Option{Converters: tool.Converters}) + DeleteVolumeResp, err := l.svcCtx.OpenstackRpc.DeleteVolume(l.ctx, DeleteVolumeReq) + 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(&DeleteVolumeResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &DeleteVolumeResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/listflavorsdetaillogic.go b/api/internal/logic/vm/listflavorsdetaillogic.go new file mode 100644 index 00000000..55c3cf27 --- /dev/null +++ b/api/internal/logic/vm/listflavorsdetaillogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListFlavorsDetailLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListFlavorsDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListFlavorsDetailLogic { + return &ListFlavorsDetailLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListFlavorsDetailLogic) ListFlavorsDetail(req *types.ListFlavorsDetailReq) (resp *types.ListFlavorsDetailResp, err error) { + // todo: add your logic here and delete this line + ListFlavorsDetailReq := &openstack.ListFlavorsDetailReq{} + err = copier.CopyWithOption(ListFlavorsDetailReq, req, copier.Option{Converters: tool.Converters}) + ListFlavorsDetailResp, err := l.svcCtx.OpenstackRpc.ListFlavorsDetail(l.ctx, ListFlavorsDetailReq) + 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(&ListFlavorsDetailResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListFlavorsDetailResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/listimageslogic.go b/api/internal/logic/vm/listimageslogic.go new file mode 100644 index 00000000..3a3242b5 --- /dev/null +++ b/api/internal/logic/vm/listimageslogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListImagesLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListImagesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListImagesLogic { + return &ListImagesLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListImagesLogic) ListImages(req *types.ListImagesReq) (resp *types.ListImagesResp, err error) { + // todo: add your logic here and delete this line + ListImagesReq := &openstack.ListImagesReq{} + err = copier.CopyWithOption(ListImagesReq, req, copier.Option{Converters: tool.Converters}) + ListImagesResp, err := l.svcCtx.OpenstackRpc.LisImages(l.ctx, ListImagesReq) + 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(&ListImagesResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListImagesResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/listnetworkslogic.go b/api/internal/logic/vm/listnetworkslogic.go new file mode 100644 index 00000000..146ee3bd --- /dev/null +++ b/api/internal/logic/vm/listnetworkslogic.go @@ -0,0 +1,48 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListNetworksLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListNetworksLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListNetworksLogic { + return &ListNetworksLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListNetworksLogic) ListNetworks(req *types.ListNetworksReq) (resp *types.ListNetworksResp, err error) { + // todo: add your logic here and delete this line + ListNetworksReq := &openstack.ListNetworksReq{} + err = copier.CopyWithOption(ListNetworksReq, req, copier.Option{Converters: tool.Converters}) + ListNetworksResp, err := l.svcCtx.OpenstackRpc.ListNetworks(l.ctx, ListNetworksReq) + 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(&ListNetworksResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListNetworksResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/listserverlogic.go b/api/internal/logic/vm/listserverlogic.go new file mode 100644 index 00000000..380b7bff --- /dev/null +++ b/api/internal/logic/vm/listserverlogic.go @@ -0,0 +1,47 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListServerLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListServerLogic { + return &ListServerLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListServerLogic) ListServer(req *types.ListServersReq) (resp *types.ListServersResp, err error) { + // todo: add your logic here and delete this line + ListServersReq := &openstack.ListServersReq{} + err = copier.CopyWithOption(ListServersReq, req, copier.Option{Converters: tool.Converters}) + ListServersResp, err := l.svcCtx.OpenstackRpc.ListServers(l.ctx, ListServersReq) + 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(&ListServersResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListServersResp, copier.Option{Converters: tool.Converters}) + return resp, err +} diff --git a/api/internal/logic/vm/listserversdetailedlogic.go b/api/internal/logic/vm/listserversdetailedlogic.go new file mode 100644 index 00000000..7551e52b --- /dev/null +++ b/api/internal/logic/vm/listserversdetailedlogic.go @@ -0,0 +1,49 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListServersDetailedLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListServersDetailedLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListServersDetailedLogic { + return &ListServersDetailedLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListServersDetailedLogic) ListServersDetailed(req *types.ListServersDetailedReq) (resp *types.ListServersDetailedResp, err error) { + // todo: add your logic here and delete this line + ListServersDetailedReq := &openstack.ListServersDetailedReq{} + err = copier.CopyWithOption(ListServersDetailedReq, req, copier.Option{Converters: tool.Converters}) + ListServersDetailedResp, err := l.svcCtx.OpenstackRpc.ListServersDetailed(l.ctx, ListServersDetailedReq) + 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(&ListServersDetailedResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListServersDetailedResp, copier.Option{Converters: tool.Converters}) + return resp, err + +} diff --git a/api/internal/logic/vm/listvolumesdetaillogic.go b/api/internal/logic/vm/listvolumesdetaillogic.go new file mode 100644 index 00000000..ef195beb --- /dev/null +++ b/api/internal/logic/vm/listvolumesdetaillogic.go @@ -0,0 +1,49 @@ +package vm + +import ( + "context" + "github.com/jinzhu/copier" + "github.com/pkg/errors" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack" + "gitlink.org.cn/jcce-pcm/utils/result" + "gitlink.org.cn/jcce-pcm/utils/tool" + "gitlink.org.cn/jcce-pcm/utils/xerr" + "k8s.io/apimachinery/pkg/util/json" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ListVolumesDetailLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewListVolumesDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListVolumesDetailLogic { + return &ListVolumesDetailLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *ListVolumesDetailLogic) ListVolumesDetail(req *types.ListVolumesDetailReq) (resp *types.ListVolumesDetailResp, err error) { + // todo: add your logic here and delete this line + ListVolumesDetailReq := &openstack.ListVolumesDetailReq{} + err = copier.CopyWithOption(ListVolumesDetailReq, req, copier.Option{Converters: tool.Converters}) + ListVolumesDetailResp, err := l.svcCtx.OpenstackRpc.ListVolumesDetail(l.ctx, ListVolumesDetailReq) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrMsg("Failed to get Volumes list"), "Failed to get db Volumes list err : %v ,req:%+v", err, req) + } + marshal, err := json.Marshal(&ListVolumesDetailResp) + if err != nil { + return nil, result.NewDefaultError(err.Error()) + } + json.Unmarshal(marshal, &resp) + err = copier.CopyWithOption(&resp, &ListVolumesDetailResp, copier.Option{Converters: tool.Converters}) + return resp, err + +} diff --git a/api/internal/svc/servicecontext.go b/api/internal/svc/servicecontext.go index 5867d93e..2167e5ce 100644 --- a/api/internal/svc/servicecontext.go +++ b/api/internal/svc/servicecontext.go @@ -16,6 +16,7 @@ import ( "gitlink.org.cn/jcce-pcm/pcm-participant-ceph/cephclient" "gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/modelartsclient" "gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopusclient" + "gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstackclient" "gitlink.org.cn/jcce-pcm/pcm-participant-slurm/hpcthclient" "gitlink.org.cn/jcce-pcm/utils/tool" "gorm.io/driver/mysql" @@ -36,6 +37,7 @@ type ServiceContext struct { THRpc hpcthclient.HpcTH OctopusRpc octopusclient.Octopus CephRpc cephclient.Ceph + OpenstackRpc openstackclient.Openstack DockerClient *client.Client Downloader *s3manager.Downloader Uploader *s3manager.Uploader @@ -84,6 +86,7 @@ func NewServiceContext(c config.Config) *ServiceContext { CephRpc: cephclient.NewCeph(zrpc.MustNewClient(c.CephRpcConf)), ACRpc: hpcacclient.NewHpcAC(zrpc.MustNewClient(c.ACRpcConf)), OctopusRpc: octopusclient.NewOctopus(zrpc.MustNewClient(c.OctopusRpcConf)), + OpenstackRpc: openstackclient.NewOpenstack(zrpc.MustNewClient(c.OpenstackRpcConf)), DockerClient: dockerClient, Downloader: downloader, Uploader: uploader, diff --git a/api/internal/types/types.go b/api/internal/types/types.go index 47575b7d..d9f18d14 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -2101,3 +2101,392 @@ type CheckReq struct { type CheckResp struct { Exist bool `json:"exist"` } + +type ListServersReq struct { + Limit int32 `form:"limit,optional"` + OffSet int32 `form:"offSet,optional"` +} + +type ListServersResp struct { + TotalNumber uint32 `json:"totalNumber" copier:"TotalNumber"` + Servers []Servers `json:"servers" copier:"Servers"` + Servers_links []Servers_links `json:"serversLinks" copier:"Servers_links"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type Servers struct { + Id string `json:"id" copier:"Id"` + Name string `json:"name" copier:"Name"` + Links []Links `json:"links " copier:"Links "` +} + +type Links struct { + Href string `json:"href " copier:"Href"` + Rel string `json:"rel" copier:"Rel"` +} + +type Servers_links struct { + Href string `json:"href " copier:"Href"` + Rel string `json:"rel" copier:"Rel"` +} + +type ListServersDetailedReq struct { +} + +type ListServersDetailedResp struct { + ServersDetailed []ServersDetailed `json:"servers" copier:"ServersDetailed"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type ServersDetailed struct { + Created string `json:"created" copier:"created"` + Id string `json:"id" copier:"id"` + Key_name string `json:"key_name" copier:"key_name"` + Locked bool `json:"locked" copier:"locked"` + Name string `json:"name" copier:"name"` + Progress uint32 `json:"progress" copier:"progress"` + Status string `json:"status" copier:"status"` + Tenant_id string `json:"tenant_id" copier:"tenant_id"` + Updated string `json:"updated" copier:"updated"` + User_id string `json:"user_id" copier:"user_id"` +} + +type DeleteServerReq struct { + ServerId string `form:"server_id" copier:"ServerId"` +} + +type DeleteServerResp struct { + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type CreateServerReq struct { + Server Server `json:"server" copier:"Server"` +} + +type CreateServerResp struct { + Server ServerResp `json:"server" copier:"Server"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type Server struct { + Name string `json:"name" copier:"Name"` + FlavorRef string `json:"flavorRef" copier:"FlavorRef"` + ImageRef string `json:"imageRef" copier:"ImageRef"` + Networks []CreNetwork `json:"networks" copier:"Networks"` +} + +type CreNetwork struct { + Uuid string `json:"uuid" copier:"Uuid"` +} + +type ServerResp struct { + Id string `json:"id" copier:"Id"` + Links []Links `json:"links" copier:"Links"` + OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"` + SecurityGroups []Security_groups `json:"security_groups" copier:"SecurityGroups"` + AdminPass string `json:"adminPass" copier:"AdminPass"` +} + +type Security_groups struct { + Name string `json:"name" copier:"Name"` +} + +type ListImagesReq struct { + Limit int32 `form:"limit,optional"` +} + +type ListImagesResp struct { + First string `json:"first" copier:"First"` + Next string `json:"next" copier:"Next"` + Schema string `json:"schema" copier:"Schema"` + Images []Images `json:"images" copier:"Images"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type Images struct { + Status string `json:"status" copier:"Status"` + Name string `json:"name" copier:"Name"` + Tags []Tags `json:"tags" copier:"Tags"` + Container_format string `json:"container_format" copier:"Container_format"` + Created_at string `json:"created_at" copier:"Created_at"` + Disk_format string `json:"disk_format" copier:"Disk_format"` + Updated_at string `json:"updated_at" copier:"Updated_at"` + Visibility string `json:"visibility" copier:"Visibility"` + Self string `json:"self" copier:"Self"` + Min_disk uint32 `json:"min_disk" copier:"Min_disk"` + Protected bool `json:"protected" copier:"Protected"` + Id string `json:"id" copier:"Id"` + File string `json:"file" copier:"File"` + Checksum string `json:"checksum" copier:"Checksum"` + Os_hash_algo string `json:"os_hash_algo" copier:"Os_hash_algo"` + Os_hash_value string `json:"os_hash_value" copier:"Os_hash_value"` + Os_hidden string `json:"os_hidden" copier:"Os_hidden"` + Owner string `json:"owner" copier:"Owner"` + Size uint32 `json:"size" copier:"Size"` + Min_ram uint32 `json:"min_ram" copier:"Min_ram"` + Schema string `json:"schema" copier:"Schema"` + Virtual_size int32 `json:"virtual_size" copier:"Virtual_size"` +} + +type Tags struct { +} + +type CreateImageReq struct { + Container_format string `json:"container_format" copier:"Container_format"` + Disk_format string `json:"disk_format" copier:"Disk_format"` + Id string `json:"id" copier:"Id"` + Min_disk string `json:"min_disk" copier:"Min_disk"` + Min_ram string `json:"min_ram" copier:"Min_ram"` + Name string `json:"name" copier:"Name"` + Protected string `json:"protected" copier:"Protected"` + Tags []Tags `json:"tags" copier:"Tags"` + Visibility string `json:"visibility" copier:"visibility"` +} + +type CreateImageResq struct { + Location string `json:"location" copier:"Location"` +} + +type DeleteImageReq struct { + ImageId string `form:"image_id" copier:"ImageId"` +} + +type DeleteImageResp struct { + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type ListNetworksReq struct { +} + +type ListNetworksResp struct { + Networks []Network `json:"networks" copier:"Networks"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type Network struct { + AdminStateUp bool `json:"admin_state_up" copier:"AdminStateUp"` + AvailabilityZoneHints []string `json:"availability_zone_hints" copier:"AvailabilityZoneHints"` + AvailabilityZones []string `json:"availability_zones" copier:"AvailabilityZones"` + CreatedAt string `json:"created_at" copier:"CreatedAt"` + DnsDomain string `json:"dns_domain" copier:"DnsDomain"` + Id string `json:"id" copier:"Id"` + Ipv4AddressScope string `json:"ipv4_address_scope" copier:"Ipv4AddressScope"` + Ipv6AddressScope string `json:"ipv6_address_scope" copier:"Ipv6AddressScope"` + L2Adjacency bool `json:"l2_adjacency" copier:"L2Adjacency"` + Mtu int64 `json:"mtu" copier:"Mtu"` + Name string `json:"name" copier:"Name"` + PortSecurityEnabled bool `json:"port_security_enabled" copier:"PortSecurityEnabled"` + ProjectId string `json:"project_id" copier:"ProjectId"` + QosPolicyId string `json:"qos_policy_id" copier:"QosPolicyId"` + RevisionNumber string `json:"revision_number" copier:"RevisionNumber"` + Shared bool `json:"shared" copier:"Shared"` + RouterExternal bool `json:"router_external" copier:"RouterExternal"` + Status string `json:"status" copier:"Status"` + Subnets []string `json:"subnets" copier:"Subnets"` + Tags []string `json:"tags" copier:"Tags"` + TenantId string `json:"tenant_id" copier:"TenantId"` + UpdatedAt string `json:"updated_at" copier:"UpdatedAt"` + VlanTransparent bool `json:"vlan_transparent" copier:"VlanTransparent"` + Description string `json:"description" copier:"Description"` + IsDefault bool `json:"is_default" copier:"IsDefault"` +} + +type DeleteNetworkReq struct { + NetworkId string `form:"network_id" copier:"NetworkId"` +} + +type DeleteNetworkResp struct { + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` +} + +type CreateNetworkReq struct { + Network CreateNetwork `json:"network" copier:"Network"` +} + +type CreateNetworkResp struct { + Network Network `json:"network" copier:"Network"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` +} + +type CreateNetwork struct { + AdminStateUp bool `json:"admin_state_up" copier:"AdminStateUp"` + Name string `json:"name" copier:"Name"` + Shared bool `json:"shared" copier:"Shared"` +} + +type CreateSubnetReq struct { + Subnet Subnet `json:"subnet" copier:"Subnet"` +} + +type CreateSubnetResp struct { + Subnet SubnetResp `json:"subnet" copier:"Subnet"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` +} + +type Subnet struct { + NetworkId string `json:"network_id" copier:"NetworkId"` + Name string `json:"name" copier:"Name"` + Cidr string `json:"cidr" copier:"Cidr"` + Ip_version int32 `json:"ip_version" copier:"IpVersion"` + Gateway_ip string `json:"gateway_ip" copier:"GatewayIp"` + Enable_dhcp bool `json:"enable_dhcp" copier:"EnableDhcp"` + Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"AllocationPools"` + Dns_nameservers []string `json:"dns_nameservers" copier:"DnsNameservers"` + Host_routes []string `json:"host_routes" copier:"HostRoutes"` +} + +type SubnetResp struct { + Name string `json:"name" copier:"Name"` + Cidr string `json:"cidr" copier:"Cidr"` + Ip_version int32 `json:"ip_version" copier:"Ip_version"` + Gateway_ip string `json:"gateway_ip" copier:"Gateway_ip"` + Enable_dhcp bool `json:"enable_dhcp" copier:"Enable_dhcp"` + Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"Allocation_pools"` + Dns_nameservers []string `json:"dns_nameservers" copier:"Dns_nameservers"` + Host_routes []string `json:"host_routes" copier:"Host_routes"` + Network_id string `json:"network_id" copier:"Network_id"` + Segment_id string `json:"segment_id" copier:"Segment_id"` + Project_id string `json:"project_id" copier:"Project_id"` + Tenant_id string `json:"tenant_id" copier:"Tenant_id"` + Dns_publish_fixed_ip string `json:"Dns_publish_fixed_ip" copier:"Dns_publish_fixed_ip"` + Id string `json:"id" copier:"Id"` + Created_at string `json:"created_at" copier:"Created_at"` + Description string `json:"description" copier:"Description"` + Ipv6_address_mode string `json:"ipv6_address_mode" copier:"Ipv6_address_mode"` + Ipv6_ra_mode string `json:"ipv6_ra_mode" copier:"Ipv6_ra_mode"` + Revision_number string `json:"revision_number" copier:"Revision_number"` + Service_types []string `json:"service_types" copier:"Service_types"` + Subnetpool_id string `json:"subnetpool_id" copier:"Subnetpool_id"` + Tags []string `json:"tags" copier:"Tags"` + Updated_at string `json:"updated_at" copier:"Updated_at"` +} + +type Allocation_pools struct { + Start string `json:"start" copier:"Start"` + End string `json:"end" copier:"End"` +} + +type ListVolumesDetailReq struct { +} + +type ListVolumesDetailResp struct { + VolumeDetail []VolumeDetail `json:"volumes" copier:"VolumeDetail"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type VolumeDetail struct { + Created_at string `json:"created_at" copier:"created_at"` + Id string `json:"id" copier:"id"` + Availability_zone string `json:"availability_zone" copier:"availability_zone"` + Encrypted bool `json:"encrypted" copier:"encrypted"` + Name string `json:"name" copier:"name"` + Size int32 `json:"size" copier:"size"` + Status string `json:"status" copier:"status"` + Tenant_id string `json:"tenant_id" copier:"tenant_id"` + Updated string `json:"Updated" copier:"updated"` + User_id string `json:"User_id" copier:"user_id"` + Description string `json:"description" copier:"description"` + Multiattach bool `json:"multiattach" copier:"multiattach"` + Bootable bool `json:"bootable" copier:"bootable"` + Volume_type string `json:"volume_type" copier:"volume_type"` + Count int32 `json:"count" copier:"Count"` + Shared_targets bool `json:"shared_targets" copier:"shared_targets"` + Consumes_quota bool `json:"consumes_quota" copier:"consumes_quota"` +} + +type DeleteVolumeReq struct { + VolumeId string `form:"volume_id" copier:"VolumeId"` + Cascade bool `json:"cascade" copier:"cascade"` + Force bool `json:"force" copier:"force"` +} + +type DeleteVolumeResp struct { + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` +} + +type CreateVolumeReq struct { + Volume Volume `json:"volume" copier:"Volume"` +} + +type CreateVolumeResp struct { + Volume VolumeResp `json:"volume" copier:"Volume"` + Code int32 `json:"code,omitempty" copier:"Code"` + Msg string `json:"msg,omitempty" copier:"Msg"` + ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"` +} + +type Volume struct { + Size int32 `json:"size" copier:"Size"` + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Description string `json:"description" copier:"Description"` + Name string `json:"name" copier:"Name"` + VolumeType string `json:"volume_type" copier:"VolumeType"` +} + +type VolumeResp struct { + CreatedAt string `json:"created_at" copier:"CreatedAt"` + Id string `json:"id" copier:"Id"` + AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"` + Encrypted bool `json:"encrypted" copier:"Encrypted"` + Name string `json:"name" copier:"Name"` + Size int32 `json:"size" copier:"Size"` + Status string `json:"status" copier:"Status"` + TenantId string `json:"tenant_id" copier:"TenantId"` + Updated string `json:"updated" copier:"Updated"` + UserId string `json:"user_id" copier:"UserId"` + Description string `json:"description" copier:"Description"` + Multiattach bool `json:"multiattach" copier:"Multiattach"` + Bootable bool `json:"bootable" copier:"Bootable"` + VolumeType string `json:"volume_type" copier:"VolumeType"` + Count int32 `json:"count" copier:"Count"` + SharedTargets bool `json:"shared_targets" copier:"SharedTargets"` + ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"` +} + +type ListFlavorsDetailReq struct { +} + +type ListFlavorsDetailResp struct { + Flavor []Flavors `json:"flavors" copier:"Flavor"` + Code int32 `json:"code,omitempty"` + Msg string `json:"msg,omitempty"` + ErrorMsg string `json:"errorMsg,omitempty"` +} + +type Flavors struct { + Name string `json:"name" copier:"name"` + Description string `json:"description" copier:"description"` + Id string `json:"id" copier:"id"` + Disk int32 `json:"disk" copier:"disk"` + Ephemeral uint32 `json:"ephemeral" copier:"ephemeral"` + Original_name string `json:"original_name" copier:"original_name"` + Ram int32 `json:"ram" copier:"ram"` + Swap int32 `json:"swap" copier:"swap"` + Vcpus int32 `json:"vcpus" copier:"vcpus"` + Rxtx_factor float32 `json:"rxtx_factor" copier:"rxtx_factor"` + Os_flavor_access_is_public bool `json:"os_flavor_access_is_public" copier:"os_flavor_access_is_public"` +} diff --git a/go.mod b/go.mod index 091e1d9b..59fd9ffe 100644 --- a/go.mod +++ b/go.mod @@ -14,11 +14,12 @@ require ( github.com/robfig/cron/v3 v3.0.1 github.com/shopspring/decimal v1.3.1 github.com/zeromicro/go-queue v1.1.8 - github.com/zeromicro/go-zero v1.5.4 + github.com/zeromicro/go-zero v1.5.5 gitlink.org.cn/jcce-pcm/pcm-participant-ac v0.0.0-20230814074259-99e24e1194d1 gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230817103341-2459e5bfc835 gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230719015658-08a29549d86a gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714030856-601935bc30e2 + gitlink.org.cn/jcce-pcm/pcm-participant-openstack v0.0.0-20230831020641-98c737b3e61e gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4 gitlink.org.cn/jcce-pcm/utils v0.0.2 gonum.org/v1/gonum v0.11.0 @@ -89,8 +90,8 @@ require ( github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/prometheus/client_golang v1.16.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.10.1 // indirect github.com/segmentio/kafka-go v0.4.38 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect @@ -109,16 +110,16 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/automaxprocs v1.5.2 // indirect + go.uber.org/automaxprocs v1.5.3 // indirect go.uber.org/multierr v1.9.0 // indirect go.uber.org/zap v1.24.0 // indirect golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.2.0 // indirect - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.7.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -126,7 +127,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.66.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/rpc/etc/pcmcore.yaml b/rpc/etc/pcmcore.yaml index 65c58022..e1b550da 100644 --- a/rpc/etc/pcmcore.yaml +++ b/rpc/etc/pcmcore.yaml @@ -7,7 +7,7 @@ NacosConfig: - IpAddr: nacos.jcce.dev Port: 8848 ClientConfig: - NamespaceId: test + NamespaceId: zhouqj TimeoutMs: 5000 NotLoadCacheAtStart: true LogDir: