Compare commits

...

38 Commits

Author SHA1 Message Date
tzwang e39e2e78ae refactor: delete .devops/xjlab-rpc.yml
Former-commit-id: 8d63eba2f42b916d3be4c87c758ae04a0e58a8c7
2024-07-27 07:10:47 +00:00
zhangweiii c240f48a9b Merge pull request 'hashcat' (#39) from zhangweiii/pcm-coordinator:v0.1.0-xjlab-alpha1 into v0.1.0-xjlab-alpha1
Former-commit-id: 84bf749acf0e04b737605860b35c499761dbab93
2024-03-06 15:22:59 +08:00
zhangwei 94a9154011 hashcat Crack Progress
Former-commit-id: d4ffb11a013d34f2ab9ea2fe8e4b412a58db2f12
2024-03-06 15:20:01 +08:00
zhangwei 7cc3ebdf55 hashcat Crack Progress
Former-commit-id: d3a55c66825a25684102ef5e2361d8ac864f80b1
2024-03-06 15:04:09 +08:00
zhangweiii 01fca333d9 Merge pull request 'hashcat' (#32) from zhangweiii/pcm-coordinator:v0.1.0-xjlab-alpha1 into v0.1.0-xjlab-alpha1
Former-commit-id: 5cccf59c08402261b863dc65c005d0065df02579
2024-02-29 17:39:46 +08:00
zhangwei 72d29eccff hashcat
Former-commit-id: 63709a57586d197b727400ffce74260281d3a246
2024-02-29 17:36:16 +08:00
zhangweiii 16b55c27b8 Merge pull request 'Modify the input parameter information of some interfaces, and some fields are not required.' (#16) from zhangweiii/pcm-coordinator:v0.1.0-xjlab-alpha1 into v0.1.0-xjlab-alpha1
Former-commit-id: b2d328e8f0a858321df8cf3a55f835b54b2daea2
2024-01-30 09:52:09 +08:00
zhangwei 1631dc2042 Modify the input parameter information of some interfaces, and some fields are not required.
Former-commit-id: 1909b103840b716894c8749e5bcbac13d81ecd06
2024-01-30 09:47:41 +08:00
devad ed5be1c6a5 Fix ci/cd bug
Former-commit-id: c71f4288f56c220fcb2096657207570078993f53
2024-01-24 11:22:19 +08:00
zhangweiii 39e8759eab Merge pull request 'Resource Center Data Display' (#9) from zhangweiii/pcm-coordinator:v0.1.0-xjlab-alpha1 into v0.1.0-xjlab-alpha1
Former-commit-id: a7889f9a572557cc238f96fa76693f5f03a95c92
2024-01-24 11:15:12 +08:00
jagger 5d24fffffa fix: ci/cd bug
Closes #10

Signed-off-by: jagger <cossjie@foxmail.com>

Former-commit-id: e6861b1281fba85d818244a26f8e7391ff735a53
2024-01-24 11:10:28 +08:00
zhangwei 373a347ea6 fix bug
Former-commit-id: 9c7262a85ad9248a248fd231adcdcb76bd7283e6
2024-01-24 09:53:05 +08:00
zhangwei e8a9843dd0 Resource Monitoring
Former-commit-id: 77df78146a1f62018fe384a9ae71711b886b7d00
2024-01-23 17:33:15 +08:00
zw b81e3a7c67 task data statistics
Former-commit-id: 452e9c8d48901f5cedb6dd71423a1a8794a38f4a
2024-01-22 23:43:58 +08:00
zhangwei 94bc201d64 数据库连接修改
Former-commit-id: a0f0ba37736c2eb7221e4f693a2ab80b0b4d1187
2024-01-10 09:18:08 +08:00
zhangwei 42dc5c9e78 数据库连接修改
Former-commit-id: 613dff8be7d147969238205b899fd62c57315e75
2024-01-09 12:49:28 +08:00
devad 30398b213f 数据库连接失败终止程序
Signed-off-by: devad <cossjie@foxmail.com>

Former-commit-id: 07434ec796bc7330213f9f06fc506840119c215d
2024-01-09 09:36:28 +08:00
zhangwei 879b35b6a6 分支名称修改
Former-commit-id: a4be0f3f3e58b77e157db862f551b5f3d4f8855c
2024-01-03 16:12:15 +08:00
zhangwei 4d9b7c2083 hashCat展示修改
Former-commit-id: a6ad67b3d6993ab60b8ab62c03a66dc08dd72608
2023-12-14 17:14:43 +08:00
zhangwei 347313fb14 hashCat展示修改
Former-commit-id: 9d8eb73a9398431b66e18415173411b65b6643e0
2023-12-14 17:00:48 +08:00
zhangwei 42fc9e7f39 hashCat保存添加字段
Former-commit-id: 2825ee25444c73b858921076cd5260d2c151608a
2023-12-14 15:06:42 +08:00
zhangwei 28a661dc08 hashCat保存添加字段
Former-commit-id: fd1f09aaf66564d75189a9d12a8750a0192bb4f4
2023-12-14 12:28:59 +08:00
zhangwei 1a022a51a1 Merge remote-tracking branch 'origin/JCOS' into JCOS
Former-commit-id: bcc9e442f8942c4e93add88a630858ba2446ae74
2023-12-13 10:25:44 +08:00
zhangwei 0f6f75b4b5 修改依赖版本
Former-commit-id: 9ee542354384fbb1a4cb63ba95de9060c3469191
2023-12-13 10:25:30 +08:00
devad c452dce02f update Dockerfile
Signed-off-by: devad <cossjie@foxmail.com>

Former-commit-id: 02cd52424377d61eff90a99c7a9508a2214e91df
2023-12-13 08:56:55 +08:00
zw b0282b5bcd 修改配置信息
Former-commit-id: ca562623b920a98997ed6ed85eeec997e51f7c96
2023-12-12 22:54:15 +08:00
zw 7af196767d 修改配置信息
Former-commit-id: 9c748f70a48856f7eec96a58c52f5f6a354c80a4
2023-12-12 22:35:59 +08:00
zhangwei 4425e875d3 添加错误返回
Former-commit-id: a5483133b3006d127cc14c179bf8593389f58a5c
2023-12-12 18:25:24 +08:00
zhangwei 6d6ccd6989 修改配置
Former-commit-id: 35ca35173036f5467f5719a5ab1ae15230db227b
2023-12-12 18:17:35 +08:00
zhangwei 2279a03fe8 修改配置
Former-commit-id: 1a63fdb8a0d001c5e619494c197b1d9f67fafd47
2023-12-12 18:09:40 +08:00
zhangwei d2138044b5 修改配置
Former-commit-id: 97fb1e1ff7eb7010a058392f6f3c028223187136
2023-12-12 17:24:34 +08:00
zhangwei 24b5e02cdd 修改配置
Former-commit-id: 9db37eb26e503c285b24e5cf6ce65d267e1fbcc5
2023-12-12 16:47:58 +08:00
zhangwei 6fa4d198b5 删除无用字段
Former-commit-id: ab05573006b42fec7774c0c1c7bf12b0befed79e
2023-12-12 16:28:37 +08:00
zhangwei 4a1428fa65 删除无用字段
Former-commit-id: 92e6cce35c0193a5d8a6d161ee8391156135667c
2023-12-12 16:20:48 +08:00
zhangwei 767c692a36 sql日志输出
Former-commit-id: eece076749180c55cf5b349ca0fcfd4a1ba8c555
2023-12-12 15:43:25 +08:00
zhangwei 344b8aaf48 修改配置
Former-commit-id: 6c24bf2812d4f15eac35a47056ecc9a2958d81a8
2023-12-12 11:10:23 +08:00
zhangwei febdf409da 移除nacos
Former-commit-id: e14474817f56db006ac29206ac6c9fe7b855d45e
2023-12-12 10:04:50 +08:00
zhangwei 39f5964d40 nacos配置修改
Former-commit-id: aed08e27f6e71a447a6dd2016314695d2d69c574
2023-12-11 16:53:10 +08:00
36 changed files with 676 additions and 489 deletions

View File

@ -1,107 +0,0 @@
version: 2
name: rpc
description: ""
global:
concurrent: 1
param:
- ref: deploy_path
name: deploy_path
value: '"pcm-coordinator-rpc.yaml"'
required: false
type: STRING
hidden: false
- ref: nacos_host
name: nacos_host
value: '"10.206.0.12"'
required: false
type: STRING
hidden: false
- ref: secret_name
name: ""
value: '"jcce-aliyuncs"'
required: false
type: STRING
hidden: false
- ref: project_name
name: ""
value: '"pcm-coordinator-rpc"'
required: false
type: STRING
hidden: false
trigger:
webhook: gitlink@1.0.0
event:
- ref: create_tag
ruleset:
- param-ref: tag
operator: EQ
value: '""'
ruleset-operator: AND
workflow:
- ref: start
name: 开始
task: start
- ref: git_clone_0
name: git clone
task: git_clone@1.2.6
input:
remote_url: '"https://gitlink.org.cn/jcce-pcm/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-coordinator-rpc"'
image_tag: git_clone_0.commit_time
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
docker_file: git_clone_0.git_path + '/rpc/Dockerfile'
docker_build_path: git_clone_0.git_path
workspace: git_clone_0.git_path
image_clean: true
image_push: true
build_args: '""'
needs:
- shell_0
- ref: end
name: 结束
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 + '/rpc'
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:
- docker_image_build_0
- ref: shell_0
name: shell
image: docker.jianmuhub.com/library/debian:buster-slim
env:
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-coordinator-rpc"'
IMAGE_TAG: git_clone_0.commit_time
SECRET_NAME: global.secret_name
NACOS_HOST: global.nacos_host
PROJECT_NAME: global.project_name
PROJECT_PATH: git_clone_0.git_path
script:
- cd ${PROJECT_PATH}/rpc
- sed -i "s#image_name#${IMAGE_NAME}:${IMAGE_TAG}#" ${PROJECT_NAME}.yaml
- sed -i "s#secret_name#${SECRET_NAME}#" ${PROJECT_NAME}.yaml
- sed -i "s#nacos_host#${NACOS_HOST}#" ${PROJECT_NAME}.yaml
- cat ${PROJECT_NAME}.yaml
needs:
- git_clone_0

View File

@ -1,5 +1,5 @@
version: 2
name: api
name: xjlab-api
description: ""
global:
concurrent: 1
@ -10,12 +10,6 @@ global:
required: false
type: STRING
hidden: false
- ref: nacos_host
name: nacos_host
value: '"10.206.0.12"'
required: false
type: STRING
hidden: false
- ref: secret_name
name: ""
value: '"jcce-aliyuncs"'
@ -45,8 +39,8 @@ workflow:
name: git clone
task: git_clone@1.2.6
input:
remote_url: '"https://gitlink.org.cn/jcce-pcm/pcm-coordinator.git"'
ref: '"refs/heads/master"'
remote_url: '"https://gitlink.org.cn/JointCloud/pcm-coordinator.git"'
ref: '"refs/heads/v0.1.0-xjlab-alpha1"'
commit_id: '""'
depth: 1
needs:
@ -93,14 +87,12 @@ workflow:
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/pcm-coordinator-api"'
IMAGE_TAG: git_clone_0.commit_time
SECRET_NAME: global.secret_name
NACOS_HOST: global.nacos_host
PROJECT_NAME: global.project_name
PROJECT_PATH: git_clone_0.git_path
script:
- cd ${PROJECT_PATH}/api
- sed -i "s#image_name#${IMAGE_NAME}:${IMAGE_TAG}#" ${PROJECT_NAME}.yaml
- sed -i "s#secret_name#${SECRET_NAME}#" ${PROJECT_NAME}.yaml
- sed -i "s#nacos_host#${NACOS_HOST}#" ${PROJECT_NAME}.yaml
- cat ${PROJECT_NAME}.yaml
needs:
- git_clone_0

View File

@ -1,15 +1,22 @@
FROM golang:1.20.2-alpine3.17 AS builder
WORKDIR /app
FROM golang:1.21.2-alpine3.18 AS builder
LABEL stage=gobuilder
ENV CGO_ENABLED 0
ENV GOARCH amd64
ENV GOPROXY https://goproxy.cn,direct
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.sjtug.sjtu.edu.cn/g' /etc/apk/repositories && \
apk update --no-cache && apk add --no-cache tzdata
WORKDIR /app
ADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
COPY api/etc/ /app/
RUN go mod download && go build -o pcm-coordinator-api /app/api/pcm.go
RUN go build -o pcm-coordinator-api /app/api/pcm.go
FROM alpine:3.16.2

View File

@ -6,6 +6,50 @@ info(
author: "zhouqj"
email: "450705171@qq.com"
)
type (
resourceCenterInfoReq {
participantId int64 `path:"participantId"`
}
resourceCenterInfoResp {
tasksName []string `json:"tasksName"`
runningTasksNum int64 `json:"runningTasksNum"`
resourceUsage ResourceUsage `json:"resourceUsage"`
resourceTotal ResourceTotal `json:"resourceTotal"`
}
ResourceUsage {
cpu float64 `json:"cpu"`
memory float64 `json:"memory"`
storage float64 `json:"storage"`
}
ResourceTotal {
cpu int64 `json:"cpu"`
memory int64 `json:"memory"`
storage int64 `json:"storage"`
}
)
type (
tasksNumReq {
}
tasksNumResp {
totalNum int64 `json:"totalNum"`
runningNum int64 `json:"runningNum"`
completedNum int64 `json:"completedNum"`
}
)
type (
tasksNumReq {
}
tasksNumResp {
totalNum int64 `json:"totalNum"`
runningNum int64 `json:"runningNum"`
completedNum int64 `json:"completedNum"`
}
)
type (
submitJobReq {
@ -521,16 +565,41 @@ type NodeAsset {
ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id
}
type crackProgressResp {
crackProgressList []CrackProgress `json:"crackProgressList"`
}
type CrackProgress {
Name string `json:"name"`
Progress string `json:"progress"`
Current string `json:"current"`
Total string `json:"total"`
Speed string `json:"speed"`
}
type SaveHashcatReq {
CrackTaskId string `json:"crackTaskId"` // 任务id
CrackContainerId string `json:"crackContainerId"` // 容器id
CrackStatus string `json:"crackStatus"` // 状态
CrackStartTime string `json:"crackStartTime"` //开始时间
CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间
CrackProgress string `json:"crackProgress"` // 进度
CrackResult string `json:"crackResult"` // 结果
Started string `json:"started"` // 开始时间
Stopped string `json:"stopped"` // 结束时间
CrackTaskId string `json:"crackTaskId"` // 任务id
CrackContainerId string `json:"crackContainerId"` // 容器id
CrackStatus string `json:"crackStatus"` // 状态
CrackStartTime string `json:"crackStartTime"` //开始时间
CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间
CrackProgress string `json:"crackProgress"` // 进度
CrackResult string `json:"crackResult"` // 结果
Started string `json:"started,optional"` // 开始时间
Stopped string `json:"stopped,optional"` // 结束时间
KernelFeature string `json:"kernelFeature"`
HashMode string `json:"hashMode"`
Rejected string `json:"rejected"`
Session string `json:"session"`
HashTarget string `json:"hashTarget"`
Speed string `json:"speed"`
Candidates string `json:"candidates"`
RestorePoint string `json:"restorePoint"`
Recovered string `json:"recovered"`
GuessQueue string `json:"guessQueue"`
CandidateEngine string `json:"candidateEngine"`
GuessMask string `json:"guessMask"`
RestoreSub string `json:"restoreSub"`
}
type getHashcatHandlerReq {
@ -538,10 +607,6 @@ type getHashcatHandlerReq {
}
type getHashcatHandlerResp {
HashCatList []HashCat `json:"hashCatList"`
}
type HashCat {
CrackTaskId string `json:"crackTaskId"` // 任务id
CrackContainerId string `json:"crackContainerId"` // 容器id
CrackStatus string `json:"crackStatus"` // 状态
@ -551,8 +616,23 @@ type HashCat {
CrackResult string `json:"crackResult"` // 结果
Started string `json:"started"` // 开始时间
Stopped string `json:"stopped"` // 结束时间
KernelFeature string `json:"kernelFeature"`
HashMode string `json:"hashMode"`
Rejected string `json:"rejected"`
Session string `json:"session"`
HashTarget string `json:"hashTarget"`
Speed string `json:"speed"`
Candidates string `json:"candidates"`
RestorePoint string `json:"restorePoint"`
Recovered string `json:"recovered"`
GuessQueue string `json:"guessQueue"`
CandidateEngine string `json:"candidateEngine"`
GuessMask string `json:"guessMask"`
RestoreSub string `json:"restoreSub"`
}
type participantListResp {
Participants []Participant `json:"participants"`
}

View File

@ -23,6 +23,7 @@ info(
prefix: pcm/v1
group : core
)
service pcm {
@doc "查询P端服务列表"
@handler participantListHandler
@ -42,7 +43,7 @@ service pcm {
@doc "查询任务列表"
@handler TaskListHandler
get /core/taskList (taskListReq)returns (taskListResp)
get /core/taskList (taskListReq) returns (taskListResp)
@doc "查询任务详情"
@handler TaskDetailHandler
@ -104,9 +105,25 @@ service pcm {
@handler saveHashcatHandler
post /core/saveHashcat (SaveHashcatReq)
@doc "Task Data Statistics"
@handler tasksNumHandler
get /core/tasks/num (tasksNumReq) returns (tasksNumResp)
@doc "获取hashcat"
@handler getHashcatHandler
get /core/getHashcat/:crackTaskId (getHashcatHandlerReq) returns (getHashcatHandlerResp)
@doc "Task Count Statistics"
@handler tasksNumHandler
get /core/tasks/num (tasksNumReq) returns (tasksNumResp)
@doc "Hashcat Crack Progress"
@handler crackProgressHandler
get /core/crack/progress returns (crackProgressResp)
@doc "Resource Center Information"
@handler resourceCenterInfoHandler
get /core/center/resource/:participantId (resourceCenterInfoReq) returns (resourceCenterInfoResp)
}
//hpc二级接口
@ -466,7 +483,7 @@ service pcm {
@doc "查询节点详情"
@handler ShowNodeDetailsHandler
get /vm/showNodeDetails (ShowNodeDetailsReq) returns (ShowNodeDetailsResp)
get /vm/showNodeDetails (ShowNodeDetailsReq) returns (ShowNodeDetailsResp)
}
//存算联动 接口

View File

@ -1,18 +1,97 @@
NacosConfig:
DataId: pcm-core-api.yaml
Group: DEFAULT_GROUP
ServerConfigs:
# - IpAddr: 127.0.0.1
# Port: 8848
# - IpAddr: 10.101.15.7
# Port: 8848
- IpAddr: 119.45.100.73
Port: 8848
ClientConfig:
NamespaceId: tzwang
# NamespaceId: test
TimeoutMs: 5000
NotLoadCacheAtStart: true
LogDir:
CacheDir:
LogLevel: debug
Name: pcm.core.api
Host: 0.0.0.0
Port: 8999
Timeout: 50000
DB:
DataSource: root:uJpLd6u-J?HC1@(10.206.0.7:3306)/pcm?parseTime=true&loc=Local
Redis:
Host: 10.206.0.7:6379
Pass: redisPW123
Cache:
- Host: 10.206.0.7:6379
Pass: redisPW123
# k8s rpc
K8sNativeConf:
# target: nacos://10.206.0.12:8848/pcm.kubenative.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
Endpoints:
- pcm-participant-kubernetes-service:2003
NonBlock: true
#rpc
THRpcConf:
target: nacos://10.206.0.12:8848/pcm.th.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
#rpc
ModelArtsRpcConf:
target: nacos://10.206.0.12:8848/pcm.modelarts.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
#rpc
ModelArtsImgRpcConf:
target: nacos://10.206.0.12:8848/pcm.modelarts.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
#rpc
ACRpcConf:
target: nacos://10.206.0.12:8848/pcm.ac.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
Timeout: 20000
#rpc
CephRpcConf:
# target: nacos://10.206.0.12:8848/pcm.ceph.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
Endpoints:
- pcm-participant-ceph-service:2008
NonBlock: true
Timeout: 50000
OctopusRpcConf:
target: nacos://10.206.0.12:8848/pcm.octopus.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
Timeout: 20000
OpenstackRpcConf:
target: nacos://10.206.0.12:8848/pcm.openstack.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
Timeout: 20000
# core rpc
PcmCoreRpcConf:
target: nacos://10.206.0.12:8848/pcm.core.rpc?timeout=30s&namespaceid=test&groupname=DEFAULT_GROUP&appName=pcm.core.api
# Endpoints:
# - 127.0.0.1:8888
NonBlock: true
Timeout: 20000
JccScheduleUrl: http://jcce-schedule-service:8082
MinioConf:
Secret: minio_xnu122@_
AccessKey: minioadmin
Endpoint: http://121.89.220.60:9000
RegistryConf:
Username: jointcloudNudt
Password: Nudt@123
SnowflakeConf:
MachineId: 1

View File

@ -16,7 +16,6 @@ package config
import (
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/rest"
"github.com/zeromicro/go-zero/zrpc"
@ -28,7 +27,6 @@ type Config struct {
DataSource string
}
Redis redis.RedisConf
Cache cache.CacheConf
LogConf logx.LogConf
K8sNativeConf zrpc.RpcClientConf
ACRpcConf zrpc.RpcClientConf
@ -39,7 +37,6 @@ type Config struct {
OpenstackRpcConf zrpc.RpcClientConf
OctopusRpcConf zrpc.RpcClientConf
PcmCoreRpcConf zrpc.RpcClientConf
NexusUrl string
JccScheduleUrl string
MinioConf struct {
Secret string

View File

@ -0,0 +1,17 @@
package core
import (
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/repository/result"
"net/http"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
)
func CrackProgressHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := core.NewCrackProgressLogic(r.Context(), svcCtx)
resp, err := l.CrackProgress()
result.HttpResult(r, w, resp, err)
}
}

View File

@ -0,0 +1,25 @@
package core
import (
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/repository/result"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
)
func ResourceCenterInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.ResourceCenterInfoReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := core.NewResourceCenterInfoLogic(r.Context(), svcCtx)
resp, err := l.ResourceCenterInfo(&req)
result.HttpResult(r, w, resp, err)
}
}

View File

@ -0,0 +1,25 @@
package core
import (
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/repository/result"
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
)
func TasksNumHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.TasksNumReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := core.NewTasksNumLogic(r.Context(), svcCtx)
resp, err := l.TasksNum(&req)
result.HttpResult(r, w, resp, err)
}
}

View File

@ -125,6 +125,21 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
Path: "/core/getHashcat/:crackTaskId",
Handler: core.GetHashcatHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/core/tasks/num",
Handler: core.TasksNumHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/core/crack/progress",
Handler: core.CrackProgressHandler(serverCtx),
},
{
Method: http.MethodGet,
Path: "/core/center/resource/:participantId",
Handler: core.ResourceCenterInfoHandler(serverCtx),
},
},
rest.WithPrefix("/pcm/v1"),
)

View File

@ -0,0 +1,52 @@
package core
import (
"context"
"strings"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type CrackProgressLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewCrackProgressLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CrackProgressLogic {
return &CrackProgressLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *CrackProgressLogic) CrackProgress() (resp *types.CrackProgressResp, err error) {
// todo: add your logic here and delete this line
result := types.CrackProgressResp{}
var crackProgressList []*types.CrackProgress
tx := l.svcCtx.DbEngin.Raw("SELECT h.id, h.speed, h.crack_progress as progress,c.`name` \nFROM t_hashcat h \nJOIN ( \n SELECT crack_task_id, MAX(id) as max_id \n FROM t_hashcat \n GROUP BY crack_task_id \n) AS sub_query ON h.crack_task_id = sub_query.crack_task_id AND h.id = sub_query.max_id \nJOIN cloud c ON h.crack_task_id = c.`name`").Scan(&crackProgressList)
if tx.Error != nil {
return nil, tx.Error
}
for _, crackProgress := range crackProgressList {
if len(crackProgress.Speed) != 0 {
str1 := strings.Split(crackProgress.Speed, "@")
crackProgress.Speed = str1[0]
}
if len(crackProgress.Progress) != 0 {
str1 := strings.Split(crackProgress.Progress, "/")
crackProgress.Current = str1[0]
str2 := strings.Split(str1[1], " (")
crackProgress.Total = str2[0]
str3 := strings.Split(str2[1], "%")
crackProgress.Progress = str3[0]
}
result.CrackProgressList = append(result.CrackProgressList, *crackProgress)
}
return &result, nil
}

View File

@ -39,12 +39,12 @@ func NewGetHashcatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetHas
func (l *GetHashcatLogic) GetHashcat(req *types.GetHashcatHandlerReq) (resp *types.GetHashcatHandlerResp, err error) {
// todo: add your logic here and delete this line
var hashcatList []*models.THashcat
tx := l.svcCtx.DbEngin.Where("crack_task_id = ?", req.CrackTaskId).Find(&hashcatList)
var hashcat *models.THashcat
tx := l.svcCtx.DbEngin.Where("crack_task_id = ?", req.CrackTaskId).Order("id desc").Limit(1).Find(&hashcat)
if tx.Error != nil {
return nil, tx.Error
}
result := types.GetHashcatHandlerResp{}
utils.Convert(hashcatList, &result.HashCatList)
utils.Convert(hashcat, &result)
return &result, nil
}

View File

@ -0,0 +1,37 @@
package core
import (
"context"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type ResourceCenterInfoLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewResourceCenterInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ResourceCenterInfoLogic {
return &ResourceCenterInfoLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ResourceCenterInfoLogic) ResourceCenterInfo(req *types.ResourceCenterInfoReq) (resp *types.ResourceCenterInfoResp, err error) {
// todo: add your logic here and delete this line
resp = &types.ResourceCenterInfoResp{}
l.svcCtx.DbEngin.Raw("select count(t.id) from task t,cloud c where c.task_id = t.id and c.participant_id = ? and t.status = ?", req.ParticipantId, "Running").Scan(&resp.RunningTasksNum)
l.svcCtx.DbEngin.Raw("select t.name from task t,cloud c where c.task_id = t.id and c.participant_id = ?", req.ParticipantId).Scan(&resp.TasksName)
l.svcCtx.DbEngin.Raw("select SUm(cpu_total) as cpu,sum(mem_total) as memory,SUM(disk_total) as storage FROM sc_node_avail_info where participant_id = ? GROUP BY created_time ORDER BY created_time desc LIMIT 1", req.ParticipantId).Scan(&resp.ResourceTotal)
l.svcCtx.DbEngin.Raw("select IFNULL(SUM(cpu_usable)/COUNT(*),0)as cpu,IFNULL(sum(mem_avail)/SUM(mem_total),0) as memory,IFNULL(sum(disk_avail)/SUM(disk_total),0) as storage FROM sc_node_avail_info where cpu_total != 0 and participant_id = ? GROUP BY created_time ORDER BY created_time desc LIMIT 1", req.ParticipantId).Scan(&resp.ResourceUsage)
return
}

View File

@ -38,10 +38,10 @@ func NewSaveHashcatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SaveH
}
func (l *SaveHashcatLogic) SaveHashcat(req *types.SaveHashcatReq) error {
var hashcat models.THashcat
utils.Convert(req, &hashcat)
hashcat.Id = utils.GenSnowflakeID()
tx := l.svcCtx.DbEngin.Save(hashcat)
var hashCat models.THashcat
utils.Convert(req, &hashCat)
hashCat.Id = utils.GenSnowflakeID()
tx := l.svcCtx.DbEngin.Save(hashCat)
if tx.Error != nil {
return tx.Error
}

View File

@ -0,0 +1,32 @@
package core
import (
"context"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type TasksNumLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewTasksNumLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TasksNumLogic {
return &TasksNumLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *TasksNumLogic) TasksNum(req *types.TasksNumReq) (resp *types.TasksNumResp, err error) {
resp = &types.TasksNumResp{}
l.svcCtx.DbEngin.Raw("select count(*) from task ").Scan(&resp.TotalNum)
l.svcCtx.DbEngin.Raw("select count(*) from task where status ='Running' ").Scan(&resp.RunningNum)
l.svcCtx.DbEngin.Raw("select count(*) from task where status ='Completed' ").Scan(&resp.CompletedNum)
return resp, nil
}

View File

@ -77,11 +77,15 @@ func NewServiceContext(c config.Config) *ServiceContext {
downloader := s3manager.NewDownloader(session)
uploader := s3manager.NewUploader(session)
//启动Gorm支持
dbEngin, _ := gorm.Open(mysql.Open(c.DB.DataSource), &gorm.Config{
dbEngin, err := gorm.Open(mysql.Open(c.DB.DataSource), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `t_user`
},
})
if err != nil {
logx.Error("gorm初始化错误", err.Error())
return nil
}
dockerClient, err := client.NewClientWithOpts()
if err != nil {
logx.Error(err.Error())

View File

@ -1,6 +1,38 @@
// Code generated by goctl. DO NOT EDIT.
package types
type ResourceCenterInfoReq struct {
ParticipantId int64 `path:"participantId"`
}
type ResourceCenterInfoResp struct {
TasksName []string `json:"tasksName"`
RunningTasksNum int64 `json:"runningTasksNum"`
ResourceUsage ResourceUsage `json:"resourceUsage"`
ResourceTotal ResourceTotal `json:"resourceTotal"`
}
type ResourceUsage struct {
Cpu float64 `json:"cpu"`
Memory float64 `json:"memory"`
Storage float64 `json:"storage"`
}
type ResourceTotal struct {
Cpu int64 `json:"cpu"`
Memory int64 `json:"memory"`
Storage int64 `json:"storage"`
}
type TasksNumReq struct {
}
type TasksNumResp struct {
TotalNum int64 `json:"totalNum"`
RunningNum int64 `json:"runningNum"`
CompletedNum int64 `json:"completedNum"`
}
type SubmitJobReq struct {
SlurmVersion string `json:"slurmVersion"`
Apptype string `json:"apptype,optional"`
@ -485,6 +517,18 @@ type NodeAsset struct {
ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id
}
type CrackProgressResp struct {
CrackProgressList []CrackProgress `json:"crackProgressList"`
}
type CrackProgress struct {
Name string `json:"name"`
Progress string `json:"progress"`
Current string `json:"current"`
Total string `json:"total"`
Speed string `json:"speed"`
}
type SaveHashcatReq struct {
CrackTaskId string `json:"crackTaskId"` // 任务id
CrackContainerId string `json:"crackContainerId"` // 容器id
@ -493,8 +537,21 @@ type SaveHashcatReq struct {
CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间
CrackProgress string `json:"crackProgress"` // 进度
CrackResult string `json:"crackResult"` // 结果
Started string `json:"started"` // 开始时间
Stopped string `json:"stopped"` // 结束时间
Started string `json:"started,optional"` // 开始时间
Stopped string `json:"stopped,optional"` // 结束时间
KernelFeature string `json:"kernelFeature"`
HashMode string `json:"hashMode"`
Rejected string `json:"rejected"`
Session string `json:"session"`
HashTarget string `json:"hashTarget"`
Speed string `json:"speed"`
Candidates string `json:"candidates"`
RestorePoint string `json:"restorePoint"`
Recovered string `json:"recovered"`
GuessQueue string `json:"guessQueue"`
CandidateEngine string `json:"candidateEngine"`
GuessMask string `json:"guessMask"`
RestoreSub string `json:"restoreSub"`
}
type GetHashcatHandlerReq struct {
@ -502,10 +559,6 @@ type GetHashcatHandlerReq struct {
}
type GetHashcatHandlerResp struct {
HashCatList []HashCat `json:"hashCatList"`
}
type HashCat struct {
CrackTaskId string `json:"crackTaskId"` // 任务id
CrackContainerId string `json:"crackContainerId"` // 容器id
CrackStatus string `json:"crackStatus"` // 状态
@ -515,6 +568,19 @@ type HashCat struct {
CrackResult string `json:"crackResult"` // 结果
Started string `json:"started"` // 开始时间
Stopped string `json:"stopped"` // 结束时间
KernelFeature string `json:"kernelFeature"`
HashMode string `json:"hashMode"`
Rejected string `json:"rejected"`
Session string `json:"session"`
HashTarget string `json:"hashTarget"`
Speed string `json:"speed"`
Candidates string `json:"candidates"`
RestorePoint string `json:"restorePoint"`
Recovered string `json:"recovered"`
GuessQueue string `json:"guessQueue"`
CandidateEngine string `json:"candidateEngine"`
GuessMask string `json:"guessMask"`
RestoreSub string `json:"restoreSub"`
}
type ParticipantListResp struct {

View File

@ -16,10 +16,6 @@ spec:
labels:
k8s-app: pcm-coordinator-api
spec:
hostAliases:
- hostnames:
- nacos.jcce.dev
ip: nacos_host
imagePullSecrets:
- name: secret_name
containers:

View File

@ -26,7 +26,6 @@ import (
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/mqs"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
commonConfig "gitlink.org.cn/jcce-pcm/utils/nacos"
)
var configFile = flag.String("f", "api/etc/pcm.yaml", "the config file")
@ -34,26 +33,8 @@ var configFile = flag.String("f", "api/etc/pcm.yaml", "the config file")
func main() {
flag.Parse()
var bootstrapConfig commonConfig.BootstrapConfig
conf.MustLoad(*configFile, &bootstrapConfig)
//解析业务配置
var c config.Config
nacosConfig := bootstrapConfig.NacosConfig
serviceConfigContent := nacosConfig.InitConfig(func(data string) {
err := conf.LoadFromYamlBytes([]byte(data), &c)
if err != nil {
panic(err)
}
})
err := conf.LoadFromYamlBytes([]byte(serviceConfigContent), &c)
if err != nil {
panic(err)
}
// 注册到nacos
nacosConfig.DiscoveryRest(&c.RestConf)
conf.MustLoad(*configFile, &c)
serviceGroup := service.NewServiceGroup()
defer serviceGroup.Stop()

4
go.mod
View File

@ -36,8 +36,8 @@ require (
google.golang.org/grpc v1.59.0
google.golang.org/protobuf v1.31.0
gorm.io/datatypes v1.2.0
gorm.io/driver/mysql v1.5.2
gorm.io/gorm v1.25.5
gorm.io/driver/mysql v1.5.0
gorm.io/gorm v1.25.4
k8s.io/apimachinery v0.28.3
k8s.io/client-go v0.28.3
sigs.k8s.io/yaml v1.4.0

10
go.sum
View File

@ -1729,14 +1729,14 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/datatypes v1.2.0 h1:5YT+eokWdIxhJgWHdrb2zYUimyk0+TaFth+7a0ybzco=
gorm.io/datatypes v1.2.0/go.mod h1:o1dh0ZvjIjhH/bngTpypG6lVRJ5chTBxE09FH/71k04=
gorm.io/driver/mysql v1.5.2 h1:QC2HRskSE75wBuOxe0+iCkyJZ+RqpudsQtqkp+IMuXs=
gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb8=
gorm.io/driver/mysql v1.5.0 h1:6hSAT5QcyIaty0jfnff0z0CLDjyRgZ8mlMHLqSt7uXM=
gorm.io/driver/mysql v1.5.0/go.mod h1:FFla/fJuCvyTi7rJQd27qlNX2v3L6deTR1GgTjSOLPo=
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU=
gorm.io/driver/sqlserver v1.4.1 h1:t4r4r6Jam5E6ejqP7N82qAJIJAht27EGT41HyPfXRw0=
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw=
gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@ -1,41 +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 models
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ ScQueuePhyInfoModel = (*customScQueuePhyInfoModel)(nil)
type (
// ScQueuePhyInfoModel is an interface to be customized, add more methods here,
// and implement the added methods in customScQueuePhyInfoModel.
ScQueuePhyInfoModel interface {
scQueuePhyInfoModel
}
customScQueuePhyInfoModel struct {
*defaultScQueuePhyInfoModel
}
)
// NewScQueuePhyInfoModel returns a models for the database table.
func NewScQueuePhyInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) ScQueuePhyInfoModel {
return &customScQueuePhyInfoModel{
defaultScQueuePhyInfoModel: newScQueuePhyInfoModel(conn, c, opts...),
}
}

View File

@ -5,14 +5,10 @@ package models
import (
"context"
"database/sql"
"fmt"
"strings"
"time"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
@ -39,102 +35,27 @@ type (
}
ScQueuePhyInfo struct {
Id int64 `db:"id"` // id
AclHosts string `db:"aclHosts"` // 可用节点,多个节点用逗号隔开
QueueId string `db:"queue_id"` // 队列名称
Text string `db:"text"` // 队列名称
QueueName string `db:"queue_name"` // 队列名称
QueNodes string `db:"que_nodes"` // 队列节点总数
QueMinNodect string `db:"que_min_nodect"` // 队列最小节点数
QueMaxNgpus string `db:"que_max_ngpus"` // 队列最大GPU卡数
QueMaxPpn string `db:"que_max_ppn"` // 使用该队列作业最大CPU核心数
QueChargeRate string `db:"que_charge_rate"` // 费率
QueMaxNcpus string `db:"que_max_ncpus"` // 用户最大可用核心数
QueMaxNdcus string `db:"que_max_ndcus"` // 队列总DCU卡数
QueMinNcpus string `db:"que_min_ncpus"` // 队列最小CPU核数
QueFreeNodes string `db:"que_free_nodes"` // 队列空闲节点数
QueMaxNodect string `db:"que_max_nodect"` // 队列作业最大节点数
QueMaxGpuPN string `db:"que_max_gpu_PN"` // 队列单作业最大GPU卡数
QueMaxWalltime string `db:"que_max_walltime"` // 队列最大运行时间
QueMaxDcuPN string `db:"que_max_dcu_PN"` // 队列单作业最大DCU卡数
ParticipantId int64 `db:"participant_id"` // 集群动态信息id
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
QueNcpus string `db:"que_ncpus"`
QueFreeNcpus string `db:"que_free_ncpus"`
CreatedBy sql.NullInt64 `db:"created_by"` // 创建人
CreatedTime time.Time `db:"created_time"` // 创建时间
UpdatedBy sql.NullInt64 `db:"updated_by"` // 更新人
UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间
Id int64 `db:"id"` // id
AclHosts string `db:"aclHosts"` // 可用节点,多个节点用逗号隔开
QueueId string `db:"queue_id"` // 队列名称
Text string `db:"text"` // 队列名称
QueueName string `db:"queue_name"` // 队列名称
QueNodes string `db:"que_nodes"` // 队列节点总数
QueMinNodect string `db:"que_min_nodect"` // 队列最小节点数
QueMaxNgpus string `db:"que_max_ngpus"` // 队列最大GPU卡数
QueMaxPpn string `db:"que_max_ppn"` // 使用该队列作业最大CPU核心数
QueChargeRate string `db:"que_charge_rate"` // 费率
QueMaxNcpus string `db:"que_max_ncpus"` // 用户最大可用核心数
QueMaxNdcus string `db:"que_max_ndcus"` // 队列总DCU卡数
QueMinNcpus string `db:"que_min_ncpus"` // 队列最小CPU核数
QueFreeNodes string `db:"que_free_nodes"` // 队列空闲节点数
QueMaxNodect string `db:"que_max_nodect"` // 队列作业最大节点数
QueMaxGpuPN string `db:"que_max_gpu_PN"` // 队列单作业最大GPU卡数
QueMaxWalltime string `db:"que_max_walltime"` // 队列最大运行时间
QueMaxDcuPN string `db:"que_max_dcu_PN"` // 队列单作业最大DCU卡数
ParticipantId int64 `db:"participant_id"` // 集群动态信息id
DeletedFlag int64 `db:"deleted_flag"` // 是否删除
QueNcpus string `db:"que_ncpus"`
QueFreeNcpus string `db:"que_free_ncpus"`
}
)
func newScQueuePhyInfoModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultScQueuePhyInfoModel {
return &defaultScQueuePhyInfoModel{
CachedConn: sqlc.NewConn(conn, c, opts...),
table: "`sc_queue_phy_info`",
}
}
func (m *defaultScQueuePhyInfoModel) withSession(session sqlx.Session) *defaultScQueuePhyInfoModel {
return &defaultScQueuePhyInfoModel{
CachedConn: m.CachedConn.WithSession(session),
table: "`sc_queue_phy_info`",
}
}
func (m *defaultScQueuePhyInfoModel) Delete(ctx context.Context, id int64) error {
pcmScQueuePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScQueuePhyInfoIdPrefix, id)
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
return conn.ExecCtx(ctx, query, id)
}, pcmScQueuePhyInfoIdKey)
return err
}
func (m *defaultScQueuePhyInfoModel) FindOne(ctx context.Context, id int64) (*ScQueuePhyInfo, error) {
pcmScQueuePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScQueuePhyInfoIdPrefix, id)
var resp ScQueuePhyInfo
err := m.QueryRowCtx(ctx, &resp, pcmScQueuePhyInfoIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scQueuePhyInfoRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultScQueuePhyInfoModel) Insert(ctx context.Context, data *ScQueuePhyInfo) (sql.Result, error) {
pcmScQueuePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScQueuePhyInfoIdPrefix, data.Id)
ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, scQueuePhyInfoRowsExpectAutoSet)
return conn.ExecCtx(ctx, query, data.Id, data.AclHosts, data.QueueId, data.Text, data.QueueName, data.QueNodes, data.QueMinNodect, data.QueMaxNgpus, data.QueMaxPpn, data.QueChargeRate, data.QueMaxNcpus, data.QueMaxNdcus, data.QueMinNcpus, data.QueFreeNodes, data.QueMaxNodect, data.QueMaxGpuPN, data.QueMaxWalltime, data.QueMaxDcuPN, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime)
}, pcmScQueuePhyInfoIdKey)
return ret, err
}
func (m *defaultScQueuePhyInfoModel) Update(ctx context.Context, data *ScQueuePhyInfo) error {
pcmScQueuePhyInfoIdKey := fmt.Sprintf("%s%v", cachePcmScQueuePhyInfoIdPrefix, data.Id)
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, scQueuePhyInfoRowsWithPlaceHolder)
return conn.ExecCtx(ctx, query, data.AclHosts, data.QueueId, data.Text, data.QueueName, data.QueNodes, data.QueMinNodect, data.QueMaxNgpus, data.QueMaxPpn, data.QueChargeRate, data.QueMaxNcpus, data.QueMaxNdcus, data.QueMinNcpus, data.QueFreeNodes, data.QueMaxNodect, data.QueMaxGpuPN, data.QueMaxWalltime, data.QueMaxDcuPN, data.ParticipantId, data.DeletedFlag, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.Id)
}, pcmScQueuePhyInfoIdKey)
return err
}
func (m *defaultScQueuePhyInfoModel) formatPrimary(primary any) string {
return fmt.Sprintf("%s%v", cachePcmScQueuePhyInfoIdPrefix, primary)
}
func (m *defaultScQueuePhyInfoModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", scQueuePhyInfoRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary)
}
func (m *defaultScQueuePhyInfoModel) tableName() string {
return m.table
}

View File

@ -26,6 +26,19 @@ type (
CreatedBy int64 `db:"created_by"` // 创建人
UpdatedBy int64 `db:"updated_by"` // 更新人
DeletedFlag int64 `db:"deleted_flag"` // 是否删除0-否1-是)
KernelFeature string `db:"kernel_feature"`
HashMode string `db:"hash_mode"`
Rejected string `db:"rejected"`
Session string `db:"session"`
HashTarget string `db:"hash_target"`
Speed string `db:"speed"`
Candidates string `db:"candidates"`
RestorePoint string `db:"restore_point"`
Recovered string `db:"recovered"`
GuessQueue string `db:"guess_queue"`
CandidateEngine string `db:"candidate_engine"`
GuessMask string `db:"guess_mask"`
RestoreSub string `db:"restore_sub"`
}
)

View File

@ -1,15 +1,22 @@
FROM golang:1.20.2-alpine3.17 AS builder
WORKDIR /app
FROM golang:1.21.2-alpine3.18 AS builder
LABEL stage=gobuilder
ENV CGO_ENABLED 0
ENV GOARCH amd64
ENV GOPROXY https://goproxy.cn,direct
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.sjtug.sjtu.edu.cn/g' /etc/apk/repositories && \
apk update --no-cache && apk add --no-cache tzdata
WORKDIR /app
ADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
COPY rpc/etc/ /app/
RUN go mod download && go build -o pcm-coordinator-rpc /app/rpc/pcmcore.go
RUN go build -o pcm-coordinator-rpc /app/rpc/pcmcore.go
FROM alpine:3.16.2

View File

@ -1,15 +1,14 @@
NacosConfig:
DataId: pcm-core-rpc.yaml
Group: DEFAULT_GROUP
ServerConfigs:
# - IpAddr: 127.0.0.1
# Port: 8848
- IpAddr: nacos.jcce.dev
Port: 8848
ClientConfig:
NamespaceId: test
TimeoutMs: 5000
NotLoadCacheAtStart: true
LogDir:
CacheDir:
LogLevel: info
Name: pcm.core.rpc
ListenOn: 0.0.0.0:2004
Timeout: 15000 # 15s设置rpc服务的响应的超时时间若超过15s还未返回则结束请求
DB:
DataSource: root:uJpLd6u-J?HC1@(10.206.0.7:3306)/pcm?parseTime=true&loc=Local
SnowflakeConf:
MachineId: 1
RedisConf:
Host: 10.206.0.7:6379
Pass: redisPW123

View File

@ -1,79 +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 cron
import (
"github.com/zeromicro/go-zero/core/logx"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/constants"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/models"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
"gorm.io/gorm"
"strings"
)
func InitCron(svc *svc.ServiceContext) {
svc.Cron.Start()
svc.Cron.AddFunc("*/5 * * * * ?", func() {
var tasks []models.Task
svc.DbEngin.Where("status not in ?", []string{constants.Deleted, constants.Succeeded, constants.Completed, constants.Failed}).Find(&tasks)
for _, task := range tasks {
var allStatus string
tx := svc.DbEngin.Raw("SELECT CONCAT_WS(',',GROUP_CONCAT(DISTINCT h.status) ,GROUP_CONCAT(DISTINCT a.status) ,GROUP_CONCAT(DISTINCT c.status))as status from task t left join hpc h on t.id = h.task_id left join cloud c on t.id = c.task_id left join ai a on t.id = a.task_id where t.id = ?", task.Id).Scan(&allStatus)
if tx.Error != nil {
logx.Error(tx.Error)
}
// 子状态统一则修改主任务状态
statusArray := strings.Split(allStatus, ",")
if len(removeRepeatedElement(statusArray)) == 1 {
updateTask(svc.DbEngin, &task, statusArray[0])
continue
}
// 子任务包含失败状态 主任务则失败
if strings.Contains(allStatus, constants.Failed) {
updateTask(svc.DbEngin, &task, constants.Failed)
continue
}
if strings.Contains(allStatus, constants.Running) {
updateTask(svc.DbEngin, &task, constants.Running)
}
}
})
}
func updateTask(dbEngin *gorm.DB, task *models.Task, status string) {
if task.Status != status {
task.Status = status
dbEngin.Updates(&task)
}
}
func removeRepeatedElement(arr []string) (newArr []string) {
newArr = make([]string, 0)
for i := 0; i < len(arr); i++ {
repeat := false
for j := i + 1; j < len(arr); j++ {
if arr[i] == arr[j] {
repeat = true
break
}
}
if !repeat {
newArr = append(newArr, arr[i])
}
}
return
}

View File

@ -88,7 +88,6 @@ func (l *RegisterParticipantLogic) RegisterParticipant(in *pcmCore.ParticipantPh
for _, info := range in.QueueInfo {
queueInfo := &models2.ScQueuePhyInfo{}
utils.Convert(info, queueInfo)
queueInfo.CreatedTime = time.Now()
queueInfo.ParticipantId = participantInfo.Id
//查询队列name与ParticipantId是否存在
queueErr := db.Where(&models2.ScQueuePhyInfo{QueueName: queueInfo.QueueName, ParticipantId: in.ParticipantId}).Take(queueInfo)

View File

@ -44,7 +44,11 @@ func (l *InfoListLogic) InfoList(in *pcmCore.InfoListReq) (*pcmCore.InfoListResp
result := pcmCore.InfoListResp{}
// 查询p端类型
var kind string
l.svcCtx.DbEngin.Raw("select type as kind from sc_participant_phy_info where id = ?", in.ParticipantId).Scan(&kind)
tx := l.svcCtx.DbEngin.Raw("select type as kind from sc_participant_phy_info where id = ?", in.ParticipantId).Scan(&kind)
if tx.Error != nil {
logx.Error(tx.Error)
return nil, tx.Error
}
// 查询云智超中的数据列表
switch kind {
case constants.HPC:
@ -66,6 +70,7 @@ func (l *InfoListLogic) InfoList(in *pcmCore.InfoListReq) (*pcmCore.InfoListResp
func findModelList(participantId int64, dbEngin *gorm.DB, data interface{}) error {
tx := dbEngin.Where("participant_id = ? AND status NOT IN ?", participantId, []string{"Deleted", "Succeeded", "Completed", "Failed"}).Find(data)
if tx.Error != nil {
logx.Error(tx.Error)
return tx.Error
}
return nil

View File

@ -17,8 +17,11 @@ package pcmcorelogic
import (
"context"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/constants"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/pkg/models"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
"gorm.io/gorm"
"strings"
"time"
"github.com/zeromicro/go-zero/core/logx"
@ -54,20 +57,79 @@ func (l *SyncInfoLogic) SyncInfo(in *pcmCore.SyncInfoReq) (*pcmCore.SyncInfoResp
switch kind {
case constants.CLOUD:
for _, cloudInfo := range in.CloudInfoList {
l.svcCtx.DbEngin.Exec("update cloud set status = ?,start_time = ?,running_time = ?,result = ? where participant_id = ? and task_id = ? and namespace = ? and name = ?",
cloudInfo.Status, cloudInfo.StartTime, cloudInfo.RunningTime, cloudInfo.Result, in.ParticipantId, cloudInfo.TaskId, cloudInfo.Namespace, cloudInfo.Name)
tx := l.svcCtx.DbEngin.Exec("update cloud set status = ?,start_time = ?,result = ? where participant_id = ? and id = ?",
cloudInfo.Status, cloudInfo.StartTime, cloudInfo.Result, in.ParticipantId, cloudInfo.Id)
if tx.Error != nil {
logx.Error(tx.Error)
}
syncTask(l.svcCtx.DbEngin, cloudInfo.TaskId)
}
case constants.HPC:
for _, hpcInfo := range in.HpcInfoList {
l.svcCtx.DbEngin.Exec("update hpc set status = ?,start_time = ?,running_time = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?",
tx := l.svcCtx.DbEngin.Exec("update hpc set status = ?,start_time = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?",
hpcInfo.Status, hpcInfo.StartTime, hpcInfo.RunningTime, hpcInfo.JobId, in.ParticipantId, hpcInfo.TaskId, hpcInfo.Name)
if tx.Error != nil {
logx.Error(tx.Error)
}
syncTask(l.svcCtx.DbEngin, hpcInfo.TaskId)
}
case constants.AI:
for _, aiInfo := range in.AiInfoList {
l.svcCtx.DbEngin.Exec("update ai set status = ?,start_time = ?,running_time = ?,project_id = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?",
aiInfo.Status, aiInfo.StartTime, aiInfo.RunningTime, aiInfo.ProjectId, aiInfo.JobId, in.ParticipantId, aiInfo.TaskId, aiInfo.Name)
l.svcCtx.DbEngin.Exec("update ai set status = ?,start_time = ?,project_id = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?",
aiInfo.Status, aiInfo.StartTime, aiInfo.ProjectId, aiInfo.JobId, in.ParticipantId, aiInfo.TaskId, aiInfo.Name)
syncTask(l.svcCtx.DbEngin, aiInfo.TaskId)
}
}
return &pcmCore.SyncInfoResp{}, nil
}
func syncTask(gorm *gorm.DB, taskId int64) {
var allStatus string
tx := gorm.Raw("SELECT CONCAT_WS(',',GROUP_CONCAT(DISTINCT h.status) ,GROUP_CONCAT(DISTINCT a.status) ,GROUP_CONCAT(DISTINCT c.status))as status from task t left join hpc h on t.id = h.task_id left join cloud c on t.id = c.task_id left join ai a on t.id = a.task_id where t.id = ?", taskId).Scan(&allStatus)
if tx.Error != nil {
logx.Error(tx.Error)
}
// 子状态统一则修改主任务状态
statusArray := strings.Split(allStatus, ",")
if len(removeRepeatedElement(statusArray)) == 1 {
updateTask(gorm, taskId, statusArray[0])
}
// 子任务包含失败状态 主任务则失败
if strings.Contains(allStatus, constants.Failed) {
updateTask(gorm, taskId, constants.Failed)
}
if strings.Contains(allStatus, constants.Running) {
updateTask(gorm, taskId, constants.Running)
}
}
func updateTask(gorm *gorm.DB, taskId int64, status string) {
var task models.Task
gorm.Where("id = ? ", taskId).Find(&task)
if task.Status != status {
task.Status = status
gorm.Updates(&task)
}
}
func removeRepeatedElement(arr []string) (newArr []string) {
newArr = make([]string, 0)
for i := 0; i < len(arr); i++ {
repeat := false
for j := i + 1; j < len(arr); j++ {
if arr[i] == arr[j] {
repeat = true
break
}
}
if !repeat {
newArr = append(newArr, arr[i])
}
}
return
}

View File

@ -36,14 +36,18 @@ type ServiceContext struct {
func NewServiceContext(c config.Config) *ServiceContext {
//启动Gorm支持
dbEngin, _ := gorm.Open(mysql.Open(c.DB.DataSource), &gorm.Config{
dbEngin, err := gorm.Open(mysql.Open(c.DB.DataSource), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `t_user`
},
Logger: logger.Default.LogMode(logger.Warn),
})
if err != nil {
logx.Error("gorm初始化错误", err.Error())
panic(err)
}
//添加snowflake支持
err := utils.InitSnowflake(c.SnowflakeConf.MachineId)
err = utils.InitSnowflake(c.SnowflakeConf.MachineId)
if err != nil {
logx.Errorf("InitSnowflake err: ", err)
panic("InitSnowflake err")

View File

@ -42,18 +42,19 @@ message CloudInfo {
int64 runningTime = 9;
string result = 10;
string yamlString = 11;
int64 id = 12;
}
message VmInfo {
int64 participantId = 1;
int64 taskId = 2;
string name = 3;
string flavor_ref =4;
string image_ref =5;
string network_uuid=6;
string block_uuid=7;
string source_type=8;
bool delete_on_termination=9;
string flavor_ref = 4;
string image_ref = 5;
string network_uuid = 6;
string block_uuid = 7;
string source_type = 8;
bool delete_on_termination = 9;
string state = 10;
}

View File

@ -16,10 +16,6 @@ spec:
labels:
k8s-app: pcm-coordinator-rpc
spec:
hostAliases:
- hostnames:
- nacos.jcce.dev
ip: nacos_host
imagePullSecrets:
- name: secret_name
containers:

View File

@ -323,6 +323,7 @@ type CloudInfo struct {
RunningTime int64 `protobuf:"varint,9,opt,name=runningTime,proto3" json:"runningTime,omitempty"`
Result string `protobuf:"bytes,10,opt,name=result,proto3" json:"result,omitempty"`
YamlString string `protobuf:"bytes,11,opt,name=yamlString,proto3" json:"yamlString,omitempty"`
Id int64 `protobuf:"varint,12,opt,name=id,proto3" json:"id,omitempty"`
}
func (x *CloudInfo) Reset() {
@ -434,6 +435,13 @@ func (x *CloudInfo) GetYamlString() string {
return ""
}
func (x *CloudInfo) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
type VmInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -2542,7 +2550,7 @@ var file_pcmCore_proto_rawDesc = []byte{
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x74,
0x65, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64,
0x22, 0xbb, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20,
0x22, 0xcb, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20,
0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
@ -2561,7 +2569,8 @@ var file_pcmCore_proto_rawDesc = []byte{
0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e,
0x0a, 0x0a, 0x79, 0x61, 0x6d, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x79, 0x61, 0x6d, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xc3,
0x28, 0x09, 0x52, 0x0a, 0x79, 0x61, 0x6d, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc3,
0x02, 0x0a, 0x06, 0x56, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x72,
0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12,

View File

@ -21,13 +21,11 @@ import (
"github.com/zeromicro/go-zero/core/service"
"github.com/zeromicro/go-zero/zrpc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/config"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/cron"
participantserviceServer "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/server/participantservice"
pcmcoreServer "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/server/pcmcore"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/pcmCore"
"gitlink.org.cn/jcce-pcm/utils/interceptor/rpcserver"
commonConfig "gitlink.org.cn/jcce-pcm/utils/nacos"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
@ -38,28 +36,8 @@ func main() {
flag.Parse()
var bootstrapConfig commonConfig.BootstrapConfig
conf.MustLoad(*configFile, &bootstrapConfig)
//解析业务配置
var c config.Config
nacosConfig := bootstrapConfig.NacosConfig
serviceConfigContent := nacosConfig.InitConfig(func(data string) {
err := conf.LoadFromYamlBytes([]byte(data), &c)
if err != nil {
panic(err)
}
})
err := conf.LoadFromYamlBytes([]byte(serviceConfigContent), &c)
if err != nil {
panic(err)
}
// start log component
logx.MustSetup(c.LogConf)
// 注册到nacos
nacosConfig.Discovery(&c.RpcServerConf)
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
@ -74,8 +52,6 @@ func main() {
s.AddUnaryInterceptors(rpcserver.LoggerInterceptor)
defer s.Stop()
// 初始化定时任务
cron.InitCron(ctx)
logx.Infof("Starting rpc server at %s...\n", c.ListenOn)
s.Start()
}