fix:增加openstack到C端
Former-commit-id: f0224fba84f8dc92d70155423f902a67afa80f0c
This commit is contained in:
parent
8bcfaa9011
commit
d794903f39
|
@ -402,6 +402,20 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type(
|
||||||
|
ComputilityStatisticsResp{
|
||||||
|
Code int32 `json:"code,omitempty"`
|
||||||
|
Msg string `json:"msg,omitempty"`
|
||||||
|
ErrorMsg string `json:"ErrorMsg,omitempty"`
|
||||||
|
ComputilityStatistics ComputilityStatistics `json:"data"` //容器节点已使用
|
||||||
|
}
|
||||||
|
ComputilityStatistics {
|
||||||
|
DomainSum int64 `json:"domainSum"` //域总数
|
||||||
|
TotalComputility float64 `json:"totalComputility"` //算力总和
|
||||||
|
ClusterNum int64 `json:"clusterNum"` //集群总数
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
//jccSchedule容器集群资源监控 > start
|
//jccSchedule容器集群资源监控 > start
|
||||||
type ClusterMetrics struct {
|
type ClusterMetrics struct {
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"ai/pcm-ai.api"
|
"ai/pcm-ai.api"
|
||||||
"storage/pcm-storage.api"
|
"storage/pcm-storage.api"
|
||||||
"vm/pcm-vm.api"
|
"vm/pcm-vm.api"
|
||||||
"cloud/pcm-cloud.api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
info(
|
info(
|
||||||
|
@ -65,14 +64,8 @@ service pcm {
|
||||||
@handler putResourcePanelConfigHandler
|
@handler putResourcePanelConfigHandler
|
||||||
put /core/resourcePanelConfigHandler (ResourcePanelConfigReq) returns ()
|
put /core/resourcePanelConfigHandler (ResourcePanelConfigReq) returns ()
|
||||||
|
|
||||||
@handler nodeAssetsHandler
|
@handler getComputilityStatisticsHandler
|
||||||
get /core/assets () returns (NodeAssetsResp)
|
get /core/getComputilityStatistics () returns (ComputilityStatisticsResp)
|
||||||
|
|
||||||
@handler saveHashcatHandler
|
|
||||||
post /core/saveHashcat (SaveHashcatReq) returns ()
|
|
||||||
|
|
||||||
@handler getHashcatHandler
|
|
||||||
get /core/getHashcat/:crackTaskId (getHashcatHandlerReq) returns (getHashcatHandlerResp)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//hpc二级接口
|
//hpc二级接口
|
||||||
|
@ -86,22 +79,6 @@ service pcm {
|
||||||
|
|
||||||
@handler listHistoryJobHandler
|
@handler listHistoryJobHandler
|
||||||
get /hpc/listHistoryJob (listHistoryJobReq) returns (listHistoryJobResp)
|
get /hpc/listHistoryJob (listHistoryJobReq) returns (listHistoryJobResp)
|
||||||
|
|
||||||
@handler queueAssetsHandler
|
|
||||||
get /queue/assets () returns (QueueAssetsResp)
|
|
||||||
}
|
|
||||||
|
|
||||||
//cloud二级接口
|
|
||||||
@server(
|
|
||||||
prefix: pcm/v1
|
|
||||||
group : cloud
|
|
||||||
)
|
|
||||||
service pcm {
|
|
||||||
@handler cloudListHandler
|
|
||||||
get /task/list () returns (cloudListResp)
|
|
||||||
|
|
||||||
@handler deleteYamlHandler
|
|
||||||
get /cloud/DeleteYaml (ApplyReq) returns (DeleteResp)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//智算二级接口
|
//智算二级接口
|
||||||
|
@ -240,10 +217,6 @@ service pcm {
|
||||||
group : vm
|
group : vm
|
||||||
)
|
)
|
||||||
service pcm {
|
service pcm {
|
||||||
@handler GetComputeLimitsHandler
|
|
||||||
get /vm/getComputeLimits (GetComputeLimitsReq) returns (GetComputeLimitsResp)
|
|
||||||
@handler GetVolumeLimitsHandler
|
|
||||||
get /vm/getVolumeLimits (GetVolumeLimitsReq) returns (GetVolumeLimitsResp)
|
|
||||||
@handler ListServerHandler
|
@handler ListServerHandler
|
||||||
get /vm/listServer (ListServersReq) returns (ListServersResp)
|
get /vm/listServer (ListServersReq) returns (ListServersResp)
|
||||||
@handler ListServersDetailedHandler
|
@handler ListServersDetailedHandler
|
||||||
|
@ -272,4 +245,10 @@ service pcm {
|
||||||
get /vm/listFlavorsDetail (ListFlavorsDetailReq) returns (ListFlavorsDetailResp)
|
get /vm/listFlavorsDetail (ListFlavorsDetailReq) returns (ListFlavorsDetailResp)
|
||||||
@handler CreateServerHandler
|
@handler CreateServerHandler
|
||||||
post /vm/createServer (CreateServerReq) returns (CreateServerResp)
|
post /vm/createServer (CreateServerReq) returns (CreateServerResp)
|
||||||
|
@handler ListVolumeTypesHandler
|
||||||
|
get /vm/listVolumeTypes (ListVolumeTypesReq) returns (ListVolumeTypesResp)
|
||||||
|
@handler CreateImageHandler
|
||||||
|
post /vm/createImage (CreateImageReq) returns (CreateImageResp)
|
||||||
|
@handler UploadImageHandler
|
||||||
|
put /vm/uploadImage (UploadOsImageReq) returns (UploadOsImageResp)
|
||||||
}
|
}
|
|
@ -7,82 +7,6 @@ info(
|
||||||
email: "1364512070@qq.com"
|
email: "1364512070@qq.com"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
type (
|
|
||||||
Rate{
|
|
||||||
}
|
|
||||||
Absolute{
|
|
||||||
MaxServerMeta int64 `json:"max_server_meta,optional"`
|
|
||||||
MaxPersonality int64 `json:"max_personality,optional"`
|
|
||||||
TotalServerGroupsUsed int64 `json:"total_server_groups_used,optional"`
|
|
||||||
MaxImageMeta int64 `json:"max_image_meta,optional"`
|
|
||||||
MaxPersonalitySize int64 `json:"max_personality_size,optional"`
|
|
||||||
MaxTotalKeypairs int64 `json:"max_total_keypairs,optional"`
|
|
||||||
MaxSecurityGroupRules int64 `json:"max_security_group_rules,optional"`
|
|
||||||
MaxServerGroups int64 `json:"max_server_groups,optional"`
|
|
||||||
TotalCoresUsed int64 `json:"total_cores_used,optional"`
|
|
||||||
TotalRAMUsed int64 `json:"total_ram_used,optional"`
|
|
||||||
TotalInstancesUsed int64 `json:"total_instances_used,optional"`
|
|
||||||
MaxSecurityGroups int64 `json:"max_security_groups,optional"`
|
|
||||||
TotalFloatingIpsUsed int64 `json:"total_floating_ips_used,optional"`
|
|
||||||
MaxTotalCores int64 `json:"max_total_cores,optional"`
|
|
||||||
MaxServerGroupMembers int64 `json:"max_server_group_members,optional"`
|
|
||||||
MaxTotalFloatingIps int64 `json:"max_total_floating_ips,optional"`
|
|
||||||
TotalSecurityGroupsUsed int64 `json:"total_security_groups_used,optional"`
|
|
||||||
MaxTotalInstances int64 `json:"max_total_instances,optional"`
|
|
||||||
MaxTotalRAMSize int64 `json:"max_total_ram_size,optional"`
|
|
||||||
}
|
|
||||||
Limits{
|
|
||||||
rate Rate `json:"rate,optional"`
|
|
||||||
absolute Absolute`json:"absolute,optional"`
|
|
||||||
}
|
|
||||||
GetComputeLimitsReq{
|
|
||||||
Limit int32 `json:"limit,optional"`
|
|
||||||
OffSet int32 `json:"offSet,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
GetComputeLimitsResp{
|
|
||||||
limits Limits `json:"limits,optional"`
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
type (
|
|
||||||
VolumeRate{
|
|
||||||
}
|
|
||||||
VolumeAbsolute{
|
|
||||||
TotalSnapshotsUsed int32 `json:"total_snapshots_used,optional"`
|
|
||||||
MaxTotalBackups int32 `json:"max_total_backups,optional"`
|
|
||||||
MaxTotalVolumeGigabytes int32 `json:"max_total_volume_gigabytes,optional"`
|
|
||||||
MaxTotalSnapshots int32 `json:"max_total_snapshots,optional"`
|
|
||||||
MaxTotalBackupGigabytes int32 `json:"max_total_backup_gigabytes,optional"`
|
|
||||||
TotalBackupGigabytesUsed int32 `json:"total_backup_gigabytes_used,optional"`
|
|
||||||
MaxTotalVolumes int32 `json:"max_total_volumes,optional"`
|
|
||||||
TotalVolumesUsed int32 `json:"total_volumes_used,optional"`
|
|
||||||
TotalBackupsUsed int32 `json:"total_backups_used,optional"`
|
|
||||||
TotalGigabytesUsed int32 `json:"total_gigabytes_used,optional"`
|
|
||||||
}
|
|
||||||
VolumeLimits{
|
|
||||||
rate VolumeRate `json:"rate,optional"`
|
|
||||||
absolute VolumeAbsolute`json:"absolute,optional"`
|
|
||||||
}
|
|
||||||
GetVolumeLimitsReq{
|
|
||||||
Limit int32 `json:"limit,optional"`
|
|
||||||
OffSet int32 `json:"offSet,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
GetVolumeLimitsResp{
|
|
||||||
limits VolumeLimits `json:"limits,optional"`
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
/****************** servers start*************************/
|
/****************** servers start*************************/
|
||||||
type (
|
type (
|
||||||
ListServersReq {
|
ListServersReq {
|
||||||
|
@ -168,6 +92,7 @@ type (
|
||||||
ImageRef string `json:"imageRef" copier:"ImageRef"`
|
ImageRef string `json:"imageRef" copier:"ImageRef"`
|
||||||
Networks []CreNetwork `json:"networks" copier:"Networks"`
|
Networks []CreNetwork `json:"networks" copier:"Networks"`
|
||||||
//AdminPass string `json:"adminPass" copier:"AdminPass"`
|
//AdminPass string `json:"adminPass" copier:"AdminPass"`
|
||||||
|
BlockDeviceMappingV2 []Block_device_mapping_v2 `json:"block_device_mapping_v2" copier:"BlockDeviceMappingV2"`
|
||||||
}
|
}
|
||||||
CreNetwork {
|
CreNetwork {
|
||||||
Uuid string `json:"uuid" copier:"Uuid"`
|
Uuid string `json:"uuid" copier:"Uuid"`
|
||||||
|
@ -183,6 +108,13 @@ type (
|
||||||
Security_groups {
|
Security_groups {
|
||||||
Name string `json:"name" copier:"Name"`
|
Name string `json:"name" copier:"Name"`
|
||||||
}
|
}
|
||||||
|
Block_device_mapping_v2 {
|
||||||
|
SourceType string `json:"source_type" copier:"SourceType"`
|
||||||
|
Uuid string `json:"uuid" copier:"Uuid"`
|
||||||
|
BootIndex string `json:"boot_index" copier:"BootIndex"`
|
||||||
|
DestinationType string `json:"destination_type" copier:"DestinationType"`
|
||||||
|
DeleteOnTermination bool `json:"delete_on_termination" copier:"DeleteOnTermination"`
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
/****************** servers end*************************/
|
/****************** servers end*************************/
|
||||||
|
@ -249,19 +181,40 @@ type(
|
||||||
CreateImageReq{
|
CreateImageReq{
|
||||||
Container_format string `json:"container_format" copier:"Container_format"`
|
Container_format string `json:"container_format" copier:"Container_format"`
|
||||||
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
||||||
Id string `json:"id" copier:"Id"`
|
Min_disk int32 `json:"min_disk" copier:"Min_disk"`
|
||||||
Min_disk string `json:"min_disk" copier:"Min_disk"`
|
Min_ram int32 `json:"min_ram" copier:"Min_ram"`
|
||||||
Min_ram string `json:"min_ram" copier:"Min_ram"`
|
|
||||||
Name string `json:"name" copier:"Name"`
|
Name string `json:"name" copier:"Name"`
|
||||||
Protected string `json:"protected" copier:"Protected"`
|
Protected bool `json:"protected" copier:"Protected"`
|
||||||
Tags []Tags `json:"tags" copier:"Tags"`
|
//Tags []Tags `json:"tags" copier:"Tags"`
|
||||||
visibility string `json:"visibility" copier:"visibility"`
|
Visibility string `json:"visibility" copier:"Visibility"`
|
||||||
}
|
}
|
||||||
CreateImageResq {
|
CreateImageResp {
|
||||||
Location string `json:"location" copier:"Location"`
|
Location string `json:"location" copier:"Location"`
|
||||||
|
Created_at string `json:"created_at" copier:"Created_at"`
|
||||||
|
Container_format string `json:"Container_format" copier:"Container_format"`
|
||||||
|
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
||||||
|
File string `json:"file" copier:"File"`
|
||||||
|
Id string `json:"id" copier:"Id"`
|
||||||
|
Min_disk int32 `json:"min_disk" copier:"Min_disk"`
|
||||||
|
Min_ram int32 `json:"min_ram" copier:"Min_ram"`
|
||||||
|
Status string `json:"status" copier:"Status"`
|
||||||
|
Visibility string `json:"visibility" copier:"Visibility"`
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
}
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
|
type(
|
||||||
|
UploadOsImageReq{
|
||||||
|
ImageId string `form:"image_id" copier:"ImageId"`
|
||||||
|
}
|
||||||
|
UploadOsImageResp {
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
type(
|
type(
|
||||||
DeleteImageReq{
|
DeleteImageReq{
|
||||||
|
@ -481,6 +434,30 @@ type(
|
||||||
ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
|
ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
type(
|
||||||
|
ListVolumeTypesReq{
|
||||||
|
|
||||||
|
}
|
||||||
|
ListVolumeTypesResp{
|
||||||
|
VolumeTypes []Volume_types `json:"volume_types" copier:"VolumeTypes"`
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
|
}
|
||||||
|
Volume_types{
|
||||||
|
Description string `json:"description" copier:"Description"`
|
||||||
|
Id string `json:"id" copier:"Id"`
|
||||||
|
IsPublic bool `json:"is_public" copier:"IsPublic"`
|
||||||
|
Name string `json:"name" copier:"Name"`
|
||||||
|
OsVolumeTypeAccessIsPublic bool `json:"os_volume_type_access_is_public" copier:"OsVolumeTypeAccessIsPublic"`
|
||||||
|
QosSpecsId string `json:"qos_specs_id" copier:"QosSpecsId"`
|
||||||
|
ExtraSpecs Extra_specs `json:"extra_specs" copier:"ExtraSpecs"`
|
||||||
|
}
|
||||||
|
Extra_specs {
|
||||||
|
Capabilities string `json:"capabilities" copier:"Capabilities"`
|
||||||
|
}
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
/******************find ListVolumesDetail end*************************/
|
/******************find ListVolumesDetail end*************************/
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package core
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core"
|
||||||
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetComputilityStatisticsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
l := core.NewGetComputilityStatisticsLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.GetComputilityStatistics()
|
||||||
|
if err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
} else {
|
||||||
|
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
ai "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/ai"
|
ai "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/ai"
|
||||||
cloud "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/cloud"
|
|
||||||
core "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/core"
|
core "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/core"
|
||||||
hpc "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/hpc"
|
hpc "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/hpc"
|
||||||
image "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/image"
|
image "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler/image"
|
||||||
|
@ -91,18 +90,8 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
Path: "/core/assets",
|
Path: "/core/getComputilityStatistics",
|
||||||
Handler: core.NodeAssetsHandler(serverCtx),
|
Handler: core.GetComputilityStatisticsHandler(serverCtx),
|
||||||
},
|
|
||||||
{
|
|
||||||
Method: http.MethodPost,
|
|
||||||
Path: "/core/saveHashcat",
|
|
||||||
Handler: core.SaveHashcatHandler(serverCtx),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/core/getHashcat/:crackTaskId",
|
|
||||||
Handler: core.GetHashcatHandler(serverCtx),
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rest.WithPrefix("/pcm/v1"),
|
rest.WithPrefix("/pcm/v1"),
|
||||||
|
@ -120,27 +109,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
Path: "/hpc/listHistoryJob",
|
Path: "/hpc/listHistoryJob",
|
||||||
Handler: hpc.ListHistoryJobHandler(serverCtx),
|
Handler: hpc.ListHistoryJobHandler(serverCtx),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/queue/assets",
|
|
||||||
Handler: hpc.QueueAssetsHandler(serverCtx),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rest.WithPrefix("/pcm/v1"),
|
|
||||||
)
|
|
||||||
|
|
||||||
server.AddRoutes(
|
|
||||||
[]rest.Route{
|
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/task/list",
|
|
||||||
Handler: cloud.CloudListHandler(serverCtx),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/cloud/DeleteYaml",
|
|
||||||
Handler: cloud.DeleteYamlHandler(serverCtx),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
rest.WithPrefix("/pcm/v1"),
|
rest.WithPrefix("/pcm/v1"),
|
||||||
)
|
)
|
||||||
|
@ -350,16 +318,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
|
|
||||||
server.AddRoutes(
|
server.AddRoutes(
|
||||||
[]rest.Route{
|
[]rest.Route{
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/vm/getComputeLimits",
|
|
||||||
Handler: vm.GetComputeLimitsHandler(serverCtx),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Method: http.MethodGet,
|
|
||||||
Path: "/vm/getVolumeLimits",
|
|
||||||
Handler: vm.GetVolumeLimitsHandler(serverCtx),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
Path: "/vm/listServer",
|
Path: "/vm/listServer",
|
||||||
|
@ -430,6 +388,21 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
Path: "/vm/createServer",
|
Path: "/vm/createServer",
|
||||||
Handler: vm.CreateServerHandler(serverCtx),
|
Handler: vm.CreateServerHandler(serverCtx),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Method: http.MethodGet,
|
||||||
|
Path: "/vm/listVolumeTypes",
|
||||||
|
Handler: vm.ListVolumeTypesHandler(serverCtx),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Method: http.MethodPost,
|
||||||
|
Path: "/vm/createImage",
|
||||||
|
Handler: vm.CreateImageHandler(serverCtx),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Method: http.MethodPut,
|
||||||
|
Path: "/vm/uploadImage",
|
||||||
|
Handler: vm.UploadImageHandler(serverCtx),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
rest.WithPrefix("/pcm/v1"),
|
rest.WithPrefix("/pcm/v1"),
|
||||||
)
|
)
|
||||||
|
|
|
@ -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 CreateImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.CreateImageReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := vm.NewCreateImageLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.CreateImage(&req)
|
||||||
|
if err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
} else {
|
||||||
|
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 ListVolumeTypesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.ListVolumeTypesReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := vm.NewListVolumeTypesLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.ListVolumeTypes(&req)
|
||||||
|
if err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
} else {
|
||||||
|
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 UploadImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
var req types.UploadOsImageReq
|
||||||
|
if err := httpx.Parse(r, &req); err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := vm.NewUploadImageLogic(r.Context(), svcCtx)
|
||||||
|
resp, err := l.UploadImage(&req)
|
||||||
|
if err != nil {
|
||||||
|
httpx.ErrorCtx(r.Context(), w, err)
|
||||||
|
} else {
|
||||||
|
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
package core
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"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 GetComputilityStatisticsLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGetComputilityStatisticsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetComputilityStatisticsLogic {
|
||||||
|
return &GetComputilityStatisticsLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *GetComputilityStatisticsLogic) GetComputilityStatistics() (resp *types.ComputilityStatisticsResp, err error) {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
|
||||||
|
resp = &types.ComputilityStatisticsResp{}
|
||||||
|
var computilityStatistics types.ComputilityStatistics
|
||||||
|
var domainSum int64 //所有域的总和
|
||||||
|
var AiFlopsNum float64 //所有域的总和
|
||||||
|
var K8sFlopsNum float64 //所有域的总和
|
||||||
|
var aiClusterSum int64 //所有域的总和
|
||||||
|
var hpcClusterSum int64 //所有域的总和
|
||||||
|
var PCClusterSum int64 //所有域的总和
|
||||||
|
var ClusterSum int64 //所有域的总和
|
||||||
|
|
||||||
|
//算力中心总数(计算域):包括所有云算域,智算域,超算域以及鹏城返回的所有域的总和
|
||||||
|
sqlStr := "select count(*) as domainSum from `pcm`.domain_resource t where t.connection_state = 3 OR t.domain_source=0"
|
||||||
|
tx := l.svcCtx.DbEngin.Raw(sqlStr).Scan(&domainSum)
|
||||||
|
if tx.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, tx.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
computilityStatistics.DomainSum = domainSum
|
||||||
|
|
||||||
|
//统计集群
|
||||||
|
clusterStr := "select count(*) from `joint_domain`.domain_cluster"
|
||||||
|
tc := l.svcCtx.DbEngin.Raw(clusterStr).Scan(&ClusterSum)
|
||||||
|
if tc.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, tc.Error
|
||||||
|
}
|
||||||
|
//智算算力总和
|
||||||
|
aiFlopsStr := "select sum(t.flops) as flopsNum from `pcm`.domain_resource t"
|
||||||
|
tf := l.svcCtx.DbEngin.Raw(aiFlopsStr).Scan(&AiFlopsNum)
|
||||||
|
if tf.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, tf.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
//云算算力总和 SELECT sum(t.flops) FROM `resources` t
|
||||||
|
k8sFlopsStr := "SELECT sum(t.flops) as k8sFlopsNum FROM `joint_domain`.`resources` t"
|
||||||
|
tk := l.svcCtx.DbEngin.Raw(k8sFlopsStr).Scan(&K8sFlopsNum)
|
||||||
|
if tk.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, tk.Error
|
||||||
|
}
|
||||||
|
value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", K8sFlopsNum/1000000+AiFlopsNum), 64)
|
||||||
|
|
||||||
|
computilityStatistics.TotalComputility = value
|
||||||
|
|
||||||
|
//智算集群数
|
||||||
|
aiClusterStr := "select count(*) as aiClusterSum from `pcm`.ai_cluster"
|
||||||
|
ts := l.svcCtx.DbEngin.Raw(aiClusterStr).Scan(&aiClusterSum)
|
||||||
|
if ts.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, ts.Error
|
||||||
|
}
|
||||||
|
//云算集群数
|
||||||
|
hpcClusterStr := "select count(*) as hpcClusterSum from `pcm`.hpc_cluster"
|
||||||
|
th := l.svcCtx.DbEngin.Raw(hpcClusterStr).Scan(&hpcClusterSum)
|
||||||
|
if th.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, th.Error
|
||||||
|
}
|
||||||
|
//鹏城集群数
|
||||||
|
PCClusterStr := "select count(*) as PCClusterSum from `pcm`.domain_resource t where t.connection_state = 3 "
|
||||||
|
tp := l.svcCtx.DbEngin.Raw(PCClusterStr).Scan(&PCClusterSum)
|
||||||
|
if tp.Error != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return nil, tp.Error
|
||||||
|
}
|
||||||
|
computilityStatistics.ClusterNum = ClusterSum + PCClusterSum + hpcClusterSum + aiClusterSum
|
||||||
|
resp.ComputilityStatistics = computilityStatistics
|
||||||
|
resp.Code = 200
|
||||||
|
resp.Msg = "Success"
|
||||||
|
return resp, nil
|
||||||
|
}
|
|
@ -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 CreateImageLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCreateImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateImageLogic {
|
||||||
|
return &CreateImageLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *CreateImageLogic) CreateImage(req *types.CreateImageReq) (resp *types.CreateImageResp, err error) {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
CreateImageReq := &openstack.CreateImageReq{}
|
||||||
|
err = copier.CopyWithOption(CreateImageReq, req, copier.Option{Converters: tool.Converters})
|
||||||
|
CreateImageResp, err := l.svcCtx.OpenstackRpc.CreateImage(l.ctx, CreateImageReq)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrMsg("c端创建失败"), "c端创建失败 : %v ,req:%+v", err, req)
|
||||||
|
}
|
||||||
|
marshal, err := json.Marshal(&CreateImageResp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, result.NewDefaultError(err.Error())
|
||||||
|
}
|
||||||
|
json.Unmarshal(marshal, &resp)
|
||||||
|
err = copier.CopyWithOption(&resp, &CreateImageResp, copier.Option{Converters: tool.Converters})
|
||||||
|
return resp, err
|
||||||
|
}
|
|
@ -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 ListVolumeTypesLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewListVolumeTypesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListVolumeTypesLogic {
|
||||||
|
return &ListVolumeTypesLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *ListVolumeTypesLogic) ListVolumeTypes(req *types.ListVolumeTypesReq) (resp *types.ListVolumeTypesResp, err error) {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
ListVolumeTypesReq := &openstack.ListVolumeTypesReq{}
|
||||||
|
err = copier.CopyWithOption(ListVolumeTypesReq, req, copier.Option{Converters: tool.Converters})
|
||||||
|
ListVolumeTypesResp, err := l.svcCtx.OpenstackRpc.ListVolumeTypes(l.ctx, ListVolumeTypesReq)
|
||||||
|
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(&ListVolumeTypesResp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, result.NewDefaultError(err.Error())
|
||||||
|
}
|
||||||
|
json.Unmarshal(marshal, &resp)
|
||||||
|
err = copier.CopyWithOption(&resp, &ListVolumeTypesResp, copier.Option{Converters: tool.Converters})
|
||||||
|
return resp, err
|
||||||
|
}
|
|
@ -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 UploadImageLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUploadImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UploadImageLogic {
|
||||||
|
return &UploadImageLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *UploadImageLogic) UploadImage(req *types.UploadOsImageReq) (resp *types.UploadOsImageResp, err error) {
|
||||||
|
// todo: add your logic here and delete this line
|
||||||
|
UploadOsImageReq := &openstack.UploadOsImageReq{}
|
||||||
|
err = copier.CopyWithOption(UploadOsImageReq, req, copier.Option{Converters: tool.Converters})
|
||||||
|
CreateImageResp, err := l.svcCtx.OpenstackRpc.UploadImage(l.ctx, UploadOsImageReq)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrMsg("c端创建失败"), "c端创建失败 : %v ,req:%+v", err, req)
|
||||||
|
}
|
||||||
|
marshal, err := json.Marshal(&CreateImageResp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, result.NewDefaultError(err.Error())
|
||||||
|
}
|
||||||
|
json.Unmarshal(marshal, &resp)
|
||||||
|
err = copier.CopyWithOption(&resp, &CreateImageResp, copier.Option{Converters: tool.Converters})
|
||||||
|
return resp, err
|
||||||
|
}
|
|
@ -374,6 +374,19 @@ type ResourcePanelConfigResp struct {
|
||||||
UpdateTime string `json:"updateTime"` //更新时间
|
UpdateTime string `json:"updateTime"` //更新时间
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ComputilityStatisticsResp struct {
|
||||||
|
Code int32 `json:"code,omitempty"`
|
||||||
|
Msg string `json:"msg,omitempty"`
|
||||||
|
ErrorMsg string `json:"ErrorMsg,omitempty"`
|
||||||
|
ComputilityStatistics ComputilityStatistics `json:"data"` //容器节点已使用
|
||||||
|
}
|
||||||
|
|
||||||
|
type ComputilityStatistics struct {
|
||||||
|
DomainSum int64 `json:"domainSum"` //域总数
|
||||||
|
TotalComputility float64 `json:"totalComputility"` //算力总和
|
||||||
|
ClusterNum int64 `json:"clusterNum"` //集群总数
|
||||||
|
}
|
||||||
|
|
||||||
type ClusterMetrics struct {
|
type ClusterMetrics struct {
|
||||||
Code int `json:"code,omitempty"`
|
Code int `json:"code,omitempty"`
|
||||||
Msg string `json:"msg,omitempty"`
|
Msg string `json:"msg,omitempty"`
|
||||||
|
@ -2130,81 +2143,6 @@ type CheckResp struct {
|
||||||
Exist bool `json:"exist"`
|
Exist bool `json:"exist"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Rate struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
type Absolute struct {
|
|
||||||
MaxServerMeta int64 `json:"max_server_meta,optional"`
|
|
||||||
MaxPersonality int64 `json:"max_personality,optional"`
|
|
||||||
TotalServerGroupsUsed int64 `json:"total_server_groups_used,optional"`
|
|
||||||
MaxImageMeta int64 `json:"max_image_meta,optional"`
|
|
||||||
MaxPersonalitySize int64 `json:"max_personality_size,optional"`
|
|
||||||
MaxTotalKeypairs int64 `json:"max_total_keypairs,optional"`
|
|
||||||
MaxSecurityGroupRules int64 `json:"max_security_group_rules,optional"`
|
|
||||||
MaxServerGroups int64 `json:"max_server_groups,optional"`
|
|
||||||
TotalCoresUsed int64 `json:"total_cores_used,optional"`
|
|
||||||
TotalRAMUsed int64 `json:"total_ram_used,optional"`
|
|
||||||
TotalInstancesUsed int64 `json:"total_instances_used,optional"`
|
|
||||||
MaxSecurityGroups int64 `json:"max_security_groups,optional"`
|
|
||||||
TotalFloatingIpsUsed int64 `json:"total_floating_ips_used,optional"`
|
|
||||||
MaxTotalCores int64 `json:"max_total_cores,optional"`
|
|
||||||
MaxServerGroupMembers int64 `json:"max_server_group_members,optional"`
|
|
||||||
MaxTotalFloatingIps int64 `json:"max_total_floating_ips,optional"`
|
|
||||||
TotalSecurityGroupsUsed int64 `json:"total_security_groups_used,optional"`
|
|
||||||
MaxTotalInstances int64 `json:"max_total_instances,optional"`
|
|
||||||
MaxTotalRAMSize int64 `json:"max_total_ram_size,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Limits struct {
|
|
||||||
Rate Rate `json:"rate,optional"`
|
|
||||||
Absolute Absolute `json:"absolute,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetComputeLimitsReq struct {
|
|
||||||
Limit int32 `json:"limit,optional"`
|
|
||||||
OffSet int32 `json:"offSet,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetComputeLimitsResp struct {
|
|
||||||
Limits Limits `json:"limits,optional"`
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type VolumeRate struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
type VolumeAbsolute struct {
|
|
||||||
TotalSnapshotsUsed int32 `json:"total_snapshots_used,optional"`
|
|
||||||
MaxTotalBackups int32 `json:"max_total_backups,optional"`
|
|
||||||
MaxTotalVolumeGigabytes int32 `json:"max_total_volume_gigabytes,optional"`
|
|
||||||
MaxTotalSnapshots int32 `json:"max_total_snapshots,optional"`
|
|
||||||
MaxTotalBackupGigabytes int32 `json:"max_total_backup_gigabytes,optional"`
|
|
||||||
TotalBackupGigabytesUsed int32 `json:"total_backup_gigabytes_used,optional"`
|
|
||||||
MaxTotalVolumes int32 `json:"max_total_volumes,optional"`
|
|
||||||
TotalVolumesUsed int32 `json:"total_volumes_used,optional"`
|
|
||||||
TotalBackupsUsed int32 `json:"total_backups_used,optional"`
|
|
||||||
TotalGigabytesUsed int32 `json:"total_gigabytes_used,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type VolumeLimits struct {
|
|
||||||
Rate VolumeRate `json:"rate,optional"`
|
|
||||||
Absolute VolumeAbsolute `json:"absolute,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetVolumeLimitsReq struct {
|
|
||||||
Limit int32 `json:"limit,optional"`
|
|
||||||
OffSet int32 `json:"offSet,optional"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetVolumeLimitsResp struct {
|
|
||||||
Limits VolumeLimits `json:"limits,optional"`
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListServersReq struct {
|
type ListServersReq struct {
|
||||||
Limit int32 `form:"limit,optional"`
|
Limit int32 `form:"limit,optional"`
|
||||||
OffSet int32 `form:"offSet,optional"`
|
OffSet int32 `form:"offSet,optional"`
|
||||||
|
@ -2284,6 +2222,7 @@ type Server struct {
|
||||||
FlavorRef string `json:"flavorRef" copier:"FlavorRef"`
|
FlavorRef string `json:"flavorRef" copier:"FlavorRef"`
|
||||||
ImageRef string `json:"imageRef" copier:"ImageRef"`
|
ImageRef string `json:"imageRef" copier:"ImageRef"`
|
||||||
Networks []CreNetwork `json:"networks" copier:"Networks"`
|
Networks []CreNetwork `json:"networks" copier:"Networks"`
|
||||||
|
BlockDeviceMappingV2 []Block_device_mapping_v2 `json:"block_device_mapping_v2" copier:"BlockDeviceMappingV2"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreNetwork struct {
|
type CreNetwork struct {
|
||||||
|
@ -2302,6 +2241,14 @@ type Security_groups struct {
|
||||||
Name string `json:"name" copier:"Name"`
|
Name string `json:"name" copier:"Name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Block_device_mapping_v2 struct {
|
||||||
|
SourceType string `json:"source_type" copier:"SourceType"`
|
||||||
|
Uuid string `json:"uuid" copier:"Uuid"`
|
||||||
|
BootIndex string `json:"boot_index" copier:"BootIndex"`
|
||||||
|
DestinationType string `json:"destination_type" copier:"DestinationType"`
|
||||||
|
DeleteOnTermination bool `json:"delete_on_termination" copier:"DeleteOnTermination"`
|
||||||
|
}
|
||||||
|
|
||||||
type ListImagesReq struct {
|
type ListImagesReq struct {
|
||||||
Limit int32 `form:"limit,optional"`
|
Limit int32 `form:"limit,optional"`
|
||||||
}
|
}
|
||||||
|
@ -2347,17 +2294,37 @@ type Tags struct {
|
||||||
type CreateImageReq struct {
|
type CreateImageReq struct {
|
||||||
Container_format string `json:"container_format" copier:"Container_format"`
|
Container_format string `json:"container_format" copier:"Container_format"`
|
||||||
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
||||||
Id string `json:"id" copier:"Id"`
|
Min_disk int32 `json:"min_disk" copier:"Min_disk"`
|
||||||
Min_disk string `json:"min_disk" copier:"Min_disk"`
|
Min_ram int32 `json:"min_ram" copier:"Min_ram"`
|
||||||
Min_ram string `json:"min_ram" copier:"Min_ram"`
|
|
||||||
Name string `json:"name" copier:"Name"`
|
Name string `json:"name" copier:"Name"`
|
||||||
Protected string `json:"protected" copier:"Protected"`
|
Protected bool `json:"protected" copier:"Protected"`
|
||||||
Tags []Tags `json:"tags" copier:"Tags"`
|
Visibility string `json:"visibility" copier:"Visibility"`
|
||||||
Visibility string `json:"visibility" copier:"visibility"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateImageResq struct {
|
type CreateImageResp struct {
|
||||||
Location string `json:"location" copier:"Location"`
|
Location string `json:"location" copier:"Location"`
|
||||||
|
Created_at string `json:"created_at" copier:"Created_at"`
|
||||||
|
Container_format string `json:"Container_format" copier:"Container_format"`
|
||||||
|
Disk_format string `json:"disk_format" copier:"Disk_format"`
|
||||||
|
File string `json:"file" copier:"File"`
|
||||||
|
Id string `json:"id" copier:"Id"`
|
||||||
|
Min_disk int32 `json:"min_disk" copier:"Min_disk"`
|
||||||
|
Min_ram int32 `json:"min_ram" copier:"Min_ram"`
|
||||||
|
Status string `json:"status" copier:"Status"`
|
||||||
|
Visibility string `json:"visibility" copier:"Visibility"`
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UploadOsImageReq struct {
|
||||||
|
ImageId string `form:"image_id" copier:"ImageId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UploadOsImageResp struct {
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeleteImageReq struct {
|
type DeleteImageReq struct {
|
||||||
|
@ -2570,6 +2537,30 @@ type VolumeResp struct {
|
||||||
ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
|
ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ListVolumeTypesReq struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListVolumeTypesResp struct {
|
||||||
|
VolumeTypes []Volume_types `json:"volume_types" copier:"VolumeTypes"`
|
||||||
|
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||||
|
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||||
|
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Volume_types struct {
|
||||||
|
Description string `json:"description" copier:"Description"`
|
||||||
|
Id string `json:"id" copier:"Id"`
|
||||||
|
IsPublic bool `json:"is_public" copier:"IsPublic"`
|
||||||
|
Name string `json:"name" copier:"Name"`
|
||||||
|
OsVolumeTypeAccessIsPublic bool `json:"os_volume_type_access_is_public" copier:"OsVolumeTypeAccessIsPublic"`
|
||||||
|
QosSpecsId string `json:"qos_specs_id" copier:"QosSpecsId"`
|
||||||
|
ExtraSpecs Extra_specs `json:"extra_specs" copier:"ExtraSpecs"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Extra_specs struct {
|
||||||
|
Capabilities string `json:"capabilities" copier:"Capabilities"`
|
||||||
|
}
|
||||||
|
|
||||||
type ListFlavorsDetailReq struct {
|
type ListFlavorsDetailReq struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2593,50 +2584,3 @@ type Flavors struct {
|
||||||
Rxtx_factor float32 `json:"rxtx_factor" copier:"rxtx_factor"`
|
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"`
|
Os_flavor_access_is_public bool `json:"os_flavor_access_is_public" copier:"os_flavor_access_is_public"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApplyReq struct {
|
|
||||||
YamlString string `json:"yamlString" copier:"yamlString"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeleteReq struct {
|
|
||||||
YamlString string `json:"yamlString" copier:"yamlString"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ApplyResp struct {
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
DataSet []DataSet `json:"dataSet,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeleteResp struct {
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
Data string `json:"data,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DataSet struct {
|
|
||||||
ApiVersion int32 `json:"apiVersion,omitempty"`
|
|
||||||
Kind string `json:"kind,omitempty"`
|
|
||||||
Name string `json:"name,omitempty"`
|
|
||||||
NameSpace string `json:"nameSpace,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CloudListResp struct {
|
|
||||||
Clouds []Cloud `json:"clouds"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Cloud struct {
|
|
||||||
Id int64 `json:"id"` // id
|
|
||||||
TaskId int64 `json:"taskId"` // 任务id
|
|
||||||
ParticipantId int64 `json:"participantId"` // 集群静态信息id
|
|
||||||
ApiVersion string `json:"apiVersion"`
|
|
||||||
Name string `json:"name"` // 名称
|
|
||||||
Namespace string `json:"namespace"` // 命名空间
|
|
||||||
Kind string `json:"kind"` // 种类
|
|
||||||
Status string `json:"status"` // 状态
|
|
||||||
StartTime string `json:"startTime"` // 开始时间
|
|
||||||
RunningTime int64 `json:"runningTime"` // 运行时长
|
|
||||||
CreatedBy int64 `json:"createdBy"` // 创建人
|
|
||||||
CreatedTime string `json:"createdTime"` // 创建时间
|
|
||||||
Result string `json:"result"`
|
|
||||||
}
|
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -19,7 +19,7 @@ require (
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230817103341-2459e5bfc835
|
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-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-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-openstack v0.0.0-20230904012700-2e8e98c5fd2f
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4
|
||||||
gitlink.org.cn/jcce-pcm/utils v0.0.2
|
gitlink.org.cn/jcce-pcm/utils v0.0.2
|
||||||
gonum.org/v1/gonum v0.11.0
|
gonum.org/v1/gonum v0.11.0
|
||||||
|
|
8
go.sum
8
go.sum
|
@ -650,8 +650,8 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/
|
||||||
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||||
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
|
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||||
github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXqMUkZeijnXp/E=
|
github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXqMUkZeijnXp/E=
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
|
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
|
||||||
|
@ -802,8 +802,8 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe
|
||||||
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
|
|
||||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
|
@ -1150,8 +1150,8 @@ gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230719015658-08a29549
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230719015658-08a29549d86a/go.mod h1:BhOgwM1LC+BD46DjTaQyYQVZs1CikwI5Pl/6qzKUexc=
|
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20230719015658-08a29549d86a/go.mod h1:BhOgwM1LC+BD46DjTaQyYQVZs1CikwI5Pl/6qzKUexc=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714030856-601935bc30e2 h1:RcGSqhsod6VXLksSLqNjV0q/SCeoUv6CbThKmV9NTZE=
|
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714030856-601935bc30e2 h1:RcGSqhsod6VXLksSLqNjV0q/SCeoUv6CbThKmV9NTZE=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714030856-601935bc30e2/go.mod h1:uyvpVqG1jHDXX+ubXI0RBwnWXzVykD/mliqGQIDvRoo=
|
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20230714030856-601935bc30e2/go.mod h1:uyvpVqG1jHDXX+ubXI0RBwnWXzVykD/mliqGQIDvRoo=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-openstack v0.0.0-20230831020641-98c737b3e61e h1:wkmtmvFzXjV04j6Gcz+WyOMaYj9LYxo1Nr8EJIFCD2I=
|
gitlink.org.cn/jcce-pcm/pcm-participant-openstack v0.0.0-20230904012700-2e8e98c5fd2f h1:SSmRAO+lCf7/r2sJ35akkCP61+lYTCNhPZXf59LJPa0=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-openstack v0.0.0-20230831020641-98c737b3e61e/go.mod h1:6lFti0ujjUP9RtJHGAHcoLa9CpPymvG2S2TNob0WdQo=
|
gitlink.org.cn/jcce-pcm/pcm-participant-openstack v0.0.0-20230904012700-2e8e98c5fd2f/go.mod h1:JRFx7CjtUDyjJGyLWuInhr4rKfqcNY66Fxi+jq+Y+sc=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4 h1:r2hBP5G/bbkPpDTPk3ENnQxD82vkoYMSeNHYhNAVRX4=
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4 h1:r2hBP5G/bbkPpDTPk3ENnQxD82vkoYMSeNHYhNAVRX4=
|
||||||
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4/go.mod h1:zRdVJiv4r4jgBli2xpYGmV0n6Gmz8fkZ5pJaNK2MbTU=
|
gitlink.org.cn/jcce-pcm/pcm-participant-slurm v0.0.0-20230714030125-a52fa198ddf4/go.mod h1:zRdVJiv4r4jgBli2xpYGmV0n6Gmz8fkZ5pJaNK2MbTU=
|
||||||
gitlink.org.cn/jcce-pcm/utils v0.0.2 h1:Stif8W9C9TOCS2hw4g+OlOywDrsVYNrkiyKfBrWkT0w=
|
gitlink.org.cn/jcce-pcm/utils v0.0.2 h1:Stif8W9C9TOCS2hw4g+OlOywDrsVYNrkiyKfBrWkT0w=
|
||||||
|
|
Loading…
Reference in New Issue