Merge branch 'refs/heads/upmaster'
# Conflicts: # api/internal/types/types.go # go.sum Former-commit-id: f3ec691387a3fa5efd919472db09fb04f63e233f
This commit is contained in:
commit
529d333d76
|
@ -40,7 +40,6 @@ type remoteResp {
|
|||
|
||||
type (
|
||||
clustersLoadReq {
|
||||
adapterId int64 `form:"adapterId"`
|
||||
clusterName string `form:"clusterName"`
|
||||
}
|
||||
clustersLoadResp {
|
||||
|
@ -155,6 +154,8 @@ type (
|
|||
MatchLabels map[string]string `json:"matchLabels,optional"`
|
||||
servers []ServerCommit `json:"servers,optional"`
|
||||
platform string `json:"platform,optional"`
|
||||
AdapterId string `json:"adapterId,optional"`
|
||||
ClusterType string `json:"clusterType,optional"`
|
||||
}
|
||||
ServerCommit {
|
||||
allCardRunTime string `json:"allCardRunTime"`
|
||||
|
@ -181,7 +182,10 @@ type (
|
|||
}
|
||||
|
||||
commitVmTaskResp {
|
||||
VmTask []VmTask `json:"vmTask" copier:"VmTask"`
|
||||
// VmTask []VmTask `json:"vmTask" copier:"VmTask"`
|
||||
TaskId int64 `json:"taskId"`
|
||||
Code int32 `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
VmTask{
|
||||
Id string `json:"id" copier:"Id"`
|
||||
|
@ -835,7 +839,6 @@ type (
|
|||
ItemValue string `json:"itemValue,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
SortOrder string `json:"sortOrder,omitempty"`
|
||||
Type string `json:"type,omitempty" db:"type"`
|
||||
ParentId string `json:"parentId,omitempty"`
|
||||
Status string `json:"status,omitempty" db:"status"`
|
||||
CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"`
|
||||
|
@ -861,7 +864,6 @@ type (
|
|||
ItemValue string `json:"itemValue,optional"`
|
||||
Description string `json:"description,optional"`
|
||||
SortOrder string `json:"sortOrder,optional"`
|
||||
Type string `json:"type,optional"`
|
||||
ParentId string `json:"parentId,optional"`
|
||||
Status string `json:"status,optional"`
|
||||
}
|
||||
|
@ -873,7 +875,6 @@ type (
|
|||
ItemValue string `json:"itemValue,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
SortOrder string `json:"sortOrder,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
ParentId string `json:"parentId,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"`
|
||||
|
|
|
@ -1,12 +1,40 @@
|
|||
syntax = "v1"
|
||||
|
||||
type CreateAlertRuleReq {
|
||||
CLusterId int64 `json:"clusterId"`
|
||||
ClusterName string `json:"clusterName"`
|
||||
Namespace string `json:"namespace"`
|
||||
Name string `json:"name"`
|
||||
PromQL string `json:"PromQL"`
|
||||
PromQL string `json:"promQL"`
|
||||
Duration string `json:"duration"`
|
||||
Labels map[string]string `json:"labels"`
|
||||
Annotations map[string]string `json:"annotations"`
|
||||
Annotations string `json:"annotations,optional"`
|
||||
AlertLevel string `json:"alertLevel"`
|
||||
}
|
||||
AlertType string `json:"alertType"`
|
||||
}
|
||||
|
||||
type (
|
||||
AlertRulesResp {
|
||||
alertRules []AlertRule `json:"alertRules"`
|
||||
}
|
||||
|
||||
AlertRule {
|
||||
Id int64 `json:"id"`
|
||||
ClusterName string `json:"clusterName"`
|
||||
Name string `json:"name"`
|
||||
PromQL string `json:"promQL"`
|
||||
Duration string `json:"duration"`
|
||||
Annotations string `json:"annotations"`
|
||||
AlertLevel string `json:"alertLevel"`
|
||||
}
|
||||
)
|
||||
|
||||
type (
|
||||
nodesLoadTopReq {
|
||||
ClusterName string `form:"clusterName"`
|
||||
Metrics string `form:"metrics"`
|
||||
}
|
||||
nodesLoadTopResp {
|
||||
code int `json:"code"`
|
||||
data interface{} `json:"data"`
|
||||
msg string `json:"msg"`
|
||||
}
|
||||
)
|
|
@ -43,10 +43,6 @@ service pcm {
|
|||
@handler commitVmTaskHandler
|
||||
post /core/commitVmTask (commitVmTaskReq) returns (commitVmTaskResp)
|
||||
|
||||
@doc "提交虚拟机任务临时"
|
||||
@handler commitVmTaskTempHandler
|
||||
post /core/commitVmTaskTemp (commitVmTaskReq) returns (commitVmTaskResp)
|
||||
|
||||
@doc "删除任务"
|
||||
@handler deleteTaskHandler
|
||||
delete /core/deleteTask/:id (deleteTaskReq)
|
||||
|
@ -389,10 +385,14 @@ service pcm {
|
|||
@handler GetNetworkNumHandler
|
||||
get /vm/getNetworkNum (ListNetworksReq) returns (NetworkNum)
|
||||
|
||||
@doc "查询镜像列表"
|
||||
@doc "查询镜像数量"
|
||||
@handler getImageNumHandler
|
||||
get /vm/getImageNum (ListImagesReq) returns (ImageNum)
|
||||
|
||||
@doc "查询虚拟机概览数据"
|
||||
@handler getOpenstackOverviewHandler
|
||||
get /vm/getOpenstackOverview (OpenstackOverviewReq) returns (OpenstackOverviewResp)
|
||||
|
||||
@doc "查询虚拟机列表"
|
||||
@handler ListServerHandler
|
||||
get /vm/listServer (ListServersReq) returns (ListServersResp)
|
||||
|
@ -409,6 +409,10 @@ service pcm {
|
|||
@handler CreateServerHandler
|
||||
post /vm/createServer (CreateServerReq) returns (CreateServerResp)
|
||||
|
||||
@doc "跨域创建虚拟机"
|
||||
@handler CreateMulServerHandler
|
||||
post /vm/createMulServer (CreateMulServerReq) returns (CreateMulServerResp)
|
||||
|
||||
@doc "根据ID查询虚拟机详情"
|
||||
@handler GetServersDetailedByIdHandler
|
||||
get /vm/getServersDetailedById (GetServersDetailedByIdReq) returns (GetServersDetailedByIdResp)
|
||||
|
@ -897,7 +901,7 @@ service pcm {
|
|||
get /schedule/ai/getStrategies returns (AiStrategyResp)
|
||||
|
||||
@handler ScheduleGetAlgorithmsHandler
|
||||
get /schedule/ai/getAlgorithms (AiAlgorithmsReq) returns (AiAlgorithmsResp)
|
||||
get /schedule/ai/getAlgorithms/:resourceType/:taskType/:dataset (AiAlgorithmsReq) returns (AiAlgorithmsResp)
|
||||
|
||||
@handler ScheduleSubmitHandler
|
||||
post /schedule/submit (ScheduleReq) returns (ScheduleResp)
|
||||
|
@ -952,9 +956,13 @@ service pcm {
|
|||
|
||||
@doc "alert rules"
|
||||
@handler alertRulesHandler
|
||||
get /monitoring/alert/rules
|
||||
get /monitoring/alert/rule returns (AlertRulesResp)
|
||||
|
||||
@doc "cluster resource load"
|
||||
@handler clustersLoadHandler
|
||||
get /monitoring/cluster/load (clustersLoadReq) returns (clustersLoadResp)
|
||||
|
||||
@doc "node resource load"
|
||||
@handler nodesLoadTopHandler
|
||||
get /monitoring/node/top (nodesLoadTopReq) returns (nodesLoadTopResp)
|
||||
}
|
|
@ -13,8 +13,14 @@ type (
|
|||
}
|
||||
|
||||
ScheduleResp {
|
||||
Success bool `json:"success"`
|
||||
ErrorMsg string `json:"errorMsg"`
|
||||
Results []*ScheduleResult `json:"results"`
|
||||
}
|
||||
|
||||
ScheduleResult {
|
||||
ClusterId string `json:"clusterId"`
|
||||
TaskId string `json:"taskId"`
|
||||
Replica int32 `json:"replica"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
AiOption {
|
||||
|
@ -49,9 +55,9 @@ type (
|
|||
}
|
||||
|
||||
AiAlgorithmsReq {
|
||||
ResourceType string `json:"resourceType"`
|
||||
TaskType string `json:"taskType"`
|
||||
Dataset string `json:"dataset"`
|
||||
ResourceType string `path:"resourceType"`
|
||||
TaskType string `path:"taskType"`
|
||||
Dataset string `path:"dataset"`
|
||||
}
|
||||
|
||||
AiAlgorithmsResp {
|
||||
|
|
|
@ -75,6 +75,22 @@ type (
|
|||
Msg string `json:"msg,omitempty"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
|
||||
OpenstackOverviewReq {
|
||||
Platform string `form:"platform,optional"`
|
||||
}
|
||||
OpenstackOverviewResp {
|
||||
Data OpenstackOverview `json:"data"`
|
||||
Code int32 `json:"code,omitempty"`
|
||||
Msg string `json:"msg,omitempty"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
OpenstackOverview {
|
||||
max_total_cores int32 `json:"max_total_cores"`
|
||||
max_total_ram_size int32 `json:"max_total_ram_size"`
|
||||
max_total_volumes int32 `json:"max_total_volumes"`
|
||||
}
|
||||
|
||||
)
|
||||
/****************** servers start*************************/
|
||||
type (
|
||||
|
@ -121,19 +137,20 @@ type (
|
|||
}
|
||||
|
||||
ServersDetailed {
|
||||
//created string `json:"created" copier:"created"`
|
||||
Id string `json:"Id" copier:"Id"`
|
||||
Name string `json:"Name" copier:"Name"`
|
||||
OSTaskState uint32 `json:"OSTaskState" copier:"OSTaskState"`
|
||||
Status string `json:"Status" copier:"Status"`
|
||||
VmState string `json:"VmState" copier:"VmState"`
|
||||
OS_EXT_SRV_ATTR_Instance_Name string `json:"OS_EXT_SRV_ATTR_Instance_Name" copier:"OS_EXT_SRV_ATTR_Instance_Name"`
|
||||
Created string `json:"Created" copier:"Created"`
|
||||
HostId string `json:"HostId" copier:"HostId"`
|
||||
Ip string `json:"Ip" copier:"Ip"`
|
||||
Image string `json:"Image" copier:"Image"`
|
||||
Updated string `json:"Updated" copier:"Updated"`
|
||||
Flavor string `json:"Flavor" copier:"Flavor"`
|
||||
Id string `json:"id" copier:"Id"`
|
||||
Name string `json:"name" copier:"Name"`
|
||||
OSTaskState uint32 `json:"os_task_state" copier:"OSTaskState"`
|
||||
Status string `json:"status" copier:"Status"`
|
||||
VmState string `json:"vm_state" copier:"VmState"`
|
||||
OS_EXT_SRV_ATTR_Instance_Name string `json:"os_ext_srv_attr_instance_name" copier:"OS_EXT_SRV_ATTR_Instance_Name"`
|
||||
Created string `json:"created" copier:"Created"`
|
||||
HostId string `json:"hostId" copier:"HostId"`
|
||||
Ip string `json:"ip" copier:"Ip"`
|
||||
Image string `json:"image" copier:"Image"`
|
||||
Updated string `json:"updated" copier:"Updated"`
|
||||
Flavor string `json:"flavor" copier:"Flavor"`
|
||||
Key_name string `json:"key_name" copier:"Key_name"`
|
||||
Survival_time int32 `json:"survival_time" copier:"Survival_time"`
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -368,6 +385,41 @@ type (
|
|||
}
|
||||
)
|
||||
|
||||
type (
|
||||
CreateMulServerReq {
|
||||
CreateMulServer []CreateMulServer `json:"createMulServer,optional"`
|
||||
}
|
||||
CreateMulServer {
|
||||
Platform string `json:"platform,optional"`
|
||||
CrServer MulCrServer `json:"crserver" copier:"CrServer"`
|
||||
}
|
||||
MulCrServer {
|
||||
Server MulServer `json:"server" copier:"Server"`
|
||||
}
|
||||
MulServer {
|
||||
AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
|
||||
Name string `json:"name,optional" copier:"Name"`
|
||||
FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"`
|
||||
Description string `json:"description,optional" copier:"Description"`
|
||||
ImageRef string `json:"imageRef,optional" copier:"ImageRef"`
|
||||
Networks []CreNetwork `json:"networks,optional" copier:"Networks"`
|
||||
MinCount int32 `json:"min_count,optional" copier:"MinCount"`
|
||||
}
|
||||
CreateMulServerResp {
|
||||
Server []MulServerResp `json:"server" copier:"Server"`
|
||||
Code int32 `json:"code,omitempty"`
|
||||
Msg string `json:"msg,omitempty"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
MulServerResp {
|
||||
Id string `json:"id" copier:"Id"`
|
||||
Links []Links `json:"links" copier:"Links"`
|
||||
OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"`
|
||||
SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"`
|
||||
AdminPass string `json:"adminPass" copier:"AdminPass"`
|
||||
}
|
||||
)
|
||||
|
||||
type(
|
||||
RebuildServerReq{
|
||||
ServerId string `json:"server_id" copier:"ServerId"`
|
||||
|
|
|
@ -6,6 +6,7 @@ Timeout: 50000
|
|||
|
||||
DB:
|
||||
DataSource: root:uJpLd6u-J?HC1@(10.206.0.12:3306)/pcm?parseTime=true&loc=Local
|
||||
# DataSource: root:uJpLd6u-J?HC1@(47.92.88.143:3306)/pcm?parseTime=true&loc=Local
|
||||
Redis:
|
||||
Host: 10.206.0.12:6379
|
||||
Pass: redisPW123
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cloud
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
|
@ -19,10 +20,6 @@ func ClusterInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|||
|
||||
l := cloud.NewClusterInfoLogic(r.Context(), svcCtx)
|
||||
resp, err := l.ClusterInfo(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
result.HttpResult(r, w, resp, err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package monitoring
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/monitoring"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
)
|
||||
|
@ -11,11 +11,7 @@ import (
|
|||
func AlertRulesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
l := monitoring.NewAlertRulesLogic(r.Context(), svcCtx)
|
||||
err := l.AlertRules()
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.Ok(w)
|
||||
}
|
||||
resp, err := l.AlertRules()
|
||||
result.HttpResult(r, w, resp, err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package monitoring
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
|
@ -19,10 +20,6 @@ func CreateAlertRuleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|||
|
||||
l := monitoring.NewCreateAlertRuleLogic(r.Context(), svcCtx)
|
||||
err := l.CreateAlertRule(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.Ok(w)
|
||||
}
|
||||
result.HttpResult(r, w, nil, err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package monitoring
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/monitoring"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
)
|
||||
|
||||
func NodesLoadTopHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.NodesLoadTopReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := monitoring.NewNodesLoadTopLogic(r.Context(), svcCtx)
|
||||
resp, err := l.NodesLoadTop(&req)
|
||||
result.HttpResult(r, w, resp, err)
|
||||
}
|
||||
}
|
|
@ -45,11 +45,6 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/core/commitVmTask",
|
||||
Handler: core.CommitVmTaskHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/core/commitVmTaskTemp",
|
||||
Handler: core.CommitVmTaskTempHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodDelete,
|
||||
Path: "/core/deleteTask/:id",
|
||||
|
@ -461,6 +456,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/vm/getImageNum",
|
||||
Handler: vm.GetImageNumHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/vm/getOpenstackOverview",
|
||||
Handler: vm.GetOpenstackOverviewHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/vm/listServer",
|
||||
|
@ -481,6 +481,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/vm/createServer",
|
||||
Handler: vm.CreateServerHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/vm/createMulServer",
|
||||
Handler: vm.CreateMulServerHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/vm/getServersDetailedById",
|
||||
|
@ -1112,7 +1117,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/schedule/ai/getAlgorithms",
|
||||
Path: "/schedule/ai/getAlgorithms/:resourceType/:taskType/:dataset",
|
||||
Handler: schedule.ScheduleGetAlgorithmsHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
|
@ -1194,7 +1199,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/monitoring/alert/rules",
|
||||
Path: "/monitoring/alert/rule",
|
||||
Handler: monitoring.AlertRulesHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
|
@ -1202,6 +1207,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/monitoring/cluster/load",
|
||||
Handler: monitoring.ClustersLoadHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/monitoring/node/top",
|
||||
Handler: monitoring.NodesLoadTopHandler(serverCtx),
|
||||
},
|
||||
},
|
||||
rest.WithPrefix("/pcm/v1"),
|
||||
)
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
package core
|
||||
package vm
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/core"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/vm"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
)
|
||||
|
||||
func CommitVmTaskTempHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
func CreateMulServerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.CommitVmTaskReq
|
||||
var req types.CreateMulServerReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := core.NewCommitVmTaskTempLogic(r.Context(), svcCtx)
|
||||
resp, err := l.CommitVmTaskTemp(&req)
|
||||
l := vm.NewCreateMulServerLogic(r.Context(), svcCtx)
|
||||
resp, err := l.CreateMulServer(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
|
@ -0,0 +1,28 @@
|
|||
package vm
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/vm"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
)
|
||||
|
||||
func GetOpenstackOverviewHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.OpenstackOverviewReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := vm.NewGetOpenstackOverviewLogic(r.Context(), svcCtx)
|
||||
resp, err := l.GetOpenstackOverview(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -42,6 +42,14 @@ func (l *CommitVmTaskLogic) CommitVmTask(req *types.CommitVmTaskReq) (resp *type
|
|||
if tx.Error != nil {
|
||||
return nil, tx.Error
|
||||
}
|
||||
|
||||
var clusterIds []int64
|
||||
l.svcCtx.DbEngin.Raw("SELECT id FROM `t_cluster` where adapter_id = ? and label = ?", req.AdapterId, req.ClusterType).Scan(&clusterIds)
|
||||
|
||||
if len(clusterIds) == 0 || clusterIds == nil {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
vm := models.Vm{}
|
||||
tool.Convert(req, &vm)
|
||||
mqInfo := response.TaskInfo{
|
||||
|
@ -52,5 +60,11 @@ func (l *CommitVmTaskLogic) CommitVmTask(req *types.CommitVmTaskReq) (resp *type
|
|||
}
|
||||
//req.TaskId = taskModel.Id
|
||||
mqs.InsQueue.Beta.Add(&mqInfo)
|
||||
return
|
||||
tx = l.svcCtx.DbEngin.Create(&mqInfo)
|
||||
resp = &types.CommitVmTaskResp{
|
||||
Code: 200,
|
||||
Msg: "success",
|
||||
TaskId: taskModel.Id,
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
package core
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CommitVmTaskTempLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewCommitVmTaskTempLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CommitVmTaskTempLogic {
|
||||
return &CommitVmTaskTempLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *CommitVmTaskTempLogic) CommitVmTaskTemp(req *types.CommitVmTaskReq) (resp *types.CommitVmTaskResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
}
|
|
@ -17,10 +17,10 @@ package core
|
|||
import (
|
||||
"context"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopus"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopus"
|
||||
"log"
|
||||
)
|
||||
|
||||
|
|
|
@ -17,10 +17,10 @@ package core
|
|||
import (
|
||||
"context"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopus"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopus"
|
||||
"log"
|
||||
)
|
||||
|
||||
|
|
|
@ -39,11 +39,10 @@ func (l *AddDictItemLogic) AddDictItem(req *types.DictItemEditReq) (resp *types.
|
|||
dictItem.ItemValue = req.ItemValue
|
||||
dictItem.Description = req.Description
|
||||
dictItem.SortOrder = req.SortOrder
|
||||
dictItem.Type = req.Type
|
||||
dictItem.ParentId = "0"
|
||||
if req.ParentId != "" {
|
||||
dictItem.ParentId = req.ParentId
|
||||
}
|
||||
dictItem.ParentId = "0"
|
||||
dictItem.Status = req.Status
|
||||
dictItem.Id = utils.GenSnowflakeIDStr()
|
||||
dictItem.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
||||
|
|
|
@ -30,7 +30,7 @@ func (l *EditDictItemLogic) EditDictItem(req *types.DictItemEditReq) (resp *type
|
|||
dictItem := &types.DictItemInfo{}
|
||||
result := l.svcCtx.DbEngin.Table("t_dict_item").First(&dictItem, req.Id)
|
||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||
logx.Errorf("Dictionary data editing failure. errors: %s", err.Error())
|
||||
logx.Errorf("Dictionary data editing failure. errors: %s", result.Error)
|
||||
return nil, errors.New("DictItem does not exist")
|
||||
}
|
||||
utils.Convert(req, &dictItem)
|
||||
|
|
|
@ -31,7 +31,7 @@ func (l *EditDictLogic) EditDict(req *types.DictEditReq) (resp *types.DictResp,
|
|||
dict := &types.DictInfo{}
|
||||
result := l.svcCtx.DbEngin.Table("t_dict").First(&dict, req.Id)
|
||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||
logx.Errorf("Dictionary editing failure. errors: %s", err.Error())
|
||||
logx.Errorf("Dictionary editing failure. errors: %s", result.Error)
|
||||
return nil, errors.New("Dict does not exist")
|
||||
}
|
||||
utils.Convert(req, &dict)
|
||||
|
|
|
@ -2,6 +2,7 @@ package dictionary
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
@ -29,12 +30,13 @@ func (l *ListDictItemByCodeLogic) ListDictItemByCode(req *types.DictCodeReq) (re
|
|||
db := l.svcCtx.DbEngin.Model(&types.DictInfo{}).Table("t_dict")
|
||||
|
||||
// 左连接查询
|
||||
db.Select("t_dict_item.*").Joins("left join t_dict_item on t_dict.id = t_dict_item.dict_id").
|
||||
err = db.Select("t_dict_item.*").Joins("left join t_dict_item on t_dict.id = t_dict_item.dict_id").
|
||||
Where("t_dict.dict_code = ?", req.DictCode).
|
||||
Where("t_dict_item.status", 1).
|
||||
Order("t_dict_item.sort_order").Scan(&dictList)
|
||||
Order("t_dict_item.sort_order").Scan(&dictList).Error
|
||||
if err != nil {
|
||||
return resp, err
|
||||
logx.Errorf("ListDictItemByCode()=> failed %s", err.Error())
|
||||
return nil, errors.New("description Failed to query dictionary entry data")
|
||||
}
|
||||
resp.List = dictList
|
||||
return resp, nil
|
||||
|
|
|
@ -2,10 +2,11 @@ package monitoring
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/prometheus/alertmanager/api/v2/client/alert"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
)
|
||||
|
||||
type AlertRulesLogic struct {
|
||||
|
@ -22,13 +23,10 @@ func NewAlertRulesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AlertR
|
|||
}
|
||||
}
|
||||
|
||||
func (l *AlertRulesLogic) AlertRules() error {
|
||||
// todo: add your logic here and delete this line
|
||||
alerts, err := l.svcCtx.AlertClient.Alert.GetAlerts(&alert.GetAlertsParams{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
println(alerts.Error())
|
||||
return nil
|
||||
return nil
|
||||
func (l *AlertRulesLogic) AlertRules() (resp *types.AlertRulesResp, err error) {
|
||||
resp = &types.AlertRulesResp{}
|
||||
var alertRules []types.AlertRule
|
||||
l.svcCtx.DbEngin.Raw("SELECT ar.id,ar.*,GROUP_CONCAT(tc.`name` ORDER BY tc.`name` ASC SEPARATOR ',') as cluster_name FROM alert_rule ar JOIN t_cluster tc ON ar.cluster_id = tc.id WHERE ar.deleted_at IS NULL AND tc.deleted_at IS NULL GROUP BY ar.id").Scan(&alertRules)
|
||||
resp.AlertRules = alertRules
|
||||
return resp, nil
|
||||
}
|
||||
|
|
|
@ -28,8 +28,7 @@ func NewClustersLoadLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Clus
|
|||
func (l *ClustersLoadLogic) ClustersLoad(req *types.ClustersLoadReq) (resp *types.ClustersLoadResp, err error) {
|
||||
resp = &types.ClustersLoadResp{}
|
||||
metrics := []string{"cluster_cpu_utilisation", "cluster_cpu_avail", "cluster_cpu_total", "cluster_memory_total", "cluster_memory_avail", "cluster_memory_utilisation", "cluster_disk_utilisation", "cluster_disk_avail", "cluster_disk_total"}
|
||||
result := l.svcCtx.PromClient.GetNamedMetrics(metrics, time.Now(), tracker.ClusterOption{AdapterId: req.AdapterId, ClusterName: req.ClusterName})
|
||||
result := l.svcCtx.PromClient.GetNamedMetrics(metrics, time.Now(), tracker.ClusterOption{ClusterName: req.ClusterName})
|
||||
resp.Data = result
|
||||
return resp, nil
|
||||
return
|
||||
}
|
||||
|
|
|
@ -3,12 +3,14 @@ package monitoring
|
|||
import (
|
||||
"context"
|
||||
v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
|
||||
v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
||||
tool "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
)
|
||||
|
||||
type CreateAlertRuleLogic struct {
|
||||
|
@ -25,16 +27,49 @@ func NewCreateAlertRuleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *C
|
|||
}
|
||||
}
|
||||
|
||||
type RuleSelectorResp struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
Prometheus v1.Prometheus `json:"data"`
|
||||
}
|
||||
|
||||
func (l *CreateAlertRuleLogic) CreateAlertRule(req *types.CreateAlertRuleReq) error {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
// save to db
|
||||
var alertRule models.AlertRule
|
||||
tool.Convert(req, &alertRule)
|
||||
alertRule.Id = tool.GenSnowflakeID()
|
||||
tx := l.svcCtx.DbEngin.Save(&alertRule)
|
||||
if tx.Error != nil {
|
||||
return tx.Error
|
||||
}
|
||||
|
||||
// query server http url.
|
||||
var server string
|
||||
l.svcCtx.DbEngin.Raw("select ta.server from t_adapter ta,t_cluster tc where ta.id = tc.adapter_id and tc.name = ?", &req.ClusterName).Scan(&server)
|
||||
|
||||
// rule selector
|
||||
var ruleSelectorResp RuleSelectorResp
|
||||
|
||||
response, err := l.svcCtx.HttpClient.R().
|
||||
SetQueryParams(map[string]string{
|
||||
"clusterName": req.ClusterName,
|
||||
}).
|
||||
SetResult(&ruleSelectorResp).
|
||||
ForceContentType("application/json").
|
||||
Get(server + "/api/v1/monitoring/rule/selector")
|
||||
if err != nil || response.IsError() {
|
||||
return err
|
||||
}
|
||||
// Data Filling
|
||||
ruleDuration := v1.Duration(req.Duration)
|
||||
rule := &v1.PrometheusRule{
|
||||
TypeMeta: v12.TypeMeta{Kind: "PrometheusRule",
|
||||
APIVersion: "monitoring.coreos.com/v1"},
|
||||
ObjectMeta: v12.ObjectMeta{
|
||||
Name: req.Name,
|
||||
Namespace: req.Namespace,
|
||||
Labels: map[string]string{
|
||||
"release": "prometheus",
|
||||
},
|
||||
Namespace: ruleSelectorResp.Prometheus.ObjectMeta.Namespace,
|
||||
Labels: ruleSelectorResp.Prometheus.Spec.RuleSelector.MatchLabels,
|
||||
},
|
||||
Spec: v1.PrometheusRuleSpec{
|
||||
Groups: []v1.RuleGroup{
|
||||
|
@ -48,13 +83,35 @@ func (l *CreateAlertRuleLogic) CreateAlertRule(req *types.CreateAlertRuleReq) er
|
|||
Labels: map[string]string{
|
||||
"severity": req.AlertLevel,
|
||||
},
|
||||
Annotations: req.Annotations,
|
||||
Annotations: map[string]string{"description": req.Annotations},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
println(rule.Kind)
|
||||
|
||||
ruleBytes, err := json.Marshal(rule)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// create prometheus rule
|
||||
response, err = l.svcCtx.HttpClient.R().
|
||||
SetBody(&OperateStruct{
|
||||
ClusterName: req.ClusterName,
|
||||
YamlString: string(ruleBytes),
|
||||
}).
|
||||
ForceContentType("application/json").
|
||||
Post(server + "/api/v1/operate/apply")
|
||||
if err != nil || response.IsError() {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type OperateStruct struct {
|
||||
ClusterName string `json:"clusterName"`
|
||||
YamlString string `json:"yamlString"`
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package monitoring
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type NodesLoadTopLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewNodesLoadTopLogic(ctx context.Context, svcCtx *svc.ServiceContext) *NodesLoadTopLogic {
|
||||
return &NodesLoadTopLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *NodesLoadTopLogic) NodesLoadTop(req *types.NodesLoadTopReq) (resp *types.NodesLoadTopResp, err error) {
|
||||
|
||||
resp = &types.NodesLoadTopResp{}
|
||||
|
||||
var server string
|
||||
l.svcCtx.DbEngin.Raw("select ta.server from t_adapter ta,t_cluster tc where ta.id = tc.adapter_id and tc.name = ?", &req.ClusterName).Scan(&server)
|
||||
response, err := l.svcCtx.HttpClient.R().
|
||||
SetQueryParams(map[string]string{
|
||||
"clusterName": req.ClusterName,
|
||||
"metrics": req.Metrics,
|
||||
}).
|
||||
SetResult(&resp).
|
||||
ForceContentType("application/json").
|
||||
Get(server + "/api/v1/monitoring/node")
|
||||
if err != nil || response.IsError() {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
|
@ -4,7 +4,6 @@ import (
|
|||
"context"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers/option"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
|
@ -29,25 +28,42 @@ func (l *ScheduleSubmitLogic) ScheduleSubmit(req *types.ScheduleReq) (resp *type
|
|||
resp = &types.ScheduleResp{}
|
||||
opt := &option.AiOption{
|
||||
ResourceType: req.AiOption.ResourceType,
|
||||
Tops: 0,
|
||||
Tops: req.AiOption.Tops,
|
||||
TaskType: req.AiOption.TaskType,
|
||||
DatasetsName: req.AiOption.Datasets,
|
||||
AlgorithmName: "cnn",
|
||||
AlgorithmName: req.AiOption.Algorithm,
|
||||
StrategyName: req.AiOption.Strategy,
|
||||
ClusterToStaticWeight: nil,
|
||||
Params: []string{
|
||||
"epoch,1",
|
||||
},
|
||||
ClusterToStaticWeight: req.AiOption.StaticWeightMap,
|
||||
Params: req.AiOption.Params,
|
||||
Envs: req.AiOption.Envs,
|
||||
Cmd: req.AiOption.Cmd,
|
||||
}
|
||||
aiSchdl, err := schedulers.NewAiScheduler(l.ctx, "", l.svcCtx.Scheduler, opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl)
|
||||
results, err := l.svcCtx.Scheduler.AssignAndSchedule(aiSchdl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch opt.GetOptionType() {
|
||||
case option.AI:
|
||||
rs := (results).([]*schedulers.AiResult)
|
||||
for _, r := range rs {
|
||||
scheResult := &types.ScheduleResult{}
|
||||
scheResult.ClusterId = r.ClusterId
|
||||
scheResult.TaskId = r.TaskId
|
||||
scheResult.Replica = r.Replica
|
||||
scheResult.Msg = r.Msg
|
||||
resp.Results = append(resp.Results, scheResult)
|
||||
}
|
||||
err = l.svcCtx.Scheduler.AiStorages.SaveTask(req.AiOption.TaskName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
package vm
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/pkg/errors"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/helper/xerr"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/JointCloud/pcm-openstack/openstack"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CreateMulServerLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewCreateMulServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateMulServerLogic {
|
||||
return &CreateMulServerLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
// ServerLinks 表示服务器链接的结构体
|
||||
type ServerLinks struct {
|
||||
Href string `json:"href"` // 注意:在JSON中,"href "有一个额外的空格,需要移除
|
||||
Rel string `json:"rel"`
|
||||
}
|
||||
|
||||
// SecurityGroup 表示安全组的结构体
|
||||
type SecurityGroup struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// Server 表示服务器的结构体
|
||||
type Server struct {
|
||||
ID string `json:"id"`
|
||||
Links []ServerLinks `json:"links"`
|
||||
OSDCFDiskConfig string `json:"OS_DCF_diskConfig"`
|
||||
SecurityGroups []SecurityGroup `json:"security_groups"`
|
||||
AdminPass string `json:"adminPass"`
|
||||
}
|
||||
|
||||
// Response 表示整个响应的结构体
|
||||
type Response struct {
|
||||
Server Server `json:"server"`
|
||||
}
|
||||
|
||||
func (l *CreateMulServerLogic) CreateMulServer(req *types.CreateMulServerReq) (resp *types.CreateMulServerResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
CreateServerReq := &openstack.CreateServerReq{}
|
||||
var response Response
|
||||
fmt.Println("请求入参:", req)
|
||||
for _, server := range req.CreateMulServer {
|
||||
fmt.Println("入参参数:", server)
|
||||
err = copier.CopyWithOption(CreateServerReq, server, copier.Option{Converters: utils.Converters})
|
||||
CreateServerResp, err := l.svcCtx.OpenstackRpc.CreateServer(l.ctx, CreateServerReq)
|
||||
fmt.Println("返回结果:", CreateServerResp)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrMsg("Failed to create Server list"), "Failed to get db Server list err : %v ,req:%+v", err, req)
|
||||
}
|
||||
marshal, err := json.Marshal(&CreateServerResp)
|
||||
fmt.Println("返回结果b:", marshal)
|
||||
if err != nil {
|
||||
return nil, result.NewDefaultError(err.Error())
|
||||
}
|
||||
json.Unmarshal(marshal, &response)
|
||||
}
|
||||
err = copier.CopyWithOption(&resp, &response, copier.Option{Converters: utils.Converters})
|
||||
fmt.Println("返回结果c:", resp)
|
||||
return resp, err
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package vm
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
)
|
||||
|
||||
type GetOpenstackOverviewLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewGetOpenstackOverviewLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetOpenstackOverviewLogic {
|
||||
return &GetOpenstackOverviewLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetOpenstackOverviewLogic) GetOpenstackOverview(req *types.OpenstackOverviewReq) (resp *types.OpenstackOverviewResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
var openstackOverview types.OpenstackOverview
|
||||
sqlStr := "SELECT t.max_total_cores,t.max_total_ram_size,t.max_total_volumes FROM `vm_openstack_overview` t left join t_cluster tc on t.cluster_id=tc.id where tc.`name` = ?"
|
||||
l.svcCtx.DbEngin.Raw(sqlStr, req.Platform).Scan(&openstackOverview)
|
||||
resp = &types.OpenstackOverviewResp{
|
||||
Code: 200,
|
||||
Msg: "success",
|
||||
Data: openstackOverview,
|
||||
}
|
||||
return resp, err
|
||||
}
|
|
@ -18,15 +18,12 @@ import (
|
|||
"context"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/helper/xerr"
|
||||
error2 "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/error"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/JointCloud/pcm-openstack/openstack"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type ListServersDetailedLogic struct {
|
||||
|
@ -44,18 +41,14 @@ func NewListServersDetailedLogic(ctx context.Context, svcCtx *svc.ServiceContext
|
|||
}
|
||||
|
||||
func (l *ListServersDetailedLogic) ListServersDetailed(req *types.ListServersDetailedReq) (resp *types.ListServersDetailedResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
resp = &types.ListServersDetailedResp{}
|
||||
ListServersDetailedReq := &openstack.ListServersDetailedReq{}
|
||||
err = copier.CopyWithOption(ListServersDetailedReq, req, copier.Option{Converters: utils.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, error2.NewDefaultError(err.Error())
|
||||
}
|
||||
json.Unmarshal(marshal, &resp)
|
||||
utils.Convert(&ListServersDetailedResp.Servers, &resp.ServersDetailed)
|
||||
err = copier.CopyWithOption(&resp, &ListServersDetailedResp, copier.Option{Converters: utils.Converters})
|
||||
return resp, err
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package database
|
|||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/strategy"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
||||
|
@ -24,12 +23,22 @@ func (s *AiStorage) GetParticipants() (*types.ClusterListResp, error) {
|
|||
return &resp, nil
|
||||
}
|
||||
|
||||
func (s *AiStorage) SaveTask(cluster strategy.AssignedCluster) error {
|
||||
func (s *AiStorage) GetClustersByAdapterId(id string) (*types.ClusterListResp, error) {
|
||||
var resp types.ClusterListResp
|
||||
tx := s.DbEngin.Raw("select * from t_cluster where `deleted_at` IS NULL and `adapter_id` = ? ORDER BY create_time Desc", id).Scan(&resp.List)
|
||||
if tx.Error != nil {
|
||||
logx.Errorf(tx.Error.Error())
|
||||
return nil, tx.Error
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
func (s *AiStorage) SaveTask(name string) error {
|
||||
// 构建主任务结构体
|
||||
taskModel := models.Task{
|
||||
Status: constants.Saved,
|
||||
Description: "ai task",
|
||||
Name: "testAi",
|
||||
Name: name,
|
||||
CommitTime: time.Now(),
|
||||
}
|
||||
// 保存任务数据到数据库
|
||||
|
|
|
@ -47,7 +47,7 @@ type Scheduler struct {
|
|||
type SubSchedule interface {
|
||||
GetNewStructForDb(task *response.TaskInfo, resource string, participantId int64) (interface{}, error)
|
||||
PickOptimalStrategy() (strategy.Strategy, error)
|
||||
AssignTask(clusters []*strategy.AssignedCluster) ([]interface{}, error)
|
||||
AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error)
|
||||
}
|
||||
|
||||
func NewScheduler(subSchedule SubSchedule, val string, dbEngin *gorm.DB, participantRpc participantservice.ParticipantService) (*Scheduler, error) {
|
||||
|
@ -130,7 +130,7 @@ func (s *Scheduler) TempAssign() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *Scheduler) AssignAndSchedule(ss SubSchedule) ([]interface{}, error) {
|
||||
func (s *Scheduler) AssignAndSchedule(ss SubSchedule) (interface{}, error) {
|
||||
//// 已指定 ParticipantId
|
||||
//if s.task.ParticipantId != 0 {
|
||||
// return nil
|
||||
|
|
|
@ -16,7 +16,9 @@ package schedulers
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers/option"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||
|
@ -25,6 +27,8 @@ import (
|
|||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/pkg/response"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopus"
|
||||
"strconv"
|
||||
"sync"
|
||||
)
|
||||
|
||||
|
@ -36,6 +40,13 @@ type AiScheduler struct {
|
|||
ctx context.Context
|
||||
}
|
||||
|
||||
type AiResult struct {
|
||||
TaskId string
|
||||
ClusterId string
|
||||
Replica int32
|
||||
Msg string
|
||||
}
|
||||
|
||||
func NewAiScheduler(ctx context.Context, val string, scheduler *scheduler.Scheduler, option *option.AiOption) (*AiScheduler, error) {
|
||||
return &AiScheduler{ctx: ctx, yamlString: val, Scheduler: scheduler, option: option}, nil
|
||||
}
|
||||
|
@ -95,15 +106,15 @@ func (as *AiScheduler) PickOptimalStrategy() (strategy.Strategy, error) {
|
|||
return nil, errors.New("no strategy has been chosen")
|
||||
}
|
||||
|
||||
func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]interface{}, error) {
|
||||
func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error) {
|
||||
if clusters == nil {
|
||||
return nil, errors.New("clusters is nil")
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
var result []interface{}
|
||||
var results []*AiResult
|
||||
var errs []error
|
||||
var ch = make(chan interface{}, len(clusters))
|
||||
var ch = make(chan *AiResult, len(clusters))
|
||||
var errCh = make(chan error, len(clusters))
|
||||
|
||||
executorMap := *as.AiExecutor
|
||||
|
@ -114,23 +125,26 @@ func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]inter
|
|||
}
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
resp, err := executorMap[c.Name].Execute(as.ctx, as.option)
|
||||
opt, _ := cloneAiOption(as.option)
|
||||
resp, err := executorMap[c.Name].Execute(as.ctx, opt)
|
||||
|
||||
if err != nil {
|
||||
// TODO: database operation
|
||||
errCh <- err
|
||||
wg.Done()
|
||||
return
|
||||
}
|
||||
// TODO: database operation
|
||||
ch <- resp
|
||||
|
||||
result, _ := convertType(resp)
|
||||
result.Replica = c.Replicas
|
||||
result.ClusterId = strconv.FormatInt(c.ParticipantId, 10)
|
||||
|
||||
ch <- result
|
||||
wg.Done()
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
for s := range ch {
|
||||
result = append(result, s)
|
||||
}
|
||||
close(ch)
|
||||
close(errCh)
|
||||
|
||||
for e := range errCh {
|
||||
errs = append(errs, e)
|
||||
|
@ -140,7 +154,12 @@ func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]inter
|
|||
return nil, errors.New("submit task failed")
|
||||
}
|
||||
|
||||
return result, nil
|
||||
for s := range ch {
|
||||
// TODO: database operation
|
||||
results = append(results, s)
|
||||
}
|
||||
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (as *AiScheduler) findClustersWithResources() ([]*collector.ResourceStats, error) {
|
||||
|
@ -186,3 +205,43 @@ func (as *AiScheduler) findClustersWithResources() ([]*collector.ResourceStats,
|
|||
}
|
||||
return resourceSpecs, nil
|
||||
}
|
||||
|
||||
func convertType(in interface{}) (*AiResult, error) {
|
||||
var result AiResult
|
||||
switch (in).(type) {
|
||||
case *hpcAC.SubmitTaskAiResp:
|
||||
resp := (in).(*hpcAC.SubmitTaskAiResp)
|
||||
if resp.Code == "0" {
|
||||
result.TaskId = resp.Data
|
||||
} else {
|
||||
result.Msg = resp.Msg
|
||||
}
|
||||
return &result, nil
|
||||
case *octopus.CreateTrainJobResp:
|
||||
resp := (in).(*octopus.CreateTrainJobResp)
|
||||
|
||||
if resp.Success {
|
||||
result.TaskId = resp.Payload.JobId
|
||||
} else {
|
||||
result.Msg = resp.Error.Message
|
||||
}
|
||||
|
||||
return &result, nil
|
||||
default:
|
||||
return nil, errors.New("ai task response failed")
|
||||
}
|
||||
}
|
||||
|
||||
func cloneAiOption(opt *option.AiOption) (*option.AiOption, error) {
|
||||
origJSON, err := json.Marshal(opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
clone := option.AiOption{}
|
||||
if err = json.Unmarshal(origJSON, &clone); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &clone, nil
|
||||
}
|
||||
|
|
|
@ -115,6 +115,6 @@ func (cs *CloudScheduler) genTaskAndProviders() (*providerPricing.Task, []*provi
|
|||
return nil, providerList, nil
|
||||
}
|
||||
|
||||
func (cs *CloudScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]interface{}, error) {
|
||||
func (cs *CloudScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
@ -50,6 +50,6 @@ func (h *HpcScheduler) genTaskAndProviders(task *response.TaskInfo) (*providerPr
|
|||
return nil, nil
|
||||
}
|
||||
|
||||
func (h *HpcScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]interface{}, error) {
|
||||
func (h *HpcScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
package option
|
||||
|
||||
type CloudOption struct {
|
||||
task interface{}
|
||||
}
|
||||
|
||||
func (c CloudOption) GetOptionType() string {
|
||||
return CLOUD
|
||||
}
|
|
@ -64,7 +64,7 @@ func (vm *VmScheduler) genTaskAndProviders() (*providerPricing.Task, []*provider
|
|||
return nil, providerList, nil
|
||||
}
|
||||
|
||||
func (v VmScheduler) AssignTask(clusters []*strategy.AssignedCluster) ([]interface{}, error) {
|
||||
func (v VmScheduler) AssignTask(clusters []*strategy.AssignedCluster) (interface{}, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/database"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/executor"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/storeLink"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/imagesservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/modelartsservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopusclient"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -16,34 +18,30 @@ const (
|
|||
SHUGUANGAI = "shuguangAi"
|
||||
)
|
||||
|
||||
var (
|
||||
AiTypeMap = map[string]string{
|
||||
"hanwuji": OCTOPUS,
|
||||
//"suiyan": OCTOPUS,
|
||||
//"sailingsi": OCTOPUS,
|
||||
//"modelarts-CloudBrain2": MODELARTS,
|
||||
"shuguangAi": SHUGUANGAI,
|
||||
}
|
||||
)
|
||||
func InitAiClusterMap(octopusRpc octopusclient.Octopus, modelArtsRpc modelartsservice.ModelArtsService, modelArtsImgRpc imagesservice.ImagesService, aCRpc hpcacclient.HpcAC, storages *database.AiStorage) (*map[string]executor.AiExecutor, *map[string]collector.AiCollector) {
|
||||
clusters, _ := storages.GetClustersByAdapterId("1777144940459986944")
|
||||
|
||||
func InitAiClusterMap(octopusRpc octopusclient.Octopus, modelArtsRpc modelartsservice.ModelArtsService, modelArtsImgRpc imagesservice.ImagesService, aCRpc hpcacclient.HpcAC) (*map[string]executor.AiExecutor, *map[string]collector.AiCollector) {
|
||||
executorMap := make(map[string]executor.AiExecutor)
|
||||
collectorMap := make(map[string]collector.AiCollector)
|
||||
for k, v := range AiTypeMap {
|
||||
switch v {
|
||||
for _, c := range clusters.List {
|
||||
switch c.Name {
|
||||
case OCTOPUS:
|
||||
octopus := storeLink.NewOctopusLink(octopusRpc, k, 0)
|
||||
collectorMap[k] = octopus
|
||||
executorMap[k] = octopus
|
||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||
octopus := storeLink.NewOctopusLink(octopusRpc, c.Nickname, id)
|
||||
collectorMap[c.Nickname] = octopus
|
||||
executorMap[c.Nickname] = octopus
|
||||
case MODELARTS:
|
||||
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, k, 0)
|
||||
collectorMap[k] = modelarts
|
||||
executorMap[k] = modelarts
|
||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, c.Nickname, id)
|
||||
collectorMap[c.Nickname] = modelarts
|
||||
executorMap[c.Nickname] = modelarts
|
||||
case SHUGUANGAI:
|
||||
sgai := storeLink.NewShuguangAi(aCRpc, k, 0)
|
||||
collectorMap[k] = sgai
|
||||
executorMap[k] = sgai
|
||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||
sgai := storeLink.NewShuguangAi(aCRpc, c.Nickname, id)
|
||||
collectorMap[c.Nickname] = sgai
|
||||
executorMap[c.Nickname] = sgai
|
||||
}
|
||||
}
|
||||
|
||||
return &executorMap, &collectorMap
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ func (ps *DynamicResourcesStrategy) Schedule() ([]*AssignedCluster, error) {
|
|||
if opt.ResourceType == "computeCard" {
|
||||
var maxCurrentCardHours float64
|
||||
for _, card := range res.CardsAvail {
|
||||
cardHours := common.RoundFloat(card.TOpsAtFp16*card.CardHours, 3)
|
||||
cardHours := common.RoundFloat( /*card.TOpsAtFp16**/ card.CardHours, 3)
|
||||
if cardHours > maxCurrentCardHours {
|
||||
maxCurrentCardHours = cardHours
|
||||
}
|
||||
|
@ -64,6 +64,8 @@ func (ps *DynamicResourcesStrategy) Schedule() ([]*AssignedCluster, error) {
|
|||
}
|
||||
results = append(results, &assignedCluster)
|
||||
return results, nil
|
||||
case option.CLOUD:
|
||||
|
||||
}
|
||||
|
||||
return nil, errors.New("failed to apply DynamicResourcesStrategy")
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers/option"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopus"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopusclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopus"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
|
|
@ -4,10 +4,10 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcacclient"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
|
|
@ -17,13 +17,13 @@ package storeLink
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/common"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/schedulers/option"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcacclient"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
@ -284,14 +284,14 @@ func (s *ShuguangAi) GetResourceStats(ctx context.Context) (*collector.ResourceS
|
|||
totalDcu := limitResp.Data.AccountMaxDcu
|
||||
|
||||
//disk
|
||||
diskReq := &hpcAC.ParaStorQuotaReq{}
|
||||
diskResp, err := s.aCRpc.ParaStorQuota(ctx, diskReq)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
totalDisk := common.RoundFloat(diskResp.Data[0].Threshold*KB*KB*KB, 3)
|
||||
availDisk := common.RoundFloat((diskResp.Data[0].Threshold-diskResp.Data[0].Usage)*KB*KB*KB, 3)
|
||||
//diskReq := &hpcAC.ParaStorQuotaReq{}
|
||||
//diskResp, err := s.aCRpc.ParaStorQuota(ctx, diskReq)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//
|
||||
//totalDisk := common.RoundFloat(diskResp.Data[0].Threshold*KB*KB*KB, 3)
|
||||
//availDisk := common.RoundFloat((diskResp.Data[0].Threshold-diskResp.Data[0].Usage)*KB*KB*KB, 3)
|
||||
|
||||
//memory
|
||||
nodeResp, err := s.aCRpc.GetNodeResources(ctx, nil)
|
||||
|
@ -349,12 +349,12 @@ func (s *ShuguangAi) GetResourceStats(ctx context.Context) (*collector.ResourceS
|
|||
Balance: balance,
|
||||
CpuCoreTotal: totalCpu,
|
||||
CpuCoreAvail: CpuCoreAvail,
|
||||
DiskTotal: totalDisk,
|
||||
DiskAvail: availDisk,
|
||||
MemTotal: memSize,
|
||||
MemAvail: MemAvail,
|
||||
CpuCoreHours: cpuHours,
|
||||
CardsAvail: cards,
|
||||
//DiskTotal: totalDisk,
|
||||
//DiskAvail: availDisk,
|
||||
MemTotal: memSize,
|
||||
MemAvail: MemAvail,
|
||||
CpuCoreHours: cpuHours,
|
||||
CardsAvail: cards,
|
||||
}
|
||||
|
||||
return resourceStats, nil
|
||||
|
@ -381,7 +381,7 @@ func (s *ShuguangAi) GetAlgorithms(ctx context.Context) ([]*collector.Algorithm,
|
|||
var algorithms []*collector.Algorithm
|
||||
for _, t := range GetTaskTypes() {
|
||||
taskType := t
|
||||
req := &hpcAC.GetFileListReq{Limit: 100, Path: ALGORITHM_DIR + FORWARD_SLASH + taskType, Start: 0}
|
||||
req := &hpcAC.GetFileListReq{Limit: 100, Path: ALGORITHM_DIR + FORWARD_SLASH + taskType, Start: 0, Order: "asc", OrderBy: "name", KeyWord: ""}
|
||||
list, err := s.aCRpc.GetFileList(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -17,18 +17,18 @@ package storeLink
|
|||
import (
|
||||
"context"
|
||||
"github.com/pkg/errors"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/common"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/service/collector"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/timeutils"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcAC"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopus"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/imagesservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/modelartsservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/modelarts"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopus"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopusclient"
|
||||
"gorm.io/gorm"
|
||||
"strings"
|
||||
"sync"
|
||||
|
@ -370,6 +370,9 @@ func ConvertType(in interface{}, out interface{}, participant *models.StorelinkC
|
|||
|
||||
resp.TaskId = inresp.Payload.JobId
|
||||
|
||||
return resp, nil
|
||||
case *types.ScheduleResp:
|
||||
resp := (interface{})(out).(*types.ScheduleResp)
|
||||
return resp, nil
|
||||
}
|
||||
return nil, nil
|
||||
|
@ -404,6 +407,9 @@ func ConvertType(in interface{}, out interface{}, participant *models.StorelinkC
|
|||
resp.ErrorMsg = inresp.Msg
|
||||
}
|
||||
return resp, nil
|
||||
case *types.ScheduleResp:
|
||||
resp := (interface{})(out).(*types.ScheduleResp)
|
||||
return resp, nil
|
||||
}
|
||||
return nil, nil
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"github.com/robfig/cron/v3"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"github.com/zeromicro/go-zero/zrpc"
|
||||
"gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/config"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/scheduler/database"
|
||||
|
@ -29,13 +30,12 @@ import (
|
|||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/rpc/client/participantservice"
|
||||
"gitlink.org.cn/JointCloud/pcm-kubernetes/kubernetesclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
||||
"gitlink.org.cn/JointCloud/pcm-openstack/openstackclient"
|
||||
slurmClient "gitlink.org.cn/JointCloud/pcm-slurm/slurmclient"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-ac/hpcacclient"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-ceph/cephclient"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/imagesservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-modelarts/client/modelartsservice"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-octopus/octopusclient"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
|
@ -120,8 +120,8 @@ func NewServiceContext(c config.Config) *ServiceContext {
|
|||
aCRpc := hpcacclient.NewHpcAC(zrpc.MustNewClient(c.ACRpcConf))
|
||||
modelArtsRpc := modelartsservice.NewModelArtsService(zrpc.MustNewClient(c.ModelArtsRpcConf))
|
||||
modelArtsImgRpc := imagesservice.NewImagesService(zrpc.MustNewClient(c.ModelArtsImgRpcConf))
|
||||
aiExecutor, resourceCollector := service.InitAiClusterMap(octopusRpc, modelArtsRpc, modelArtsImgRpc, aCRpc)
|
||||
storage := &database.AiStorage{DbEngin: dbEngin}
|
||||
aiExecutor, resourceCollector := service.InitAiClusterMap(octopusRpc, modelArtsRpc, modelArtsImgRpc, aCRpc, storage)
|
||||
scheduler := scheduler.NewSchdlr(resourceCollector, storage, aiExecutor)
|
||||
|
||||
return &ServiceContext{
|
||||
|
|
|
@ -32,7 +32,6 @@ type RemoteResp struct {
|
|||
}
|
||||
|
||||
type ClustersLoadReq struct {
|
||||
AdapterId int64 `form:"adapterId"`
|
||||
ClusterName string `form:"clusterName"`
|
||||
}
|
||||
|
||||
|
@ -138,6 +137,8 @@ type CommitVmTaskReq struct {
|
|||
MatchLabels map[string]string `json:"matchLabels,optional"`
|
||||
Servers []ServerCommit `json:"servers,optional"`
|
||||
Platform string `json:"platform,optional"`
|
||||
AdapterId string `json:"adapterId,optional"`
|
||||
ClusterType string `json:"clusterType,optional"`
|
||||
}
|
||||
|
||||
type ServerCommit struct {
|
||||
|
@ -167,7 +168,9 @@ type Block_device_mapping_v2Commit struct {
|
|||
}
|
||||
|
||||
type CommitVmTaskResp struct {
|
||||
VmTask []VmTask `json:"vmTask" copier:"VmTask"`
|
||||
TaskId int64 `json:"taskId"`
|
||||
Code int32 `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
type VmTask struct {
|
||||
|
@ -808,7 +811,6 @@ type DictItemInfo struct {
|
|||
ItemValue string `json:"itemValue,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
SortOrder string `json:"sortOrder,omitempty"`
|
||||
Type string `json:"type,omitempty" db:"type"`
|
||||
ParentId string `json:"parentId,omitempty"`
|
||||
Status string `json:"status,omitempty" db:"status"`
|
||||
CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"`
|
||||
|
@ -834,7 +836,6 @@ type DictItemEditReq struct {
|
|||
ItemValue string `json:"itemValue,optional"`
|
||||
Description string `json:"description,optional"`
|
||||
SortOrder string `json:"sortOrder,optional"`
|
||||
Type string `json:"type,optional"`
|
||||
ParentId string `json:"parentId,optional"`
|
||||
Status string `json:"status,optional"`
|
||||
}
|
||||
|
@ -846,7 +847,6 @@ type DictItemResp struct {
|
|||
ItemValue string `json:"itemValue,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
SortOrder string `json:"sortOrder,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
ParentId string `json:"parentId,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
CreateTime string `json:"createTime,omitempty" db:"created_time" gorm:"autoCreateTime"`
|
||||
|
@ -2712,6 +2712,23 @@ type GetVolumeLimitsResp struct {
|
|||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
|
||||
type OpenstackOverviewReq struct {
|
||||
Platform string `form:"platform,optional"`
|
||||
}
|
||||
|
||||
type OpenstackOverviewResp struct {
|
||||
Data OpenstackOverview `json:"data"`
|
||||
Code int32 `json:"code,omitempty"`
|
||||
Msg string `json:"msg,omitempty"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
|
||||
type OpenstackOverview struct {
|
||||
Max_total_cores int32 `json:"max_total_cores"`
|
||||
Max_total_ram_size int32 `json:"max_total_ram_size"`
|
||||
Max_total_volumes int32 `json:"max_total_volumes"`
|
||||
}
|
||||
|
||||
type ListServersReq struct {
|
||||
Limit int32 `form:"limit,optional"`
|
||||
OffSet int32 `form:"offSet,optional"`
|
||||
|
@ -2755,18 +2772,20 @@ type ListServersDetailedResp struct {
|
|||
}
|
||||
|
||||
type ServersDetailed struct {
|
||||
Id string `json:"Id" copier:"Id"`
|
||||
Name string `json:"Name" copier:"Name"`
|
||||
OSTaskState uint32 `json:"OSTaskState" copier:"OSTaskState"`
|
||||
Status string `json:"Status" copier:"Status"`
|
||||
VmState string `json:"VmState" copier:"VmState"`
|
||||
OS_EXT_SRV_ATTR_Instance_Name string `json:"OS_EXT_SRV_ATTR_Instance_Name" copier:"OS_EXT_SRV_ATTR_Instance_Name"`
|
||||
Created string `json:"Created" copier:"Created"`
|
||||
HostId string `json:"HostId" copier:"HostId"`
|
||||
Ip string `json:"Ip" copier:"Ip"`
|
||||
Image string `json:"Image" copier:"Image"`
|
||||
Updated string `json:"Updated" copier:"Updated"`
|
||||
Flavor string `json:"Flavor" copier:"Flavor"`
|
||||
Id string `json:"id" copier:"Id"`
|
||||
Name string `json:"name" copier:"Name"`
|
||||
OSTaskState uint32 `json:"os_task_state" copier:"OSTaskState"`
|
||||
Status string `json:"status" copier:"Status"`
|
||||
VmState string `json:"vm_state" copier:"VmState"`
|
||||
OS_EXT_SRV_ATTR_Instance_Name string `json:"os_ext_srv_attr_instance_name" copier:"OS_EXT_SRV_ATTR_Instance_Name"`
|
||||
Created string `json:"created" copier:"Created"`
|
||||
HostId string `json:"hostId" copier:"HostId"`
|
||||
Ip string `json:"ip" copier:"Ip"`
|
||||
Image string `json:"image" copier:"Image"`
|
||||
Updated string `json:"updated" copier:"Updated"`
|
||||
Flavor string `json:"flavor" copier:"Flavor"`
|
||||
Key_name string `json:"key_name" copier:"Key_name"`
|
||||
Survival_time int32 `json:"survival_time" copier:"Survival_time"`
|
||||
}
|
||||
|
||||
type GetServersDetailedByIdReq struct {
|
||||
|
@ -3003,6 +3022,44 @@ type ServerResp struct {
|
|||
AdminPass string `json:"adminPass" copier:"AdminPass"`
|
||||
}
|
||||
|
||||
type CreateMulServerReq struct {
|
||||
CreateMulServer []CreateMulServer `json:"createMulServer,optional"`
|
||||
}
|
||||
|
||||
type CreateMulServer struct {
|
||||
Platform string `json:"platform,optional"`
|
||||
CrServer MulCrServer `json:"crserver" copier:"CrServer"`
|
||||
}
|
||||
|
||||
type MulCrServer struct {
|
||||
Server MulServer `json:"server" copier:"Server"`
|
||||
}
|
||||
|
||||
type MulServer struct {
|
||||
AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
|
||||
Name string `json:"name,optional" copier:"Name"`
|
||||
FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"`
|
||||
Description string `json:"description,optional" copier:"Description"`
|
||||
ImageRef string `json:"imageRef,optional" copier:"ImageRef"`
|
||||
Networks []CreNetwork `json:"networks,optional" copier:"Networks"`
|
||||
MinCount int32 `json:"min_count,optional" copier:"MinCount"`
|
||||
}
|
||||
|
||||
type CreateMulServerResp struct {
|
||||
Server []MulServerResp `json:"server" copier:"Server"`
|
||||
Code int32 `json:"code,omitempty"`
|
||||
Msg string `json:"msg,omitempty"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty"`
|
||||
}
|
||||
|
||||
type MulServerResp struct {
|
||||
Id string `json:"id" copier:"Id"`
|
||||
Links []Links `json:"links" copier:"Links"`
|
||||
OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"`
|
||||
SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"`
|
||||
AdminPass string `json:"adminPass" copier:"AdminPass"`
|
||||
}
|
||||
|
||||
type RebuildServerReq struct {
|
||||
ServerId string `json:"server_id" copier:"ServerId"`
|
||||
Platform string `form:"platform,optional"`
|
||||
|
@ -5246,8 +5303,14 @@ type ScheduleReq struct {
|
|||
}
|
||||
|
||||
type ScheduleResp struct {
|
||||
Success bool `json:"success"`
|
||||
ErrorMsg string `json:"errorMsg"`
|
||||
Results []*ScheduleResult `json:"results"`
|
||||
}
|
||||
|
||||
type ScheduleResult struct {
|
||||
ClusterId string `json:"clusterId"`
|
||||
TaskId string `json:"taskId"`
|
||||
Replica int32 `json:"replica"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
type AiOption struct {
|
||||
|
@ -5282,9 +5345,9 @@ type AiStrategyResp struct {
|
|||
}
|
||||
|
||||
type AiAlgorithmsReq struct {
|
||||
ResourceType string `json:"resourceType"`
|
||||
TaskType string `json:"taskType"`
|
||||
Dataset string `json:"dataset"`
|
||||
ResourceType string `path:"resourceType"`
|
||||
TaskType string `path:"taskType"`
|
||||
Dataset string `path:"dataset"`
|
||||
}
|
||||
|
||||
type AiAlgorithmsResp struct {
|
||||
|
@ -5409,12 +5472,37 @@ type PushResourceInfoReq struct {
|
|||
}
|
||||
|
||||
type CreateAlertRuleReq struct {
|
||||
ClusterName string `json:"clusterName"`
|
||||
Namespace string `json:"namespace"`
|
||||
Name string `json:"name"`
|
||||
PromQL string `json:"PromQL"`
|
||||
Duration string `json:"duration"`
|
||||
Labels map[string]string `json:"labels"`
|
||||
Annotations map[string]string `json:"annotations"`
|
||||
AlertLevel string `json:"alertLevel"`
|
||||
CLusterId int64 `json:"clusterId"`
|
||||
ClusterName string `json:"clusterName"`
|
||||
Name string `json:"name"`
|
||||
PromQL string `json:"promQL"`
|
||||
Duration string `json:"duration"`
|
||||
Annotations string `json:"annotations,optional"`
|
||||
AlertLevel string `json:"alertLevel"`
|
||||
AlertType string `json:"alertType"`
|
||||
}
|
||||
|
||||
type AlertRulesResp struct {
|
||||
AlertRules []AlertRule `json:"alertRules"`
|
||||
}
|
||||
|
||||
type AlertRule struct {
|
||||
Id int64 `json:"id"`
|
||||
ClusterName string `json:"clusterName"`
|
||||
Name string `json:"name"`
|
||||
PromQL string `json:"promQL"`
|
||||
Duration string `json:"duration"`
|
||||
Annotations string `json:"annotations"`
|
||||
AlertLevel string `json:"alertLevel"`
|
||||
}
|
||||
|
||||
type NodesLoadTopReq struct {
|
||||
ClusterName string `form:"clusterName"`
|
||||
Metrics string `form:"metrics"`
|
||||
}
|
||||
|
||||
type NodesLoadTopResp struct {
|
||||
Code int `json:"code"`
|
||||
Data interface{} `json:"data"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
|
55
go.mod
55
go.mod
|
@ -1,8 +1,6 @@
|
|||
module gitlink.org.cn/JointCloud/pcm-coordinator
|
||||
|
||||
go 1.22
|
||||
|
||||
toolchain go1.22.1
|
||||
go 1.21
|
||||
|
||||
require (
|
||||
github.com/JCCE-nudt/zero-contrib/zrpc/registry/nacos v0.0.0-20230419021610-13bbc83fbc3c
|
||||
|
@ -15,25 +13,25 @@ require (
|
|||
github.com/go-sql-driver/mysql v1.7.1
|
||||
github.com/jinzhu/copier v0.4.0
|
||||
github.com/json-iterator/go v1.1.12
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.4
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.5
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.2
|
||||
github.com/prometheus/alertmanager v0.27.0
|
||||
github.com/prometheus/client_golang v1.19.0
|
||||
github.com/prometheus/common v0.51.1
|
||||
github.com/prometheus/common v0.52.2
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/rs/zerolog v1.28.0
|
||||
github.com/zeromicro/go-zero v1.6.3
|
||||
gitlink.org.cn/JointCloud/pcm-ac v0.0.0-20240407112649-e479e74b58c8
|
||||
gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d
|
||||
gitlink.org.cn/JointCloud/pcm-octopus v0.0.0-20240407105727-38e45468eaa8
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240403033338-e7edabad4203
|
||||
gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5
|
||||
gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20240301085553-f6ad88fa357a
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20231101085149-724c7c4cc090
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20240222124813-e275cfa342f4
|
||||
go.opentelemetry.io/otel/trace v1.24.0
|
||||
go.opentelemetry.io/otel/trace v1.25.0
|
||||
gonum.org/v1/gonum v0.11.0
|
||||
google.golang.org/grpc v1.62.1
|
||||
google.golang.org/grpc v1.63.0
|
||||
google.golang.org/protobuf v1.33.0
|
||||
gorm.io/datatypes v1.2.0
|
||||
gorm.io/driver/mysql v1.5.2
|
||||
|
@ -58,7 +56,7 @@ require (
|
|||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/buger/jsonparser v1.1.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/coreos/go-semver v0.3.1 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
|
@ -124,7 +122,7 @@ require (
|
|||
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
||||
github.com/openzipkin/zipkin-go v0.4.2 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.0 // indirect
|
||||
github.com/prometheus/client_model v0.6.0 // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common/sigv4 v0.1.0 // indirect
|
||||
github.com/prometheus/exporter-toolkit v0.11.0 // indirect
|
||||
github.com/prometheus/procfs v0.13.0 // indirect
|
||||
|
@ -139,33 +137,32 @@ require (
|
|||
go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.5.13 // indirect
|
||||
go.mongodb.org/mongo-driver v1.13.1 // indirect
|
||||
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.25.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.25.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
|
||||
go.uber.org/automaxprocs v1.5.3 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/crypto v0.21.0 // indirect
|
||||
golang.org/x/crypto v0.22.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect
|
||||
golang.org/x/mod v0.15.0 // indirect
|
||||
golang.org/x/net v0.22.0 // indirect
|
||||
golang.org/x/oauth2 v0.18.0 // indirect
|
||||
golang.org/x/net v0.24.0 // indirect
|
||||
golang.org/x/oauth2 v0.19.0 // indirect
|
||||
golang.org/x/sync v0.6.0 // indirect
|
||||
golang.org/x/sys v0.18.0 // indirect
|
||||
golang.org/x/term v0.18.0 // indirect
|
||||
golang.org/x/sys v0.19.0 // indirect
|
||||
golang.org/x/term v0.19.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
golang.org/x/tools v0.18.0 // indirect
|
||||
google.golang.org/appengine v1.6.8 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
|
@ -173,7 +170,7 @@ require (
|
|||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/api v0.29.3 // indirect
|
||||
k8s.io/klog/v2 v2.120.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20240322212309-b815d8309940 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20240403164606-bc84c2ddaf99 // indirect
|
||||
k8s.io/utils v0.0.0-20240310230437-4693a0247e57 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
|
||||
|
|
97
go.sum
97
go.sum
|
@ -467,8 +467,9 @@ github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91
|
|||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
|
@ -889,8 +890,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+
|
|||
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.1/go.mod h1:ys/1adWeKXXzbNWfRNbaFlX/t6HVLWdpsNDvmoWTw0g=
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.4 h1:t3Eoz3ySvKrm7p2WMfWYciCF87UEdLac64CZKFlC0BA=
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.4/go.mod h1:Q9qY/WK+kxTKK7cNoxMkdkKcD7BLBgTmwQ1jmThgGK8=
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.5 h1:r0wwT7PayEjvEHzWXwr1ROi/JSqzujM4w+1L5ikThzQ=
|
||||
github.com/nacos-group/nacos-sdk-go/v2 v2.2.5/go.mod h1:OObBon0prVJVPoIbSZxpEkFiBfL0d1LcBtuAMiNn+8c=
|
||||
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
|
@ -972,8 +973,8 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:
|
|||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
|
||||
github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
|
||||
github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
|
||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
|
@ -981,8 +982,8 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9
|
|||
github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
||||
github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
||||
github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA=
|
||||
github.com/prometheus/common v0.51.1 h1:eIjN50Bwglz6a/c3hAgSMcofL3nD+nFQkV6Dd4DsQCw=
|
||||
github.com/prometheus/common v0.51.1/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q=
|
||||
github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck=
|
||||
github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q=
|
||||
github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4=
|
||||
github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI=
|
||||
github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g=
|
||||
|
@ -1077,20 +1078,20 @@ github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7
|
|||
github.com/zeromicro/go-zero v1.5.1/go.mod h1:bGYm4XWsGN9GhDsO2O2BngpVoWjf3Eog2a5hUOMhlXs=
|
||||
github.com/zeromicro/go-zero v1.6.3 h1:OL0NnHD5LdRNDolfcK9vUkJt7K8TcBE3RkzfM8poOVw=
|
||||
github.com/zeromicro/go-zero v1.6.3/go.mod h1:XZL435ZxVi9MSXXtw2MRQhHgx6OoX3++MRMOE9xU70c=
|
||||
gitlink.org.cn/JointCloud/pcm-ac v0.0.0-20240407112649-e479e74b58c8 h1:cX6U2gUcp/sIP3TKFv4q/1O8gp10q+M3k5Ql15yaEMI=
|
||||
gitlink.org.cn/JointCloud/pcm-ac v0.0.0-20240407112649-e479e74b58c8/go.mod h1:w3Nb5TNymCItQ7K3x4Q0JLuoq9OerwAzAWT2zsPE9Xo=
|
||||
gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c h1:2Wl/hvaSFjh6fmCSIQhjkr9llMRREQeqcXNLZ/HPY18=
|
||||
gitlink.org.cn/JointCloud/pcm-kubernetes v0.0.0-20240301071143-347480abff2c/go.mod h1:lSRfGs+PxFvw7CcndHWRd6UlLlGrZn0b0hp5cfaMNGw=
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d h1:ZX/Kg8eKdaAfDsTd+Y+TrJsUvxp/DpbWUp+Ij4CtR+s=
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240401022404-2f1425735f0d/go.mod h1:i2rrbMQ+Fve345BY9Heh4MUqVTAimZQElQhzzRee5B8=
|
||||
gitlink.org.cn/JointCloud/pcm-octopus v0.0.0-20240407105727-38e45468eaa8 h1:jdwYydJxYPlfIS9yZvnNX1w08aJGYWq5ADD5EXLW3+Q=
|
||||
gitlink.org.cn/JointCloud/pcm-octopus v0.0.0-20240407105727-38e45468eaa8/go.mod h1:QOD5+/l2D+AYBjF2h5T0mdJyfGAmF78QmeKdbBXbjLQ=
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240403033338-e7edabad4203 h1:s6PsZ1+bev294IWdZRlV7mnOwI1+UzFcldVW/BqhQzI=
|
||||
gitlink.org.cn/JointCloud/pcm-openstack v0.0.0-20240403033338-e7edabad4203/go.mod h1:i2rrbMQ+Fve345BY9Heh4MUqVTAimZQElQhzzRee5B8=
|
||||
gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5 h1:+/5vnzkJBfMRnya1NrhOzlroUtRa5ePiYbPKlHLoLV0=
|
||||
gitlink.org.cn/JointCloud/pcm-slurm v0.0.0-20240301080743-8b94bbaf57f5/go.mod h1:97AlUXN13g9UN3+9/DzCHpeoU5sbdyv0IQuTEHNexzQ=
|
||||
gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20240301085553-f6ad88fa357a h1:fY1KmyZ6O7wVBvgt2HB+C9e1DncJdk/Wkv8m5Qz7abw=
|
||||
gitlink.org.cn/jcce-pcm/pcm-ac v0.0.0-20240301085553-f6ad88fa357a/go.mod h1:oMaWf5sEDFKTfCbIlT6/7IFI3f6PsuiRnWzzQruSF5Q=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d h1:DHjl/rLuH2gKYtY0MKMGNQDHFT12APg25RlMUQo+tHk=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-ceph v0.0.0-20230904090036-24fc730ec87d/go.mod h1:r/KLzUpupCV5jdxSfgDhc2pVjP0fBi3VhAWRttsBn30=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20231101085149-724c7c4cc090 h1:jztlHo72bcWM1jUwvG3Hfk2K+AJL0RvlsdIqlktH/MI=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-modelarts v0.0.0-20231101085149-724c7c4cc090/go.mod h1:pisJKAI8FRFFUcBaH3Gob+ENXWRM97rpuYmv9s1raag=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20240222124813-e275cfa342f4 h1:NrxKAZ5uAzshB9EHcPw+XTOTzpxb5HslNRMYBrFC1Qo=
|
||||
gitlink.org.cn/jcce-pcm/pcm-participant-octopus v0.0.0-20240222124813-e275cfa342f4/go.mod h1:uyvpVqG1jHDXX+ubXI0RBwnWXzVykD/mliqGQIDvRoo=
|
||||
go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA=
|
||||
go.etcd.io/etcd/api/v3 v3.5.13 h1:8WXU2/NBge6AUF1K1gOexB6e07NgsN1hXK0rSTtgSp4=
|
||||
go.etcd.io/etcd/api/v3 v3.5.13/go.mod h1:gBqlqkcMMZMVTMm4NDZloEVJzxQOQIls8splbqBDa0c=
|
||||
|
@ -1112,34 +1113,34 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
|||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||
go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
|
||||
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
|
||||
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||
go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k=
|
||||
go.opentelemetry.io/otel v1.25.0/go.mod h1:Wa2ds5NOXEMkCmUou1WA7ZBfLTHWIsp034OVD7AO+Vg=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.14.0/go.mod h1:4Ay9kk5vELRrbg5z4cpP9EtmQRFap2Wb0woPG4lujZA=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.25.0 h1:dT33yIHtmsqpixFsSQPwNeY5drM9wTcoL8h0FWF4oGM=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.25.0/go.mod h1:h95q0LBGh7hlAC08X2DhSeyIG02YQ0UyioTCVAqRPmc=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.25.0 h1:vOL89uRfOCCNIjkisd0r7SEdJF3ZJFyCNY34fdZs8eU=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.25.0/go.mod h1:8GlBGcDk8KKi7n+2S4BT/CPZQYH3erLu0/k64r1MYgo=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0/go.mod h1:+N7zNjIJv4K+DeX67XXET0P+eIciESgaFDBqh+ZJFS4=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM=
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8=
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0 h1:Mbi5PKN7u322woPa85d7ebZ+SOvEoPvoiBu+ryHWgfA=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0/go.mod h1:e7ciERRhZaOZXVjx5MiL8TK5+Xv7G5Gv5PA2ZDEJdL8=
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.25.0 h1:0vZZdECYzhTt9MKQZ5qQ0V+J3MFu4MQaQ3COfugF+FQ=
|
||||
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.25.0/go.mod h1:e7iXx3HjaSSBXfy9ykVUlupS2Vp7LBIBuT21ousM2Hk=
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.14.0/go.mod h1:RcjvOAcvhzcufQP8aHmzRw1gE9g/VEZufDdo2w+s4sk=
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.24.0 h1:3evrL5poBuh1KF51D9gO/S+N/1msnm4DaBqs/rpXUqY=
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.24.0/go.mod h1:0EHgD8R0+8yRhUYJOGR8Hfg2dpiJQxDOszd5smVO9wM=
|
||||
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
|
||||
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.25.0 h1:iLzdsOsstvim/54ymA2BhEN4+1NbsvwGvOhSkQy2TaY=
|
||||
go.opentelemetry.io/otel/exporters/zipkin v1.25.0/go.mod h1:3QXxNo6ace1QZX6pSHEzGKKESVdjQxXR03FcIH7dNGs=
|
||||
go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA=
|
||||
go.opentelemetry.io/otel/metric v1.25.0/go.mod h1:rkDLUSd2lC5lq2dFNrX9LGAbINP5B7WBkC78RXCpH5s=
|
||||
go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
|
||||
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
|
||||
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
|
||||
go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo=
|
||||
go.opentelemetry.io/otel/sdk v1.25.0/go.mod h1:oFgzCM2zdsxKzz6zwpTZYLLQsFwc+K0daArPdIhuxkw=
|
||||
go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
|
||||
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
|
||||
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||
go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM=
|
||||
go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I=
|
||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
|
||||
go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
|
||||
|
@ -1184,8 +1185,9 @@ golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2/go.mod h1:IxCIyHEi3zRg3s0
|
|||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
|
||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
|
||||
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
|
@ -1303,8 +1305,9 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
|||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
|
||||
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
||||
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
|
||||
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
|
@ -1332,8 +1335,8 @@ golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri
|
|||
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
|
||||
golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk=
|
||||
golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=
|
||||
golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
|
||||
golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
|
||||
golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
|
||||
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -1452,8 +1455,9 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
|
@ -1466,8 +1470,9 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
|||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
|
||||
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
||||
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
|
||||
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
|
@ -1628,8 +1633,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww
|
|||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
|
@ -1745,10 +1748,10 @@ google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614G
|
|||
google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
|
||||
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
|
||||
google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa h1:Jt1XW5PaLXF1/ePZrznsh/aAUvI7Adfc3LY1dAKlzRs=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:K4kfzHtI0kqWA79gecJarFtDn/Mls+GxQcg3Zox91Ac=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa h1:RBgMaUMP+6soRkik4VoN8ojR2nex2TqZwjSSogic+eo=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240325203815-454cdb8f5daa/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
|
@ -1789,8 +1792,8 @@ google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD
|
|||
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
|
||||
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
|
||||
google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
|
||||
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
|
||||
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
|
||||
google.golang.org/grpc v1.63.0 h1:WjKe+dnvABXyPJMD7KDNLxtoGk5tgk+YFWN6cBWjZE8=
|
||||
google.golang.org/grpc v1.63.0/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
|
@ -1883,8 +1886,8 @@ k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
|||
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
|
||||
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
|
||||
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
|
||||
k8s.io/kube-openapi v0.0.0-20240322212309-b815d8309940 h1:qVoMaQV5t62UUvHe16Q3eb2c5HPzLHYzsi0Tu/xLndo=
|
||||
k8s.io/kube-openapi v0.0.0-20240322212309-b815d8309940/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
|
||||
k8s.io/kube-openapi v0.0.0-20240403164606-bc84c2ddaf99 h1:w6nThEmGo9zcL+xH1Tu6pjxJ3K1jXFW+V0u4peqN8ks=
|
||||
k8s.io/kube-openapi v0.0.0-20240403164606-bc84c2ddaf99/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
|
||||
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
k8s.io/utils v0.0.0-20230115233650-391b47cb4029/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package models
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type AlertRule struct {
|
||||
Id int64 `db:"id"` // id
|
||||
ClusterId int64 `db:"cluster_id"`
|
||||
Name string `db:"name"` // 节点名称
|
||||
AlertType string `db:"alert_type"` // 节点类型 int64 `db:"cpu_total"` // cpu核数
|
||||
PromQL string `db:"prom_ql"`
|
||||
Duration string `db:"duration"`
|
||||
AlertLevel string `db:"alert_level"`
|
||||
Annotations string `db:"annotations"`
|
||||
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
|
||||
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
|
||||
}
|
|
@ -19,32 +19,31 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
StatefulSet = "StatefulSet"
|
||||
DaemonSet = "DaemonSet"
|
||||
Deployment = "Deployment"
|
||||
)
|
||||
|
||||
var promQLTemplates = map[string]string{
|
||||
|
||||
"cluster_cpu_utilisation": "cluster_cpu_utilisation{$1}",
|
||||
"cluster_memory_utilisation": "cluster_memory_utilisation{$1}",
|
||||
"cluster_disk_utilisation": "cluster_disk_utilisation{$1}",
|
||||
"cluster_cpu_total": "cluster_cpu_total{$1}",
|
||||
"cluster_memory_total": "cluster_memory_total{$1}",
|
||||
"cluster_disk_total": "cluster_disk_total{$1}",
|
||||
"cluster_cpu_avail": "cluster_cpu_total{$1}",
|
||||
"cluster_memory_avail": "cluster_memory_total{$1}",
|
||||
"cluster_disk_avail": "cluster_disk_total{$1}",
|
||||
"center_cpu_utilisation": "(sum by (adapter_id)(cluster_cpu_total{$1})-sum by (adapter_id)(cluster_cpu_avail{$1}))/sum by (adapter_id)(cluster_cpu_total{$1})",
|
||||
"center_memory_utilisation": "(sum by (adapter_id)(cluster_memory_total{$1})-sum by (adapter_id)(cluster_memory_avail{$1}))/sum by (adapter_id)(cluster_memory_total{$1})",
|
||||
"center_disk_utilisation": "(sum by (adapter_id)(cluster_disk_total{$1})-sum by (adapter_id)(cluster_disk_avail{$1}))/sum by (adapter_id)(cluster_disk_total{$1})",
|
||||
"center_top3": "topk(3,((sum by (adapter_id)(cluster_cpu_total)-sum by (adapter_id)(cluster_cpu_avail))/sum by (adapter_id)(cluster_cpu_total) + (sum by (adapter_id)(cluster_memory_total) - sum by (adapter_id)(cluster_memory_avail))/sum by (adapter_id)(cluster_memory_total) + (sum by (adapter_id)(cluster_disk_total)-sum by (adapter_id)(cluster_disk_avail))/sum by (adapter_id)(cluster_disk_total))/3)",
|
||||
"cluster_cpu_utilisation": "cluster_cpu_utilisation{$1}",
|
||||
"cluster_memory_utilisation": "cluster_memory_utilisation{$1}",
|
||||
"cluster_disk_utilisation": "cluster_disk_utilisation{$1}",
|
||||
"cluster_cpu_total": "cluster_cpu_total{$1}",
|
||||
"cluster_memory_total": "cluster_memory_total{$1}",
|
||||
"cluster_disk_total": "cluster_disk_total{$1}",
|
||||
"cluster_cpu_avail": "cluster_cpu_total{$1}",
|
||||
"cluster_memory_avail": "cluster_memory_total{$1}",
|
||||
"cluster_disk_avail": "cluster_disk_total{$1}",
|
||||
|
||||
// center
|
||||
"center_cpu_utilisation": "(sum by (adapter_id)(cluster_cpu_total{$1})-sum by (adapter_id)(cluster_cpu_avail{$1}))/sum by (adapter_id)(cluster_cpu_total{$1})",
|
||||
"center_memory_utilisation": "(sum by (adapter_id)(cluster_memory_total{$1})-sum by (adapter_id)(cluster_memory_avail{$1}))/sum by (adapter_id)(cluster_memory_total{$1})",
|
||||
"center_disk_utilisation": "(sum by (adapter_id)(cluster_disk_total{$1})-sum by (adapter_id)(cluster_disk_avail{$1}))/sum by (adapter_id)(cluster_disk_total{$1})",
|
||||
"center_top3": "topk(3,((sum by (adapter_id)(cluster_cpu_total)-sum by (adapter_id)(cluster_cpu_avail))/sum by (adapter_id)(cluster_cpu_total) + (sum by (adapter_id)(cluster_memory_total) - sum by (adapter_id)(cluster_memory_avail))/sum by (adapter_id)(cluster_memory_total) + (sum by (adapter_id)(cluster_disk_total)-sum by (adapter_id)(cluster_disk_avail))/sum by (adapter_id)(cluster_disk_total))/3)",
|
||||
|
||||
// namespace
|
||||
"namespace_cpu_usage": `round(namespace:container_cpu_usage_seconds_total:sum_rate{namespace!="", $1}, 0.001)`,
|
||||
"namespace_memory_usage": `namespace:container_memory_usage_bytes:sum{namespace!="", $1}`,
|
||||
"namespace_memory_usage_wo_cache": `namespace:container_memory_usage_bytes_wo_cache:sum{namespace!="", $1}`,
|
||||
"controller_cpu_usage_rate": `sum( node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{$1}) by (workload)/sum( kube_pod_container_resource_limits{job="kube-state-metrics", resource="cpu"}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{ }) by (workload)`,
|
||||
"controller_memory_usage_rate": `sum( container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", container!="", image!=""} * on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{$1}) by (workload)/sum( kube_pod_container_resource_limits{job="kube-state-metrics", resource="memory"}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{ }) by (workload)`,
|
||||
// controller
|
||||
"controller_cpu_usage_rate": `sum( node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{$1}) by (workload)/sum( kube_pod_container_resource_limits{job="kube-state-metrics", resource="cpu"}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{ }) by (workload)`,
|
||||
"controller_memory_usage_rate": `sum( container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", container!="", image!=""} * on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{$1}) by (workload)/sum( kube_pod_container_resource_limits{job="kube-state-metrics", resource="memory"}* on(namespace,pod) group_left(workload) namespace_workload_pod:kube_pod_owner:relabel{ }) by (workload)`,
|
||||
// pod
|
||||
"pod_cpu_usage": `round(sum by (namespace, pod) (irate(container_cpu_usage_seconds_total{job="kubelet", pod!="", image!=""}[5m])) * on (namespace, pod) group_left(owner_kind,owner_name) kube_pod_owner{$1} * on (namespace, pod) group_left(node) kube_pod_info{$2}, 0.001)`,
|
||||
"pod_cpu_usage_rate": `sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{ $1}) by (pod) / sum(kube_pod_container_resource_limits{ $1,unit="core"}) by (pod)`,
|
||||
|
|
Loading…
Reference in New Issue