Merge remote-tracking branch 'origin/master' into master_wq_infer
Former-commit-id: ca2cdc6a0b4c5437607aa137acd50457c92ffa0e
This commit is contained in:
commit
c2f6d668ff
|
@ -0,0 +1,46 @@
|
||||||
|
version: 2
|
||||||
|
name: api-ci
|
||||||
|
description: ""
|
||||||
|
global:
|
||||||
|
concurrent: 1
|
||||||
|
cache:
|
||||||
|
- git_cache
|
||||||
|
- docker_cache
|
||||||
|
workflow:
|
||||||
|
- ref: start
|
||||||
|
name: 开始
|
||||||
|
task: start
|
||||||
|
- ref: git_clone_0
|
||||||
|
name: git clone
|
||||||
|
task: git_clone@1.2.9
|
||||||
|
input:
|
||||||
|
remote_url: '"https://gitlink.org.cn/JointCloud/pcm-coordinator.git"'
|
||||||
|
ref: '"refs/heads/master"'
|
||||||
|
commit_id: '""'
|
||||||
|
depth: 1
|
||||||
|
needs:
|
||||||
|
- start
|
||||||
|
- ref: docker_image_build_0
|
||||||
|
name: docker镜像构建
|
||||||
|
task: docker_image_build@1.6.0
|
||||||
|
input:
|
||||||
|
docker_username: ((dev.docker_user))
|
||||||
|
docker_password: ((dev.docker_password))
|
||||||
|
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-core-api"'
|
||||||
|
image_tag: '"latest"'
|
||||||
|
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
||||||
|
docker_file: git_clone_0.git_path + '/api/Dockerfile'
|
||||||
|
docker_build_path: git_clone_0.git_path
|
||||||
|
workspace: '"."'
|
||||||
|
image_clean: true
|
||||||
|
image_push: true
|
||||||
|
build_args: '""'
|
||||||
|
no_cache: true
|
||||||
|
needs:
|
||||||
|
- git_clone_0
|
||||||
|
- ref: end
|
||||||
|
name: 结束
|
||||||
|
task: end
|
||||||
|
needs:
|
||||||
|
- docker_image_build_0
|
||||||
|
|
|
@ -51,8 +51,8 @@ workflow:
|
||||||
input:
|
input:
|
||||||
docker_username: ((dev.docker_user))
|
docker_username: ((dev.docker_user))
|
||||||
docker_password: ((dev.docker_password))
|
docker_password: ((dev.docker_password))
|
||||||
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-coordinator-api"'
|
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-core-api"'
|
||||||
image_tag: git_clone_0.commit_time
|
image_tag: '"latest"'
|
||||||
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
||||||
docker_file: git_clone_0.git_path + '/api/Dockerfile'
|
docker_file: git_clone_0.git_path + '/api/Dockerfile'
|
||||||
docker_build_path: git_clone_0.git_path
|
docker_build_path: git_clone_0.git_path
|
||||||
|
@ -60,31 +60,19 @@ workflow:
|
||||||
image_clean: true
|
image_clean: true
|
||||||
image_push: true
|
image_push: true
|
||||||
build_args: '""'
|
build_args: '""'
|
||||||
|
no_cache: true
|
||||||
needs:
|
needs:
|
||||||
- shell_0
|
- shell_0
|
||||||
- ref: end
|
- ref: end
|
||||||
name: 结束
|
name: 结束
|
||||||
task: end
|
task: end
|
||||||
needs:
|
|
||||||
- kubectl_deploy_0
|
|
||||||
- ref: kubectl_deploy_0
|
|
||||||
name: kubectl部署资源
|
|
||||||
task: kubectl_deploy@1.1.0
|
|
||||||
input:
|
|
||||||
command: '"apply"'
|
|
||||||
resource_file_path: git_clone_0.git_path + '/api'
|
|
||||||
certificate_authority_data: ((dev.k8s_cad))
|
|
||||||
server: '"https://119.45.100.73:6443"'
|
|
||||||
client_certificate_data: ((dev.k8s_ccd))
|
|
||||||
client_key_data: ((dev.k8s_ckd))
|
|
||||||
hosts: '""'
|
|
||||||
needs:
|
needs:
|
||||||
- docker_image_build_0
|
- docker_image_build_0
|
||||||
- ref: shell_0
|
- ref: shell_0
|
||||||
name: shell
|
name: shell
|
||||||
image: docker.jianmuhub.com/library/debian:buster-slim
|
image: docker.jianmuhub.com/library/debian:buster-slim
|
||||||
env:
|
env:
|
||||||
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-coordinator-api"'
|
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-core-api"'
|
||||||
IMAGE_TAG: git_clone_0.commit_time
|
IMAGE_TAG: git_clone_0.commit_time
|
||||||
SECRET_NAME: global.secret_name
|
SECRET_NAME: global.secret_name
|
||||||
PROJECT_NAME: global.project_name
|
PROJECT_NAME: global.project_name
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
FROM golang:1.22.4-alpine3.20 AS builder
|
FROM registry.cn-hangzhou.aliyuncs.com/jcce-images/golang:1.22.4-alpine3.20 AS builder
|
||||||
|
|
||||||
|
LABEL stage=gobuilder
|
||||||
|
|
||||||
|
ENV CGO_ENABLED 0
|
||||||
|
ENV GOARCH amd64
|
||||||
|
ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
ADD go.mod .
|
||||||
|
ADD go.sum .
|
||||||
|
RUN go mod download
|
||||||
COPY . .
|
COPY . .
|
||||||
|
COPY api/etc/ /app/
|
||||||
RUN go env -w GO111MODULE=on \
|
|
||||||
&& go env -w GOPROXY=https://goproxy.cn,direct \
|
|
||||||
&& go env -w CGO_ENABLED=0
|
|
||||||
RUN go build -o pcm-coordinator-api /app/api/pcm.go
|
RUN go build -o pcm-coordinator-api /app/api/pcm.go
|
||||||
|
|
||||||
FROM alpine:3.20
|
|
||||||
|
|
||||||
|
FROM registry.cn-hangzhou.aliyuncs.com/jcce-images/alpine3.20
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.sjtug.sjtu.edu.cn/g' /etc/apk/repositories && \
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.sjtug.sjtu.edu.cn/g' /etc/apk/repositories && \
|
13
Makefile
13
Makefile
|
@ -1,9 +1,8 @@
|
||||||
pcm-core-api:
|
api-gen:
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o pcm-core-api api/pcm.go
|
goctl api go -api desc/pcm.api -dir . -style gozero --home ../deploy/goctl
|
||||||
|
|
||||||
pcm-core-rpc:
|
Generate-AMD64:
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o pcm-core-rpc rpc/pcmcore.go
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o pcm-coordinator-api pcm.go
|
||||||
|
|
||||||
all-build: pcm-core-rpc pcm-core-api
|
Generate-ARM64:
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GOARM=7 go build -o pcm-coordinator-api pcm.go
|
||||||
.PHONY: pcm-core-rpc pcm-core-api
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
api-gen:
|
|
||||||
goctl api go -api desc/pcm.api -dir . -style gozero --home ../deploy/goctl
|
|
||||||
|
|
||||||
Generate-AMD64:
|
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o pcm-coordinator-api pcm.go
|
|
||||||
|
|
||||||
Generate-ARM64:
|
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GOARM=7 go build -o pcm-coordinator-api pcm.go
|
|
|
@ -1,590 +0,0 @@
|
||||||
package cron
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
"github.com/zeromicro/go-zero/zrpc"
|
|
||||||
hpcacclient "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/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/JointCloud/pcm-coordinator/api/internal/svc"
|
|
||||||
"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"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-modelarts/client/imagesservice"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-modelarts/client/modelartsservice"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
|
||||||
"google.golang.org/grpc/codes"
|
|
||||||
"google.golang.org/grpc/status"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
OCTOPUS = "octopus"
|
|
||||||
MODELARTS = "modelarts"
|
|
||||||
SHUGUANGAI = "shuguangAi"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetTaskList(svc *svc.ServiceContext) ([]*types.TaskModel, error) {
|
|
||||||
limit := 10
|
|
||||||
offset := 0
|
|
||||||
var list []*types.TaskModel
|
|
||||||
db := svc.DbEngin.Model(&types.TaskModel{}).Table("task")
|
|
||||||
|
|
||||||
db = db.Where("deleted_at is null")
|
|
||||||
|
|
||||||
//count total
|
|
||||||
var total int64
|
|
||||||
err := db.Count(&total).Error
|
|
||||||
db.Limit(limit).Offset(offset)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = db.Order("created_time desc").Find(&list).Error
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return list, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateAiTaskStatus(svc *svc.ServiceContext, tasklist []*types.TaskModel) {
|
|
||||||
list := make([]*types.TaskModel, len(tasklist))
|
|
||||||
copy(list, tasklist)
|
|
||||||
for i := len(list) - 1; i >= 0; i-- {
|
|
||||||
if list[i].AdapterTypeDict != "1" || list[i].Status == constants.Succeeded || list[i].Status == constants.Failed {
|
|
||||||
list = append(list[:i], list[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(list) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
task := list[0]
|
|
||||||
for i := range list {
|
|
||||||
earliest, _ := time.Parse(constants.Layout, task.UpdatedTime)
|
|
||||||
latest, _ := time.Parse(constants.Layout, list[i].UpdatedTime)
|
|
||||||
if latest.Before(earliest) {
|
|
||||||
task = list[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var aiTaskList []*models.TaskAi
|
|
||||||
tx := svc.DbEngin.Raw("select * from task_ai where `task_id` = ? ", task.Id).Scan(&aiTaskList)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTaskList) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
for _, aitask := range aiTaskList {
|
|
||||||
t := aitask
|
|
||||||
if t.Status == constants.Completed || t.Status == constants.Failed || t.JobId == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
wg.Add(1)
|
|
||||||
go func() {
|
|
||||||
h := http.Request{}
|
|
||||||
trainingTask, err := svc.Scheduler.AiService.AiCollectorAdapterMap[strconv.FormatInt(t.AdapterId, 10)][strconv.FormatInt(t.ClusterId, 10)].GetTrainingTask(h.Context(), t.JobId)
|
|
||||||
if err != nil {
|
|
||||||
if status.Code(err) == codes.DeadlineExceeded {
|
|
||||||
msg := fmt.Sprintf("###UpdateAiTaskStatus###, AiTaskId: %v, clusterId: %v , JobId: %v, error: %v \n", t.Id, t.ClusterId, t.JobId, err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
msg := fmt.Sprintf("###UpdateAiTaskStatus###, AiTaskId: %v, clusterId: %v , JobId: %v, error: %v \n", t.Id, t.ClusterId, t.JobId, err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if trainingTask == nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
switch trainingTask.Status {
|
|
||||||
case constants.Running:
|
|
||||||
if t.Status != trainingTask.Status {
|
|
||||||
svc.Scheduler.AiStorages.AddNoticeInfo(strconv.FormatInt(t.AdapterId, 10), t.AdapterName, strconv.FormatInt(t.ClusterId, 10), t.ClusterName, t.Name, "running", "任务运行中")
|
|
||||||
t.Status = trainingTask.Status
|
|
||||||
}
|
|
||||||
case constants.Failed:
|
|
||||||
if t.Status != trainingTask.Status {
|
|
||||||
svc.Scheduler.AiStorages.AddNoticeInfo(strconv.FormatInt(t.AdapterId, 10), t.AdapterName, strconv.FormatInt(t.ClusterId, 10), t.ClusterName, t.Name, "failed", "任务失败")
|
|
||||||
t.Status = trainingTask.Status
|
|
||||||
}
|
|
||||||
case constants.Completed:
|
|
||||||
if t.Status != trainingTask.Status {
|
|
||||||
svc.Scheduler.AiStorages.AddNoticeInfo(strconv.FormatInt(t.AdapterId, 10), t.AdapterName, strconv.FormatInt(t.ClusterId, 10), t.ClusterName, t.Name, "completed", "任务完成")
|
|
||||||
t.Status = trainingTask.Status
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
if t.Status != trainingTask.Status {
|
|
||||||
svc.Scheduler.AiStorages.AddNoticeInfo(strconv.FormatInt(t.AdapterId, 10), t.AdapterName, strconv.FormatInt(t.ClusterId, 10), t.ClusterName, t.Name, "pending", "任务pending")
|
|
||||||
t.Status = trainingTask.Status
|
|
||||||
}
|
|
||||||
}
|
|
||||||
t.StartTime = trainingTask.Start
|
|
||||||
t.EndTime = trainingTask.End
|
|
||||||
err = svc.Scheduler.AiStorages.UpdateAiTask(t)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("###UpdateAiTaskStatus###, AiTaskId: %v, clusterId: %v , JobId: %v, error: %v \n", t.Id, t.ClusterId, t.JobId, err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
wg.Wait()
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateTaskStatus(svc *svc.ServiceContext, tasklist []*types.TaskModel) {
|
|
||||||
list := make([]*types.TaskModel, len(tasklist))
|
|
||||||
copy(list, tasklist)
|
|
||||||
for i := len(list) - 1; i >= 0; i-- {
|
|
||||||
if list[i].AdapterTypeDict != "1" || list[i].Status == constants.Succeeded || list[i].Status == constants.Failed {
|
|
||||||
list = append(list[:i], list[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(list) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
task := list[0]
|
|
||||||
for i := range list {
|
|
||||||
earliest, _ := time.Parse(time.RFC3339, task.UpdatedTime)
|
|
||||||
latest, _ := time.Parse(time.RFC3339, list[i].UpdatedTime)
|
|
||||||
if latest.Before(earliest) {
|
|
||||||
task = list[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update Infer Task Status
|
|
||||||
if task.TaskTypeDict == "11" || task.TaskTypeDict == "12" {
|
|
||||||
UpdateInferTaskStatus(svc, task)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var aiTask []*models.TaskAi
|
|
||||||
tx := svc.DbEngin.Raw("select * from task_ai where `task_id` = ? ", task.Id).Scan(&aiTask)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 0 {
|
|
||||||
tx = svc.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 1 {
|
|
||||||
if aiTask[0].Status == constants.Completed {
|
|
||||||
task.Status = constants.Succeeded
|
|
||||||
} else {
|
|
||||||
task.Status = aiTask[0].Status
|
|
||||||
}
|
|
||||||
task.StartTime = aiTask[0].StartTime
|
|
||||||
task.EndTime = aiTask[0].EndTime
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = svc.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := len(aiTask) - 1; i >= 0; i-- {
|
|
||||||
if aiTask[i].StartTime == "" {
|
|
||||||
task.Status = aiTask[i].Status
|
|
||||||
aiTask = append(aiTask[:i], aiTask[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 0 {
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = svc.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
start, _ := time.ParseInLocation(constants.Layout, aiTask[0].StartTime, time.Local)
|
|
||||||
end, _ := time.ParseInLocation(constants.Layout, aiTask[0].EndTime, time.Local)
|
|
||||||
|
|
||||||
var status string
|
|
||||||
var count int
|
|
||||||
for _, a := range aiTask {
|
|
||||||
s, _ := time.ParseInLocation(constants.Layout, a.StartTime, time.Local)
|
|
||||||
e, _ := time.ParseInLocation(constants.Layout, a.EndTime, time.Local)
|
|
||||||
|
|
||||||
if s.Before(start) {
|
|
||||||
start = s
|
|
||||||
}
|
|
||||||
|
|
||||||
if e.After(end) {
|
|
||||||
end = e
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Failed {
|
|
||||||
status = a.Status
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Pending {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Running {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Completed {
|
|
||||||
count++
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if count == len(aiTask) {
|
|
||||||
status = constants.Succeeded
|
|
||||||
}
|
|
||||||
|
|
||||||
if status != "" {
|
|
||||||
task.Status = status
|
|
||||||
task.StartTime = start.Format(constants.Layout)
|
|
||||||
task.EndTime = end.Format(constants.Layout)
|
|
||||||
}
|
|
||||||
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = svc.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateAiAdapterMaps(svc *svc.ServiceContext) {
|
|
||||||
var aiType = "1"
|
|
||||||
adapterIds, err := svc.Scheduler.AiStorages.GetAdapterIdsByType(aiType)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("###UpdateAiAdapterMaps###, error: %v \n", err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if len(adapterIds) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, id := range adapterIds {
|
|
||||||
clusters, err := svc.Scheduler.AiStorages.GetClustersByAdapterId(id)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("###UpdateAiAdapterMaps###, error: %v \n", err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if len(clusters.List) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if isAdapterExist(svc, id, len(clusters.List)) {
|
|
||||||
continue
|
|
||||||
} else {
|
|
||||||
if isAdapterEmpty(svc, id) {
|
|
||||||
exeClusterMap, colClusterMap := InitAiClusterMap(&svc.Config, clusters.List)
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[id] = exeClusterMap
|
|
||||||
svc.Scheduler.AiService.AiCollectorAdapterMap[id] = colClusterMap
|
|
||||||
} else {
|
|
||||||
UpdateClusterMaps(svc, id, clusters.List)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateClusterMaps(svc *svc.ServiceContext, adapterId string, clusters []types.ClusterInfo) {
|
|
||||||
for _, c := range clusters {
|
|
||||||
_, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id]
|
|
||||||
_, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[adapterId][c.Id]
|
|
||||||
if !ok && !ok2 {
|
|
||||||
switch c.Name {
|
|
||||||
case OCTOPUS:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
octopusRpc := octopusclient.NewOctopus(zrpc.MustNewClient(svc.Config.OctopusRpcConf))
|
|
||||||
octopus := storeLink.NewOctopusLink(octopusRpc, c.Nickname, id)
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = octopus
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = octopus
|
|
||||||
case MODELARTS:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
modelArtsRpc := modelartsservice.NewModelArtsService(zrpc.MustNewClient(svc.Config.ModelArtsRpcConf))
|
|
||||||
modelArtsImgRpc := imagesservice.NewImagesService(zrpc.MustNewClient(svc.Config.ModelArtsImgRpcConf))
|
|
||||||
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, c.Name, id, c.Nickname)
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = modelarts
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = modelarts
|
|
||||||
case SHUGUANGAI:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
aCRpc := hpcacclient.NewHpcAC(zrpc.MustNewClient(svc.Config.ACRpcConf))
|
|
||||||
sgai := storeLink.NewShuguangAi(aCRpc, c.Nickname, id)
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = sgai
|
|
||||||
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = sgai
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func isAdapterExist(svc *svc.ServiceContext, id string, clusterNum int) bool {
|
|
||||||
emap, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[id]
|
|
||||||
cmap, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[id]
|
|
||||||
if ok && ok2 {
|
|
||||||
if len(emap) == clusterNum && len(cmap) == clusterNum {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func isAdapterEmpty(svc *svc.ServiceContext, id string) bool {
|
|
||||||
_, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[id]
|
|
||||||
_, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[id]
|
|
||||||
if !ok && !ok2 {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func InitAiClusterMap(conf *config.Config, clusters []types.ClusterInfo) (map[string]executor.AiExecutor, map[string]collector.AiCollector) {
|
|
||||||
executorMap := make(map[string]executor.AiExecutor)
|
|
||||||
collectorMap := make(map[string]collector.AiCollector)
|
|
||||||
for _, c := range clusters {
|
|
||||||
switch c.Name {
|
|
||||||
case OCTOPUS:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
octopusRpc := octopusclient.NewOctopus(zrpc.MustNewClient(conf.OctopusRpcConf))
|
|
||||||
octopus := storeLink.NewOctopusLink(octopusRpc, c.Nickname, id)
|
|
||||||
collectorMap[c.Id] = octopus
|
|
||||||
executorMap[c.Id] = octopus
|
|
||||||
case MODELARTS:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
modelArtsRpc := modelartsservice.NewModelArtsService(zrpc.MustNewClient(conf.ModelArtsRpcConf))
|
|
||||||
modelArtsImgRpc := imagesservice.NewImagesService(zrpc.MustNewClient(conf.ModelArtsImgRpcConf))
|
|
||||||
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, c.Name, id, c.Nickname)
|
|
||||||
collectorMap[c.Id] = modelarts
|
|
||||||
executorMap[c.Id] = modelarts
|
|
||||||
case SHUGUANGAI:
|
|
||||||
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
|
||||||
aCRpc := hpcacclient.NewHpcAC(zrpc.MustNewClient(conf.ACRpcConf))
|
|
||||||
sgai := storeLink.NewShuguangAi(aCRpc, c.Nickname, id)
|
|
||||||
collectorMap[c.Id] = sgai
|
|
||||||
executorMap[c.Id] = sgai
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return executorMap, collectorMap
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateClusterResource(svc *svc.ServiceContext) {
|
|
||||||
list, err := svc.Scheduler.AiStorages.GetAdaptersByType("1")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
for _, adapter := range list {
|
|
||||||
clusters, err := svc.Scheduler.AiStorages.GetClustersByAdapterId(adapter.Id)
|
|
||||||
if err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, cluster := range clusters.List {
|
|
||||||
c := cluster
|
|
||||||
clusterResource, err := svc.Scheduler.AiStorages.GetClusterResourcesById(c.Id)
|
|
||||||
if err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
wg.Add(1)
|
|
||||||
go func() {
|
|
||||||
_, ok := svc.Scheduler.AiService.AiCollectorAdapterMap[adapter.Id][c.Id]
|
|
||||||
if !ok {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
h := http.Request{}
|
|
||||||
stat, err := svc.Scheduler.AiService.AiCollectorAdapterMap[adapter.Id][c.Id].GetResourceStats(h.Context())
|
|
||||||
if err != nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if stat == nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
clusterType, err := strconv.ParseInt(adapter.Type, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var cardTotal int64
|
|
||||||
var topsTotal float64
|
|
||||||
for _, card := range stat.CardsAvail {
|
|
||||||
cardTotal += int64(card.CardNum)
|
|
||||||
topsTotal += card.TOpsAtFp16 * float64(card.CardNum)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (models.TClusterResource{} == *clusterResource) {
|
|
||||||
err = svc.Scheduler.AiStorages.SaveClusterResources(adapter.Id, c.Id, c.Name, clusterType, float64(stat.CpuCoreAvail), float64(stat.CpuCoreTotal),
|
|
||||||
stat.MemAvail, stat.MemTotal, stat.DiskAvail, stat.DiskTotal, float64(stat.GpuAvail), float64(stat.GpuTotal), cardTotal, topsTotal)
|
|
||||||
if err != nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if stat.CpuCoreTotal == 0 || stat.MemTotal == 0 || stat.DiskTotal == 0 {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
clusterResource.CardTotal = cardTotal
|
|
||||||
clusterResource.CardTopsTotal = topsTotal
|
|
||||||
clusterResource.CpuAvail = float64(stat.CpuCoreAvail)
|
|
||||||
clusterResource.CpuTotal = float64(stat.CpuCoreTotal)
|
|
||||||
clusterResource.MemAvail = stat.MemAvail
|
|
||||||
clusterResource.MemTotal = stat.MemTotal
|
|
||||||
clusterResource.DiskAvail = stat.DiskAvail
|
|
||||||
clusterResource.DiskTotal = stat.DiskTotal
|
|
||||||
|
|
||||||
err := svc.Scheduler.AiStorages.UpdateClusterResources(clusterResource)
|
|
||||||
if err != nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wg.Wait()
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdateInferTaskStatus(svc *svc.ServiceContext, task *types.TaskModel) {
|
|
||||||
var aiTask []*models.TaskAi
|
|
||||||
tx := svc.DbEngin.Raw("select * from task_ai where `task_id` = ? ", task.Id).Scan(&aiTask)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 0 {
|
|
||||||
task.Status = constants.Failed
|
|
||||||
tx = svc.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 1 {
|
|
||||||
if aiTask[0].Status == constants.Completed {
|
|
||||||
task.StartTime = aiTask[0].StartTime
|
|
||||||
task.EndTime = aiTask[0].EndTime
|
|
||||||
task.Status = constants.Succeeded
|
|
||||||
} else {
|
|
||||||
task.StartTime = aiTask[0].StartTime
|
|
||||||
task.Status = aiTask[0].Status
|
|
||||||
}
|
|
||||||
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = svc.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
//for i := len(aiTask) - 1; i >= 0; i-- {
|
|
||||||
// if aiTask[i].StartTime == "" {
|
|
||||||
// task.Status = aiTask[i].Status
|
|
||||||
// aiTask = append(aiTask[:i], aiTask[i+1:]...)
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//if len(aiTask) == 0 {
|
|
||||||
// task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
// tx = svc.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
// if tx.Error != nil {
|
|
||||||
// logx.Errorf(tx.Error.Error())
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
|
|
||||||
if aiTask[0].StartTime == "" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
start, _ := time.ParseInLocation(time.RFC3339, aiTask[0].StartTime, time.Local)
|
|
||||||
end, _ := time.ParseInLocation(time.RFC3339, aiTask[0].EndTime, time.Local)
|
|
||||||
var status string
|
|
||||||
var count int
|
|
||||||
for _, a := range aiTask {
|
|
||||||
if a.Status == constants.Failed {
|
|
||||||
status = a.Status
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Pending {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Running {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Completed {
|
|
||||||
count++
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if count == len(aiTask) {
|
|
||||||
status = constants.Succeeded
|
|
||||||
}
|
|
||||||
|
|
||||||
if status == constants.Succeeded {
|
|
||||||
task.Status = status
|
|
||||||
task.StartTime = start.Format(time.RFC3339)
|
|
||||||
task.EndTime = end.Format(time.RFC3339)
|
|
||||||
} else {
|
|
||||||
task.Status = status
|
|
||||||
task.StartTime = start.Format(time.RFC3339)
|
|
||||||
}
|
|
||||||
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = svc.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package storage
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/storage"
|
|
||||||
"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/repository/result"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func DailyPowerScreenHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var req types.DailyPowerScreenReq
|
|
||||||
if err := httpx.Parse(r, &req); err != nil {
|
|
||||||
result.ParamErrorResult(r, w, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
l := storage.NewDailyPowerScreenLogic(r.Context(), svcCtx)
|
|
||||||
resp, err := l.DailyPowerScreen(&req)
|
|
||||||
result.HttpResult(r, w, resp, err)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package storage
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/storage"
|
|
||||||
"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/repository/result"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func PerCenterComputerPowersHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
var req types.PerCenterComputerPowersReq
|
|
||||||
if err := httpx.Parse(r, &req); err != nil {
|
|
||||||
result.ParamErrorResult(r, w, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
l := storage.NewPerCenterComputerPowersLogic(r.Context(), svcCtx)
|
|
||||||
resp, err := l.PerCenterComputerPowers(&req)
|
|
||||||
result.HttpResult(r, w, resp, err)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,89 +0,0 @@
|
||||||
package ai
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"context"
|
|
||||||
"crypto/tls"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
tool "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/hws"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"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 ProxyApiLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewProxyApiLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ProxyApiLogic {
|
|
||||||
return &ProxyApiLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ChatResult struct {
|
|
||||||
Results string `json:"results"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ResponseData struct {
|
|
||||||
Results string `json:"results"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *ProxyApiLogic) ProxyApi(req *types.ChatReq, w http.ResponseWriter) (resp *types.CommonResp, err error) {
|
|
||||||
|
|
||||||
jsonBytes, err := json.Marshal(&req.ReqData)
|
|
||||||
// 调用第三方接口的 POST 方法
|
|
||||||
thirdReq, err := http.NewRequest("POST", req.ApiUrl, bytes.NewBuffer(jsonBytes))
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
signer := &hws.Signer{
|
|
||||||
Key: "UNEHPHO4Z7YSNPKRXFE4",
|
|
||||||
Secret: "JWXCE9qcYbc7RjpSRIWt4WgG3ZKF6Q4lPzkJReX9",
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := signer.Sign(thirdReq); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置client信任所有证书
|
|
||||||
tr := &http.Transport{
|
|
||||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
|
||||||
}
|
|
||||||
client := &http.Client{
|
|
||||||
Transport: tr,
|
|
||||||
}
|
|
||||||
|
|
||||||
thirdReq.Header.Set("X-Project-Id", "d18190e28e3f45a281ef0b0696ec9d52")
|
|
||||||
thirdReq.Header.Set("x-stage", "RELEASE")
|
|
||||||
thirdReq.Header.Set("Authorization", thirdReq.Header.Get(hws.HeaderXAuthorization))
|
|
||||||
thirdReq.Header.Set("X-Sdk-Date", thirdReq.Header.Get(hws.HeaderXDateTime))
|
|
||||||
thirdReq.Header.Set("Content-Type", "application/json")
|
|
||||||
|
|
||||||
thirdResp, err := client.Do(thirdReq)
|
|
||||||
|
|
||||||
defer thirdReq.Body.Close()
|
|
||||||
var responseData ResponseData
|
|
||||||
decoder := json.NewDecoder(thirdResp.Body)
|
|
||||||
if err := decoder.Decode(&responseData); err != nil {
|
|
||||||
fmt.Println("Error decoding response:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
chatResult := &ChatResult{}
|
|
||||||
tool.Convert(responseData, &chatResult)
|
|
||||||
return &types.CommonResp{
|
|
||||||
Code: thirdResp.StatusCode,
|
|
||||||
Msg: "success",
|
|
||||||
Data: chatResult,
|
|
||||||
}, nil
|
|
||||||
}
|
|
|
@ -1,297 +0,0 @@
|
||||||
package core
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"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/constants"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/timeutils"
|
|
||||||
"strconv"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PageListTaskLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewPageListTaskLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PageListTaskLogic {
|
|
||||||
return &PageListTaskLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *PageListTaskLogic) PageListTask(req *types.PageTaskReq) (resp *types.PageResult, err error) {
|
|
||||||
limit := req.PageSize
|
|
||||||
offset := req.PageSize * (req.PageNum - 1)
|
|
||||||
resp = &types.PageResult{}
|
|
||||||
var list []*types.TaskModel
|
|
||||||
db := l.svcCtx.DbEngin.Model(&types.TaskModel{}).Table("task")
|
|
||||||
|
|
||||||
db = db.Where("deleted_at is null")
|
|
||||||
if req.Name != "" {
|
|
||||||
db = db.Where("name LIKE ?", "%"+req.Name+"%")
|
|
||||||
}
|
|
||||||
|
|
||||||
//count total
|
|
||||||
var total int64
|
|
||||||
err = db.Count(&total).Error
|
|
||||||
db.Limit(limit).Offset(offset)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return resp, err
|
|
||||||
}
|
|
||||||
err = db.Order("created_time desc").Find(&list).Error
|
|
||||||
if err != nil {
|
|
||||||
return nil, result.NewDefaultError(err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新智算任务状态
|
|
||||||
//chs := [2]chan struct{}{make(chan struct{}), make(chan struct{})}
|
|
||||||
//go l.updateTaskStatus(list, chs[0])
|
|
||||||
//go l.updateAiTaskStatus(list, chs[1])
|
|
||||||
|
|
||||||
for _, model := range list {
|
|
||||||
if model.StartTime != "" && model.EndTime == "" {
|
|
||||||
startTime := timeutils.TimeStringToGoTime(model.StartTime)
|
|
||||||
model.RunningTime = int64(time.Now().Sub(startTime).Seconds())
|
|
||||||
}
|
|
||||||
if model.StartTime != "" && model.EndTime != "" {
|
|
||||||
startTime := timeutils.TimeStringToGoTime(model.StartTime)
|
|
||||||
endTime := timeutils.TimeStringToGoTime(model.EndTime)
|
|
||||||
model.RunningTime = int64(endTime.Sub(startTime).Seconds())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resp.List = &list
|
|
||||||
resp.PageSize = req.PageSize
|
|
||||||
resp.PageNum = req.PageNum
|
|
||||||
resp.Total = total
|
|
||||||
|
|
||||||
//for _, ch := range chs {
|
|
||||||
// select {
|
|
||||||
// case <-ch:
|
|
||||||
// case <-time.After(1 * time.Second):
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *PageListTaskLogic) updateTaskStatus(tasklist []*types.TaskModel, ch chan<- struct{}) {
|
|
||||||
list := make([]*types.TaskModel, len(tasklist))
|
|
||||||
copy(list, tasklist)
|
|
||||||
for i := len(list) - 1; i >= 0; i-- {
|
|
||||||
if list[i].AdapterTypeDict != "1" || list[i].Status == constants.Succeeded || list[i].Status == constants.Failed {
|
|
||||||
list = append(list[:i], list[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(list) == 0 {
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
task := list[0]
|
|
||||||
for i := range list {
|
|
||||||
earliest, _ := time.Parse(time.RFC3339, task.UpdatedTime)
|
|
||||||
latest, _ := time.Parse(time.RFC3339, list[i].UpdatedTime)
|
|
||||||
if latest.Before(earliest) {
|
|
||||||
task = list[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var aiTask []*models.TaskAi
|
|
||||||
tx := l.svcCtx.DbEngin.Raw("select * from task_ai where `task_id` = ? ", task.Id).Scan(&aiTask)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 0 {
|
|
||||||
tx = l.svcCtx.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 1 {
|
|
||||||
if aiTask[0].Status == constants.Completed {
|
|
||||||
task.Status = constants.Succeeded
|
|
||||||
} else {
|
|
||||||
task.Status = aiTask[0].Status
|
|
||||||
}
|
|
||||||
task.StartTime = aiTask[0].StartTime
|
|
||||||
task.EndTime = aiTask[0].EndTime
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = l.svcCtx.DbEngin.Model(task).Table("task").Where("deleted_at is null").Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := len(aiTask) - 1; i >= 0; i-- {
|
|
||||||
if aiTask[i].StartTime == "" {
|
|
||||||
task.Status = aiTask[i].Status
|
|
||||||
aiTask = append(aiTask[:i], aiTask[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTask) == 0 {
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = l.svcCtx.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
start, _ := time.ParseInLocation(constants.Layout, aiTask[0].StartTime, time.Local)
|
|
||||||
end, _ := time.ParseInLocation(constants.Layout, aiTask[0].EndTime, time.Local)
|
|
||||||
|
|
||||||
var status string
|
|
||||||
var count int
|
|
||||||
for _, a := range aiTask {
|
|
||||||
s, _ := time.ParseInLocation(constants.Layout, a.StartTime, time.Local)
|
|
||||||
e, _ := time.ParseInLocation(constants.Layout, a.EndTime, time.Local)
|
|
||||||
|
|
||||||
if s.Before(start) {
|
|
||||||
start = s
|
|
||||||
}
|
|
||||||
|
|
||||||
if e.After(end) {
|
|
||||||
end = e
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Failed {
|
|
||||||
status = a.Status
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Pending {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Running {
|
|
||||||
status = a.Status
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if a.Status == constants.Completed {
|
|
||||||
count++
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if count == len(aiTask) {
|
|
||||||
status = constants.Succeeded
|
|
||||||
}
|
|
||||||
|
|
||||||
if status != "" {
|
|
||||||
task.Status = status
|
|
||||||
task.StartTime = start.Format(constants.Layout)
|
|
||||||
task.EndTime = end.Format(constants.Layout)
|
|
||||||
}
|
|
||||||
|
|
||||||
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
||||||
tx = l.svcCtx.DbEngin.Table("task").Model(task).Updates(task)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ch <- struct{}{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *PageListTaskLogic) updateAiTaskStatus(tasklist []*types.TaskModel, ch chan<- struct{}) {
|
|
||||||
list := make([]*types.TaskModel, len(tasklist))
|
|
||||||
copy(list, tasklist)
|
|
||||||
for i := len(list) - 1; i >= 0; i-- {
|
|
||||||
if list[i].AdapterTypeDict != "1" || list[i].Status == constants.Succeeded || list[i].Status == constants.Failed {
|
|
||||||
list = append(list[:i], list[i+1:]...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(list) == 0 {
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
task := list[0]
|
|
||||||
for i := range list {
|
|
||||||
earliest, _ := time.Parse(constants.Layout, task.UpdatedTime)
|
|
||||||
latest, _ := time.Parse(constants.Layout, list[i].UpdatedTime)
|
|
||||||
if latest.Before(earliest) {
|
|
||||||
task = list[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var aiTaskList []*models.TaskAi
|
|
||||||
tx := l.svcCtx.DbEngin.Raw("select * from task_ai where `task_id` = ? ", task.Id).Scan(&aiTaskList)
|
|
||||||
if tx.Error != nil {
|
|
||||||
logx.Errorf(tx.Error.Error())
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(aiTaskList) == 0 {
|
|
||||||
ch <- struct{}{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
for _, aitask := range aiTaskList {
|
|
||||||
t := aitask
|
|
||||||
if t.Status == constants.Completed || t.Status == constants.Failed || t.JobId == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
wg.Add(1)
|
|
||||||
go func() {
|
|
||||||
trainingTask, err := l.svcCtx.Scheduler.AiService.AiCollectorAdapterMap[strconv.FormatInt(t.AdapterId, 10)][strconv.FormatInt(t.ClusterId, 10)].GetTrainingTask(l.ctx, t.JobId)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("AiTaskId: %v, clusterId: %v , JobId: %v, error: %v \n", t.Id, t.ClusterId, t.JobId, err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if trainingTask == nil {
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.Status = trainingTask.Status
|
|
||||||
t.StartTime = trainingTask.Start
|
|
||||||
t.EndTime = trainingTask.End
|
|
||||||
err = l.svcCtx.Scheduler.AiStorages.UpdateAiTask(t)
|
|
||||||
if err != nil {
|
|
||||||
msg := fmt.Sprintf("AiTaskId: %v, clusterId: %v , JobId: %v, error: %v \n", t.Id, t.ClusterId, t.JobId, err.Error())
|
|
||||||
logx.Errorf(errors.New(msg).Error())
|
|
||||||
wg.Done()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
wg.Wait()
|
|
||||||
ch <- struct{}{}
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Copyright (c) [2023] [pcm]
|
|
||||||
[pcm-coordinator] is licensed under Mulan PSL v2.
|
|
||||||
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
||||||
You may obtain a copy of Mulan PSL v2 at:
|
|
||||||
http://license.coscl.org.cn/MulanPSL2
|
|
||||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
||||||
EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
||||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
||||||
See the Mulan PSL v2 for more details.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
package storage
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/jinzhu/copier"
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"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"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-participant-ceph/ceph"
|
|
||||||
"k8s.io/apimachinery/pkg/util/json"
|
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
)
|
|
||||||
|
|
||||||
type DailyPowerScreenLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewDailyPowerScreenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DailyPowerScreenLogic {
|
|
||||||
return &DailyPowerScreenLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *DailyPowerScreenLogic) DailyPowerScreen(req *types.DailyPowerScreenReq) (resp *types.DailyPowerScreenResp, err error) {
|
|
||||||
// todo: add your logic here and delete this line
|
|
||||||
dailyPowerScreenReq := &ceph.DailyPowerScreenReq{}
|
|
||||||
err = copier.CopyWithOption(dailyPowerScreenReq, req, copier.Option{Converters: utils.Converters})
|
|
||||||
DailyPowerScreenResp, err := l.svcCtx.CephRpc.DailyPowerScreen(l.ctx, dailyPowerScreenReq)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrapf(xerr.NewErrMsg("Failed to get db storage list"), "Failed to get db storage list err : %v ,req:%+v", err, req)
|
|
||||||
}
|
|
||||||
marshal, err := json.Marshal(&DailyPowerScreenResp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, result.NewDefaultError(err.Error())
|
|
||||||
}
|
|
||||||
json.Unmarshal(marshal, &resp)
|
|
||||||
err = copier.CopyWithOption(&resp, &DailyPowerScreenResp, copier.Option{Converters: utils.Converters})
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Copyright (c) [2023] [pcm]
|
|
||||||
[pcm-coordinator] is licensed under Mulan PSL v2.
|
|
||||||
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
||||||
You may obtain a copy of Mulan PSL v2 at:
|
|
||||||
http://license.coscl.org.cn/MulanPSL2
|
|
||||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
||||||
EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
||||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
||||||
See the Mulan PSL v2 for more details.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
package storage
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/jinzhu/copier"
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"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"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
|
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-participant-ceph/ceph"
|
|
||||||
"k8s.io/apimachinery/pkg/util/json"
|
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PerCenterComputerPowersLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewPerCenterComputerPowersLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PerCenterComputerPowersLogic {
|
|
||||||
return &PerCenterComputerPowersLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *PerCenterComputerPowersLogic) PerCenterComputerPowers(req *types.PerCenterComputerPowersReq) (resp *types.PerCenterComputerPowersResp, err error) {
|
|
||||||
// todo: add your logic here and delete this line
|
|
||||||
perCenterComputerPowersReq := &ceph.PerCenterComputerPowersReq{}
|
|
||||||
err = copier.CopyWithOption(perCenterComputerPowersReq, req, copier.Option{Converters: utils.Converters})
|
|
||||||
PerCenterComputerPowersResp, err := l.svcCtx.CephRpc.PerCenterComputerPowerScreen(l.ctx, perCenterComputerPowersReq)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrapf(xerr.NewErrMsg("Failed to get db storage list"), "Failed to get db storage list err : %v ,req:%+v", err, req)
|
|
||||||
}
|
|
||||||
marshal, err := json.Marshal(&PerCenterComputerPowersResp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, result.NewDefaultError(err.Error())
|
|
||||||
}
|
|
||||||
json.Unmarshal(marshal, &resp)
|
|
||||||
err = copier.CopyWithOption(&resp, &PerCenterComputerPowersResp, copier.Option{Converters: utils.Converters})
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
|
@ -945,4 +945,86 @@ CREATE TABLE `vm_openstack_overview` (
|
||||||
-- Records of vm_openstack_overview
|
-- Records of vm_openstack_overview
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `screen`;
|
||||||
|
CREATE TABLE `screen` (
|
||||||
|
`id` bigint NOT NULL COMMENT 'id',
|
||||||
|
`storage_used` float NULL DEFAULT NULL,
|
||||||
|
`storage_using` float NULL DEFAULT NULL,
|
||||||
|
`api_delay` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`scheduler_times` int NULL DEFAULT NULL,
|
||||||
|
`scheduler_err` int NULL DEFAULT NULL,
|
||||||
|
`api_times` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`center_count` int NULL DEFAULT NULL,
|
||||||
|
`computing_power` float NULL DEFAULT NULL,
|
||||||
|
`cluster_count` int NULL DEFAULT NULL,
|
||||||
|
`running_count` int NULL DEFAULT NULL,
|
||||||
|
`card_count` int NULL DEFAULT NULL,
|
||||||
|
`running_time` int NULL DEFAULT NULL,
|
||||||
|
`using_rate` float NULL DEFAULT NULL,
|
||||||
|
`usage_rate` float NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of screen
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `screen` VALUES (1, 621.3, 163.8, '2.71', 5, 1, '1.71', 34, 112.08, 48, 138633, 478568, 138633, 0.209, 0.791);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `screen_domain`;
|
||||||
|
CREATE TABLE `screen_domain` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||||
|
`domain_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源域id',
|
||||||
|
`domain_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源域名称',
|
||||||
|
`job_count` int NULL DEFAULT NULL COMMENT '资源域任务数量',
|
||||||
|
`domain_source` tinyint(1) NOT NULL DEFAULT 0 COMMENT '资源域数据来源:0-nudt,1-鹏城',
|
||||||
|
`stack` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '技术栈',
|
||||||
|
`resource_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源类型',
|
||||||
|
`cpu_usage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`cpu_total` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'cpu',
|
||||||
|
`memory_usage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`memory_total` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '内存',
|
||||||
|
`disk_usage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`disk_total` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '存储',
|
||||||
|
`node_usage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`node_total` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '节点数量',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据更新时间',
|
||||||
|
`delete_flag` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0:未删除,1:已经删除',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1403 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '域资源信息' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of screen_domain
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `screen_domain` VALUES (1387, 'cloudbrain1', '鹏城云脑一号GPU计算中心', 0, 1, ' ', '智算中心', '12', '1160', '0.12', '129', '0.68', '10', '0.16', '12', '2023-08-19 20:50:02', '2023-08-19 20:50:02', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1388, 'xian-2', '寒武纪西安智算', 0, 1, ' ', '智算中心', '62', '2130', '0.23', '129', '0.38', '10', '0.66', '18', '2023-08-19 20:50:02', '2023-08-19 20:50:02', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1389, 'cloudbrain2', '云脑二号智算', 6, 1, ' ', '智算中心', '12', '9528', '0.22', '955', '0.55', '64', '0.3', '10', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1390, 'wuhan', '武汉智算', 720, 1, ' ', '智算中心', '87', '9216', '0.58', '40', '0.36', '6', '0.33', '3', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1391, 'pku', '北京大学GPU智算', 0, 1, ' ', '智算中心', '54', '2240', '0.27', '11', '0.28', '1', '0.5', '22', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1392, 'hefei', '中科类脑GPU智算', 388, 1, ' ', '智算中心', '23', '1952', '0.32', '22', '0.63', '14', '0.5', '12', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1393, 'hefei-1', '寒武纪合肥智算', 0, 1, ' ', '智算中心', '13', '1952', '0.33', '11', '0.36', '14', '0.57', '19', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1394, 'xian', '西安智算', 1472, 1, ' ', '智算中心', '45', '2304', '0.12', '96', '0.78', '7', '0.2', '5', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
INSERT INTO `screen_domain` VALUES (1395, 'xuchang', '中原智算', 2136, 1, ' ', '智算中心', '28', '7680', '0.11', '32', '0.85', '6', '0.52', '23', '2023-08-19 20:50:03', '2023-08-19 20:50:03', 0);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `screen_chart`;
|
||||||
|
CREATE TABLE `screen_chart` (
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`cpu_avg` int NULL DEFAULT NULL,
|
||||||
|
`cpu_load` int NULL DEFAULT NULL,
|
||||||
|
`memory_load` int NULL DEFAULT NULL,
|
||||||
|
`memory_avg` int NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of screen_chart
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `screen_chart` VALUES (1, 20, 64, 128, 62);
|
||||||
|
INSERT INTO `screen_chart` VALUES (2, 75, 64, 256, 36);
|
||||||
|
INSERT INTO `screen_chart` VALUES (3, 73, 128, 128, 73);
|
||||||
|
INSERT INTO `screen_chart` VALUES (4, 63, 72, 64, 23);
|
||||||
|
INSERT INTO `screen_chart` VALUES (5, 38, 80, 256, 35);
|
||||||
|
INSERT INTO `screen_chart` VALUES (6, 26, 40, 64, 18);
|
||||||
|
INSERT INTO `screen_chart` VALUES (7, 36, 68, 128, 39);
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
|
@ -1822,8 +1822,11 @@ service AICore-api {
|
||||||
|
|
||||||
type (
|
type (
|
||||||
ChatReq{
|
ChatReq{
|
||||||
ApiUrl string `json:"apiUrl,optional"`
|
ApiUrl string `json:"apiUrl"`
|
||||||
Method string `json:"method,optional"`
|
Method string `json:"method,optional"`
|
||||||
ReqData map[string]interface{} `json:"reqData"`
|
ReqData map[string]interface{} `json:"reqData"`
|
||||||
}
|
}
|
||||||
|
ChatResult{
|
||||||
|
Resuluts string `json:"results,optional"`
|
||||||
|
}
|
||||||
)
|
)
|
|
@ -505,6 +505,36 @@ type (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
type ScreenChartResp {
|
||||||
|
ComputingPower []int `json:"computingPower"`
|
||||||
|
CpuAvg []int `json:"cpuAvg"`
|
||||||
|
CpuLoad []int `json:"cpuLoad"`
|
||||||
|
MemoryLoad []int `json:"memoryLoad"`
|
||||||
|
MemoryAvg []int `json:"memoryAvg"`
|
||||||
|
CenterName string `json:"centerName"`
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type ScreenInfoResp {
|
||||||
|
StorageUsed float32 `json:"storageUsed"`
|
||||||
|
StorageUsing float32 `json:"storageUsing"`
|
||||||
|
UsageRate float32 `json:"usageRate"`
|
||||||
|
UsingRate float32 `json:"usingRate"`
|
||||||
|
ApiDelay string `json:"apiDelay"`
|
||||||
|
SchedulerTimes int `json:"schedulerTimes"`
|
||||||
|
SchedulerErr int `json:"schedulerErr"`
|
||||||
|
ApiTimes string `json:"apiTimes"`
|
||||||
|
CenterCount int `json:"centerCount"`
|
||||||
|
ComputingPower float64 `json:"computingPower"`
|
||||||
|
ClusterCount int `json:"clusterCount"`
|
||||||
|
RunningCount int `json:"runningCount"`
|
||||||
|
CardCount int `json:"cardCount"`
|
||||||
|
RunningTime int `json:"runningTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
type (
|
type (
|
||||||
cpResp {
|
cpResp {
|
||||||
POpsAtFp16 float32 `json:"pOpsAtFp16"`
|
POpsAtFp16 float32 `json:"pOpsAtFp16"`
|
|
@ -154,6 +154,19 @@ service pcm {
|
||||||
@doc "Get Public Network"
|
@doc "Get Public Network"
|
||||||
@handler getPublicNetworkHandler
|
@handler getPublicNetworkHandler
|
||||||
get /core/getPublicNetwork (PublicNetworkReq) returns (PublicNetworkResp)
|
get /core/getPublicNetwork (PublicNetworkReq) returns (PublicNetworkResp)
|
||||||
|
|
||||||
|
@doc "screen"
|
||||||
|
@handler getDomainResourceHandler
|
||||||
|
get /core/getDomainResource returns (DomainResourceResp)
|
||||||
|
|
||||||
|
@doc "screen"
|
||||||
|
@handler getScreenInfoHandler
|
||||||
|
get /core/getScreenInfo returns (ScreenInfoResp)
|
||||||
|
|
||||||
|
@doc "screen"
|
||||||
|
@handler getScreenChartHandler
|
||||||
|
get /core/getScreenChart returns (ScreenChartResp)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//hpc二级接口
|
//hpc二级接口
|
||||||
|
@ -386,11 +399,11 @@ service pcm {
|
||||||
|
|
||||||
@doc "日常算力查询"
|
@doc "日常算力查询"
|
||||||
@handler dailyPowerScreenHandler
|
@handler dailyPowerScreenHandler
|
||||||
get /storage/dailyPowerScreen (DailyPowerScreenReq) returns (DailyPowerScreenResp)
|
get /storage/dailyPowerScreen returns (DailyPowerScreenResp)
|
||||||
|
|
||||||
@doc "算力中心算力情况"
|
@doc "算力中心算力情况"
|
||||||
@handler perCenterComputerPowersHandler
|
@handler perCenterComputerPowersHandler
|
||||||
get /storage/perCenterComputerPowers (PerCenterComputerPowersReq) returns (PerCenterComputerPowersResp)
|
get /storage/perCenterComputerPowers returns (PerCenterComputerPowersResp)
|
||||||
}
|
}
|
||||||
|
|
||||||
//openstack 接口
|
//openstack 接口
|
|
@ -52,46 +52,14 @@ type (
|
||||||
|
|
||||||
/******************screen computing power Start*************************/
|
/******************screen computing power Start*************************/
|
||||||
type (
|
type (
|
||||||
DailyPowerScreenReq {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DailyPowerScreenResp {
|
DailyPowerScreenResp {
|
||||||
TotalSize int32 `json:"totalSize" copier:"TotalSize"`
|
// DailyComputerPowers []DailyComputerPowers `json:"dailyComputerPowers" copier:"DailyComputerPowers"`
|
||||||
DailyComputerPowers []DailyComputerPowers `json:"dailyComputerPowers" copier:"DailyComputerPowers"`
|
chart interface{} `json:"chart"`
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"ErrorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
DailyComputerPowers {
|
|
||||||
Date string `json:"date" copier:"Date"`
|
|
||||||
ComputerPower float32 `json:"computerPower" copier:"ComputerPower"`
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
type (
|
type (
|
||||||
PerCenterComputerPowersReq {
|
|
||||||
|
|
||||||
}
|
|
||||||
PerCenterComputerPowersResp {
|
PerCenterComputerPowersResp {
|
||||||
TotalSize int32 `json:"totalSize" copier:"TotalSize"`
|
chart interface{} `json:"chart"`
|
||||||
PerCenterComputerPowers []PerCenterComputerPowers `json:"perCenterComputerPowers" copier:"PerCenterComputerPowers"`
|
|
||||||
AccOtJobInfo AccOtJobInfo `json:"accOtJobInfo" copier:"AccOtJobInfo"`
|
|
||||||
Code int32 `json:"code,omitempty"`
|
|
||||||
Msg string `json:"msg,omitempty"`
|
|
||||||
ErrorMsg string `json:"ErrorMsg,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
PerCenterComputerPowers {
|
|
||||||
CenterName string `json:"centerName" copier:"CenterName"`
|
|
||||||
ComputerPower float32 `json:"computerPower" copier:"ComputerPower"`
|
|
||||||
JobCount int32 `json:"jobCount" copier:"JobCount"`
|
|
||||||
CenterId string `json:"centerId" copier:"CenterId"`
|
|
||||||
}
|
|
||||||
AccOtJobInfo {
|
|
||||||
AccRunSec int32 `json:"accRunSec" copier:"AccRunSec"`
|
|
||||||
AccCardRunSec float32 `json:"accCardRunSec" copier:"AccCardRunSec"`
|
|
||||||
AccOtJobNum int32 `json:"accOtJobNum" copier:"AccOtJobNum"`
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,8 +6,8 @@ MaxBytes: 524288000
|
||||||
Timeout: 50000
|
Timeout: 50000
|
||||||
|
|
||||||
DB:
|
DB:
|
||||||
DataSource: root:uJpLd6u-J?HC1@(10.206.0.12:3306)/pcm?parseTime=true&loc=Local
|
# DataSource: root:uJpLd6u-J?HC1@(10.206.0.12:3306)/pcm?parseTime=true&loc=Local
|
||||||
# DataSource: root:uJpLd6u-J?HC1@(47.92.88.143:3306)/pcm?parseTime=true&loc=Local
|
DataSource: root:uJpLd6u-J?HC1@(47.92.88.143:3306)/pcm?parseTime=true&loc=Local
|
||||||
Redis:
|
Redis:
|
||||||
Host: 10.206.0.12:6379
|
Host: 10.206.0.12:6379
|
||||||
Pass: redisPW123
|
Pass: redisPW123
|
|
@ -1,10 +0,0 @@
|
||||||
description: modelArts
|
|
||||||
name: modelArts
|
|
||||||
tasks:
|
|
||||||
- serviceName: modelArts
|
|
||||||
metadata:
|
|
||||||
projectId: 0a62ffb0d48026c12fbfc011b8d23f0b
|
|
||||||
name: demo3
|
|
||||||
command: echo hello;sleep 100;echo hello;sleep 100;echo hello
|
|
||||||
flavorId: modelarts.p3.large.public.free
|
|
||||||
imageUrl: jcce/nginx:v1
|
|
|
@ -1,72 +0,0 @@
|
||||||
description: sealos-task-zw3
|
|
||||||
name: sealos-task-zw3
|
|
||||||
nsID: ns-admin
|
|
||||||
tasks:
|
|
||||||
- taskType: cloud
|
|
||||||
replicas: 2
|
|
||||||
matchLabels:
|
|
||||||
cloud: sealos
|
|
||||||
metadata:
|
|
||||||
- apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
namespace: ns-admin
|
|
||||||
name: hello-world-3
|
|
||||||
labels:
|
|
||||||
cloud.sealos.io/app-deploy-manager: hello-world-3
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
name: rcszabasszit
|
|
||||||
selector:
|
|
||||||
app: hello-world-3
|
|
||||||
|
|
||||||
- apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: ns-admin
|
|
||||||
name: hello-world-3
|
|
||||||
annotations:
|
|
||||||
originImageName: nginx
|
|
||||||
deploy.cloud.sealos.io/minReplicas: '1'
|
|
||||||
deploy.cloud.sealos.io/maxReplicas: '1'
|
|
||||||
labels:
|
|
||||||
cloud.sealos.io/app-deploy-manager: hello-world-3
|
|
||||||
app: hello-world-3
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
revisionHistoryLimit: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: hello-world-3
|
|
||||||
strategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 0
|
|
||||||
maxSurge: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: hello-world-3
|
|
||||||
restartTime: '20231129185132'
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: hello-world-3
|
|
||||||
image: nginx
|
|
||||||
env: []
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 6Mi
|
|
||||||
limits:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 64Mi
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
name: rcszabasszit
|
|
||||||
imagePullPolicy: Always
|
|
||||||
volumeMounts: []
|
|
||||||
volumes: []
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
description: ac_01
|
|
||||||
name: ac_01
|
|
||||||
tasks:
|
|
||||||
- taskType: hpc
|
|
||||||
matchLabels:
|
|
||||||
hpc: shuguang
|
|
||||||
metadata:
|
|
||||||
cardCount: 1
|
|
||||||
name: ac_01
|
|
||||||
workDir: /public/home/zhijiang/test/testjob1
|
|
||||||
wallTime: 00:10:00
|
|
||||||
cmdScript: sleep 300
|
|
||||||
appType: BASIC
|
|
||||||
appName: BASE
|
|
||||||
queue: debug2
|
|
||||||
nNode: "1"
|
|
||||||
submitType: cmd
|
|
||||||
stdOutFile: /public/home/zhijiang/test/testjob1/std.out.%j
|
|
||||||
stdErrFile: /public/home/zhijiang/test/testjob1/std.err.%j
|
|
|
@ -1,8 +0,0 @@
|
||||||
description: th1 task
|
|
||||||
name: th1 demo
|
|
||||||
tasks:
|
|
||||||
- serviceName: th
|
|
||||||
metadata:
|
|
||||||
cardCount: 1
|
|
||||||
name: tianhe1 demo
|
|
||||||
cmdScript: srun sleep 500
|
|
4
go.mod
4
go.mod
|
@ -13,7 +13,6 @@ require (
|
||||||
github.com/ghodss/yaml v1.0.0
|
github.com/ghodss/yaml v1.0.0
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
github.com/go-resty/resty/v2 v2.12.0
|
github.com/go-resty/resty/v2 v2.12.0
|
||||||
github.com/go-sql-driver/mysql v1.8.1
|
|
||||||
github.com/jinzhu/copier v0.4.0
|
github.com/jinzhu/copier v0.4.0
|
||||||
github.com/json-iterator/go v1.1.12
|
github.com/json-iterator/go v1.1.12
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
|
@ -32,7 +31,6 @@ require (
|
||||||
go.opentelemetry.io/otel/trace v1.27.0
|
go.opentelemetry.io/otel/trace v1.27.0
|
||||||
gonum.org/v1/gonum v0.11.0
|
gonum.org/v1/gonum v0.11.0
|
||||||
google.golang.org/grpc v1.64.0
|
google.golang.org/grpc v1.64.0
|
||||||
google.golang.org/protobuf v1.34.2
|
|
||||||
gorm.io/datatypes v1.2.0
|
gorm.io/datatypes v1.2.0
|
||||||
gorm.io/driver/mysql v1.5.2
|
gorm.io/driver/mysql v1.5.2
|
||||||
gorm.io/gorm v1.25.5
|
gorm.io/gorm v1.25.5
|
||||||
|
@ -73,6 +71,7 @@ require (
|
||||||
github.com/go-openapi/strfmt v0.22.0 // indirect
|
github.com/go-openapi/strfmt v0.22.0 // indirect
|
||||||
github.com/go-openapi/swag v0.23.0 // indirect
|
github.com/go-openapi/swag v0.23.0 // indirect
|
||||||
github.com/go-openapi/validate v0.23.0 // indirect
|
github.com/go-openapi/validate v0.23.0 // indirect
|
||||||
|
github.com/go-sql-driver/mysql v1.8.1 // indirect
|
||||||
github.com/gofrs/uuid v4.4.0+incompatible // indirect
|
github.com/gofrs/uuid v4.4.0+incompatible // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
||||||
|
@ -155,6 +154,7 @@ require (
|
||||||
golang.org/x/tools v0.22.0 // indirect
|
golang.org/x/tools v0.22.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
|
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||||
|
google.golang.org/protobuf v1.34.2 // indirect
|
||||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
|
|
@ -0,0 +1,250 @@
|
||||||
|
package cron
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
"github.com/zeromicro/go-zero/zrpc"
|
||||||
|
hpcacclient "gitlink.org.cn/JointCloud/pcm-ac/hpcacclient"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/config"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/collector"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/executor"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/storeLink"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-modelarts/client/imagesservice"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-modelarts/client/modelartsservice"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-octopus/octopusclient"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
OCTOPUS = "octopus"
|
||||||
|
MODELARTS = "modelarts"
|
||||||
|
SHUGUANGAI = "shuguangAi"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetTaskList(svc *svc.ServiceContext) ([]*types.TaskModel, error) {
|
||||||
|
limit := 10
|
||||||
|
offset := 0
|
||||||
|
var list []*types.TaskModel
|
||||||
|
db := svc.DbEngin.Model(&types.TaskModel{}).Table("task")
|
||||||
|
|
||||||
|
db = db.Where("deleted_at is null")
|
||||||
|
|
||||||
|
//count total
|
||||||
|
var total int64
|
||||||
|
err := db.Count(&total).Error
|
||||||
|
db.Limit(limit).Offset(offset)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = db.Order("created_time desc").Find(&list).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return list, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateAiAdapterMaps(svc *svc.ServiceContext) {
|
||||||
|
var aiType = "1"
|
||||||
|
adapterIds, err := svc.Scheduler.AiStorages.GetAdapterIdsByType(aiType)
|
||||||
|
if err != nil {
|
||||||
|
msg := fmt.Sprintf("###UpdateAiAdapterMaps###, error: %v \n", err.Error())
|
||||||
|
logx.Errorf(errors.New(msg).Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(adapterIds) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, id := range adapterIds {
|
||||||
|
clusters, err := svc.Scheduler.AiStorages.GetClustersByAdapterId(id)
|
||||||
|
if err != nil {
|
||||||
|
msg := fmt.Sprintf("###UpdateAiAdapterMaps###, error: %v \n", err.Error())
|
||||||
|
logx.Errorf(errors.New(msg).Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(clusters.List) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if isAdapterExist(svc, id, len(clusters.List)) {
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
if isAdapterEmpty(svc, id) {
|
||||||
|
exeClusterMap, colClusterMap := InitAiClusterMap(&svc.Config, clusters.List)
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[id] = exeClusterMap
|
||||||
|
svc.Scheduler.AiService.AiCollectorAdapterMap[id] = colClusterMap
|
||||||
|
} else {
|
||||||
|
UpdateClusterMaps(svc, id, clusters.List)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateClusterMaps(svc *svc.ServiceContext, adapterId string, clusters []types.ClusterInfo) {
|
||||||
|
for _, c := range clusters {
|
||||||
|
_, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id]
|
||||||
|
_, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[adapterId][c.Id]
|
||||||
|
if !ok && !ok2 {
|
||||||
|
switch c.Name {
|
||||||
|
case OCTOPUS:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
octopusRpc := octopusclient.NewOctopus(zrpc.MustNewClient(svc.Config.OctopusRpcConf))
|
||||||
|
octopus := storeLink.NewOctopusLink(octopusRpc, c.Nickname, id)
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = octopus
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = octopus
|
||||||
|
case MODELARTS:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
modelArtsRpc := modelartsservice.NewModelArtsService(zrpc.MustNewClient(svc.Config.ModelArtsRpcConf))
|
||||||
|
modelArtsImgRpc := imagesservice.NewImagesService(zrpc.MustNewClient(svc.Config.ModelArtsImgRpcConf))
|
||||||
|
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, c.Name, id, c.Nickname)
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = modelarts
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = modelarts
|
||||||
|
case SHUGUANGAI:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
aCRpc := hpcacclient.NewHpcAC(zrpc.MustNewClient(svc.Config.ACRpcConf))
|
||||||
|
sgai := storeLink.NewShuguangAi(aCRpc, c.Nickname, id)
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = sgai
|
||||||
|
svc.Scheduler.AiService.AiExecutorAdapterMap[adapterId][c.Id] = sgai
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func isAdapterExist(svc *svc.ServiceContext, id string, clusterNum int) bool {
|
||||||
|
emap, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[id]
|
||||||
|
cmap, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[id]
|
||||||
|
if ok && ok2 {
|
||||||
|
if len(emap) == clusterNum && len(cmap) == clusterNum {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func isAdapterEmpty(svc *svc.ServiceContext, id string) bool {
|
||||||
|
_, ok := svc.Scheduler.AiService.AiExecutorAdapterMap[id]
|
||||||
|
_, ok2 := svc.Scheduler.AiService.AiCollectorAdapterMap[id]
|
||||||
|
if !ok && !ok2 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func InitAiClusterMap(conf *config.Config, clusters []types.ClusterInfo) (map[string]executor.AiExecutor, map[string]collector.AiCollector) {
|
||||||
|
executorMap := make(map[string]executor.AiExecutor)
|
||||||
|
collectorMap := make(map[string]collector.AiCollector)
|
||||||
|
for _, c := range clusters {
|
||||||
|
switch c.Name {
|
||||||
|
case OCTOPUS:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
octopusRpc := octopusclient.NewOctopus(zrpc.MustNewClient(conf.OctopusRpcConf))
|
||||||
|
octopus := storeLink.NewOctopusLink(octopusRpc, c.Nickname, id)
|
||||||
|
collectorMap[c.Id] = octopus
|
||||||
|
executorMap[c.Id] = octopus
|
||||||
|
case MODELARTS:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
modelArtsRpc := modelartsservice.NewModelArtsService(zrpc.MustNewClient(conf.ModelArtsRpcConf))
|
||||||
|
modelArtsImgRpc := imagesservice.NewImagesService(zrpc.MustNewClient(conf.ModelArtsImgRpcConf))
|
||||||
|
modelarts := storeLink.NewModelArtsLink(modelArtsRpc, modelArtsImgRpc, c.Name, id, c.Nickname)
|
||||||
|
collectorMap[c.Id] = modelarts
|
||||||
|
executorMap[c.Id] = modelarts
|
||||||
|
case SHUGUANGAI:
|
||||||
|
id, _ := strconv.ParseInt(c.Id, 10, 64)
|
||||||
|
aCRpc := hpcacclient.NewHpcAC(zrpc.MustNewClient(conf.ACRpcConf))
|
||||||
|
sgai := storeLink.NewShuguangAi(aCRpc, c.Nickname, id)
|
||||||
|
collectorMap[c.Id] = sgai
|
||||||
|
executorMap[c.Id] = sgai
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return executorMap, collectorMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateClusterResource(svc *svc.ServiceContext) {
|
||||||
|
list, err := svc.Scheduler.AiStorages.GetAdaptersByType("1")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
for _, adapter := range list {
|
||||||
|
clusters, err := svc.Scheduler.AiStorages.GetClustersByAdapterId(adapter.Id)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, cluster := range clusters.List {
|
||||||
|
c := cluster
|
||||||
|
clusterResource, err := svc.Scheduler.AiStorages.GetClusterResourcesById(c.Id)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
_, ok := svc.Scheduler.AiService.AiCollectorAdapterMap[adapter.Id][c.Id]
|
||||||
|
if !ok {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h := http.Request{}
|
||||||
|
stat, err := svc.Scheduler.AiService.AiCollectorAdapterMap[adapter.Id][c.Id].GetResourceStats(h.Context())
|
||||||
|
if err != nil {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if stat == nil {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
clusterType, err := strconv.ParseInt(adapter.Type, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var cardTotal int64
|
||||||
|
var topsTotal float64
|
||||||
|
for _, card := range stat.CardsAvail {
|
||||||
|
cardTotal += int64(card.CardNum)
|
||||||
|
topsTotal += card.TOpsAtFp16 * float64(card.CardNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (models.TClusterResource{} == *clusterResource) {
|
||||||
|
err = svc.Scheduler.AiStorages.SaveClusterResources(adapter.Id, c.Id, c.Name, clusterType, float64(stat.CpuCoreAvail), float64(stat.CpuCoreTotal),
|
||||||
|
stat.MemAvail, stat.MemTotal, stat.DiskAvail, stat.DiskTotal, float64(stat.GpuAvail), float64(stat.GpuTotal), cardTotal, topsTotal)
|
||||||
|
if err != nil {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if stat.CpuCoreTotal == 0 || stat.MemTotal == 0 || stat.DiskTotal == 0 {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
clusterResource.CardTotal = cardTotal
|
||||||
|
clusterResource.CardTopsTotal = topsTotal
|
||||||
|
clusterResource.CpuAvail = float64(stat.CpuCoreAvail)
|
||||||
|
clusterResource.CpuTotal = float64(stat.CpuCoreTotal)
|
||||||
|
clusterResource.MemAvail = stat.MemAvail
|
||||||
|
clusterResource.MemTotal = stat.MemTotal
|
||||||
|
clusterResource.DiskAvail = stat.DiskAvail
|
||||||
|
clusterResource.DiskTotal = stat.DiskTotal
|
||||||
|
|
||||||
|
err := svc.Scheduler.AiStorages.UpdateClusterResources(clusterResource)
|
||||||
|
if err != nil {
|
||||||
|
wg.Done()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
}
|
|
@ -16,7 +16,8 @@ package cron
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/scheduler/service/status"
|
||||||
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AddCronGroup(svc *svc.ServiceContext) {
|
func AddCronGroup(svc *svc.ServiceContext) {
|
||||||
|
@ -27,8 +28,8 @@ func AddCronGroup(svc *svc.ServiceContext) {
|
||||||
logx.Errorf(err.Error())
|
logx.Errorf(err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
UpdateTaskStatus(svc, list)
|
status.UpdateTaskStatus(svc, list)
|
||||||
UpdateAiTaskStatus(svc, list)
|
status.UpdateAiTaskStatus(svc, list)
|
||||||
})
|
})
|
||||||
|
|
||||||
svc.Cron.AddFunc("*/5 * * * * ?", func() {
|
svc.Cron.AddFunc("*/5 * * * * ?", func() {
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/adapters"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/adapters"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCenterListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func GetCenterListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCenterOverviewHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func GetCenterOverviewHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCenterQueueingHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func GetCenterQueueingHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCenterTaskListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func GetCenterTaskListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ func ProxyApiHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
l := ai.NewProxyApiLogic(r.Context(), svcCtx)
|
l := ai.NewProxyApiLogic(r.Context(), svcCtx)
|
||||||
resp, err := l.ProxyApi(&req, w)
|
resp, err := l.ProxyApi(&req)
|
||||||
result.HttpResult(r, w, resp, err)
|
result.HttpResult(r, w, resp, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/ai"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/ai"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -1,8 +1,8 @@
|
||||||
package cloud
|
package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -5,9 +5,9 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ClusterInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func ClusterInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package cloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/cloud"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/cloud"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -1,8 +1,8 @@
|
||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/core"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/core"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/core"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/core"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
|
@ -2,9 +2,9 @@ package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/zeromicro/go-zero/rest/httpx"
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/core"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/logic/core"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
||||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue