merge
This commit is contained in:
commit
017ef22216
|
@ -0,0 +1,8 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/scheduler.iml" filepath="$PROJECT_DIR$/.idea/scheduler.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="Go" enabled="true" />
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -382,13 +382,13 @@ func (s *DefaultScheduler) calcResourceLevel(avai float64, need float64) int {
|
||||||
// 计算节点得分情况
|
// 计算节点得分情况
|
||||||
func (s *DefaultScheduler) calcFileScore(files jobmod.JobFiles, allCCs map[schsdk.CCID]*candidate) error {
|
func (s *DefaultScheduler) calcFileScore(files jobmod.JobFiles, allCCs map[schsdk.CCID]*candidate) error {
|
||||||
// 只计算运控返回的计算中心上的存储服务的数据权重
|
// 只计算运控返回的计算中心上的存储服务的数据权重
|
||||||
cdsNodeToCC := make(map[cdssdk.NodeID]*candidate)
|
cdsStgToCC := make(map[cdssdk.StorageID]*candidate)
|
||||||
for _, cc := range allCCs {
|
for _, cc := range allCCs {
|
||||||
cdsNodeToCC[cc.CC.CDSNodeID] = cc
|
cdsStgToCC[cc.CC.CDSStorageID] = cc
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算code相关得分
|
//计算code相关得分
|
||||||
codeFileScores, err := s.calcPackageFileScore(files.Code.PackageID, cdsNodeToCC)
|
codeFileScores, err := s.calcPackageFileScore(files.Code.PackageID, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc code file score: %w", err)
|
return fmt.Errorf("calc code file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,7 @@ func (s *DefaultScheduler) calcFileScore(files jobmod.JobFiles, allCCs map[schsd
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算dataset相关得分
|
//计算dataset相关得分
|
||||||
datasetFileScores, err := s.calcPackageFileScore(files.Dataset.PackageID, cdsNodeToCC)
|
datasetFileScores, err := s.calcPackageFileScore(files.Dataset.PackageID, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc dataset file score: %w", err)
|
return fmt.Errorf("calc dataset file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -406,7 +406,7 @@ func (s *DefaultScheduler) calcFileScore(files jobmod.JobFiles, allCCs map[schsd
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算image相关得分
|
//计算image相关得分
|
||||||
imageFileScores, err := s.calcImageFileScore(files.Image.ImageID, allCCs, cdsNodeToCC)
|
imageFileScores, err := s.calcImageFileScore(files.Image.ImageID, allCCs, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc image file score: %w", err)
|
return fmt.Errorf("calc image file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ func (s *DefaultScheduler) calcFileScore(files jobmod.JobFiles, allCCs map[schsd
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算package在各节点的得分情况
|
// 计算package在各节点的得分情况
|
||||||
func (s *DefaultScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsNodeToCC map[cdssdk.NodeID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
func (s *DefaultScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsStgToCC map[cdssdk.StorageID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
||||||
colCli, err := schglb.CollectorMQPool.Acquire()
|
colCli, err := schglb.CollectorMQPool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("new collector client: %w", err)
|
return nil, fmt.Errorf("new collector client: %w", err)
|
||||||
|
@ -441,8 +441,8 @@ func (s *DefaultScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsN
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeCacheInfo := range cachedResp.NodeInfos {
|
for _, cdsNodeCacheInfo := range cachedResp.StorageInfos {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeCacheInfo.NodeID]
|
cc, ok := cdsStgToCC[cdsNodeCacheInfo.StorageID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -453,13 +453,13 @@ func (s *DefaultScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadedResp, err := colCli.PackageGetLoadedStgNodes(collector.NewPackageGetLoadedStgNodes(1, packageID))
|
loadedResp, err := colCli.PackageGetLoadedStgs(collector.NewPackageGetLoadedStgs(1, packageID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeID := range loadedResp.StgNodeIDs {
|
for _, cdsNodeID := range loadedResp.StgIDs {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeID]
|
cc, ok := cdsStgToCC[cdsNodeID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -478,7 +478,7 @@ func (s *DefaultScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsN
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算package在各节点的得分情况
|
// 计算package在各节点的得分情况
|
||||||
func (s *DefaultScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs map[schsdk.CCID]*candidate, cdsNodeToCC map[cdssdk.NodeID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
func (s *DefaultScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs map[schsdk.CCID]*candidate, cdsNodeToCC map[cdssdk.StorageID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
||||||
colCli, err := schglb.CollectorMQPool.Acquire()
|
colCli, err := schglb.CollectorMQPool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("new collector client: %w", err)
|
return nil, fmt.Errorf("new collector client: %w", err)
|
||||||
|
@ -504,8 +504,8 @@ func (s *DefaultScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs map
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeCacheInfo := range cachedResp.NodeInfos {
|
for _, cdsNodeCacheInfo := range cachedResp.StorageInfos {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeCacheInfo.NodeID]
|
cc, ok := cdsNodeToCC[cdsNodeCacheInfo.StorageID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
log "gitlink.org.cn/cloudream/common/pkgs/logger"
|
log "gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
uopsdk "gitlink.org.cn/cloudream/common/sdks/unifyops"
|
uopsdk "gitlink.org.cn/cloudream/common/sdks/unifyops"
|
||||||
c "gitlink.org.cn/cloudream/common/utils/config"
|
c "gitlink.org.cn/cloudream/common/utils/config"
|
||||||
mymq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
mymq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
||||||
|
@ -11,7 +11,7 @@ import (
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Logger log.Config `json:"logger"`
|
Logger log.Config `json:"logger"`
|
||||||
RabbitMQ mymq.Config `json:"rabbitMQ"`
|
RabbitMQ mymq.Config `json:"rabbitMQ"`
|
||||||
CloudreamStorage cdssdk.Config `json:"cloudreamStorage"`
|
CloudreamStorage cdsapi.Config `json:"cloudreamStorage"`
|
||||||
UnifyOps uopsdk.Config `json:"unifyOps"`
|
UnifyOps uopsdk.Config `json:"unifyOps"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"gitlink.org.cn/cloudream/common/consts/errorcode"
|
"gitlink.org.cn/cloudream/common/consts/errorcode"
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/mq"
|
"gitlink.org.cn/cloudream/common/pkgs/mq"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
colmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/collector"
|
colmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/collector"
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ func (svc *Service) PackageGetCachedStgNodes(msg *colmq.PackageGetCachedStgNodes
|
||||||
}
|
}
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
resp, err := stgCli.Package().GetCachedNodes(cdssdk.PackageGetCachedNodesReq{
|
resp, err := stgCli.Package().GetCachedStorages(cdsapi.PackageGetCachedStoragesReq{
|
||||||
PackageID: msg.PackageID,
|
PackageID: msg.PackageID,
|
||||||
UserID: msg.UserID,
|
UserID: msg.UserID,
|
||||||
})
|
})
|
||||||
|
@ -26,10 +26,10 @@ func (svc *Service) PackageGetCachedStgNodes(msg *colmq.PackageGetCachedStgNodes
|
||||||
return nil, mq.Failed(errorcode.OperationFailed, "get package cached stg nodes failed")
|
return nil, mq.Failed(errorcode.OperationFailed, "get package cached stg nodes failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
return mq.ReplyOK(colmq.NewPackageGetCachedStgNodesResp(resp.NodeInfos, resp.PackageSize))
|
return mq.ReplyOK(colmq.NewPackageGetCachedStgNodesResp(resp.StorageInfos, resp.PackageSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (svc *Service) PackageGetLoadedStgNodes(msg *colmq.PackageGetLoadedStgNodes) (*colmq.PackageGetLoadedStgNodesResp, *mq.CodeMessage) {
|
func (svc *Service) PackageGetLoadedStgs(msg *colmq.PackageGetLoadedStgs) (*colmq.PackageGetLoadedStgsResp, *mq.CodeMessage) {
|
||||||
stgCli, err := schglb.CloudreamStoragePool.Acquire()
|
stgCli, err := schglb.CloudreamStoragePool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warnf("new storage client, err: %s", err.Error())
|
logger.Warnf("new storage client, err: %s", err.Error())
|
||||||
|
@ -37,7 +37,7 @@ func (svc *Service) PackageGetLoadedStgNodes(msg *colmq.PackageGetLoadedStgNodes
|
||||||
}
|
}
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
resp, err := stgCli.Package().GetLoadedNodes(cdssdk.PackageGetLoadedNodesReq{
|
resp, err := stgCli.Package().GetLoadedStorages(cdsapi.PackageGetLoadedStoragesReq{
|
||||||
PackageID: msg.PackageID,
|
PackageID: msg.PackageID,
|
||||||
UserID: msg.UserID,
|
UserID: msg.UserID,
|
||||||
})
|
})
|
||||||
|
@ -46,5 +46,5 @@ func (svc *Service) PackageGetLoadedStgNodes(msg *colmq.PackageGetLoadedStgNodes
|
||||||
return nil, mq.Failed(errorcode.OperationFailed, "get package loaded stg nodes failed")
|
return nil, mq.Failed(errorcode.OperationFailed, "get package loaded stg nodes failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
return mq.ReplyOK(colmq.NewPackageGetLoadedStgNodesResp(resp.NodeIDs))
|
return mq.ReplyOK(colmq.NewPackageGetLoadedStgsResp(resp.StorageIDs))
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,6 @@ type ComputingCenter struct {
|
||||||
UOPSlwNodeID uopsdk.SlwNodeID `json:"uopSlwNodeID" db:"UOPSlwNodeID"`
|
UOPSlwNodeID uopsdk.SlwNodeID `json:"uopSlwNodeID" db:"UOPSlwNodeID"`
|
||||||
// 计算中心在PCM系统的ID
|
// 计算中心在PCM系统的ID
|
||||||
PCMParticipantID pcmsdk.ParticipantID `json:"pcmParticipantID" db:"PCMParticipantID"`
|
PCMParticipantID pcmsdk.ParticipantID `json:"pcmParticipantID" db:"PCMParticipantID"`
|
||||||
// 计算中心在存储系统的ID
|
|
||||||
CDSNodeID cdssdk.NodeID `json:"cdsNodeID" db:"CDSNodeID"`
|
|
||||||
// 此算力中心的存储服务对应在存储系统中的ID
|
// 此算力中心的存储服务对应在存储系统中的ID
|
||||||
CDSStorageID cdssdk.StorageID `json:"cdsStorageID" db:"CDSStorageID"`
|
CDSStorageID cdssdk.StorageID `json:"cdsStorageID" db:"CDSStorageID"`
|
||||||
// 计算中心名称
|
// 计算中心名称
|
||||||
|
|
|
@ -10,6 +10,9 @@ import (
|
||||||
"gitlink.org.cn/cloudream/scheduler/common/pkgs/db/config"
|
"gitlink.org.cn/cloudream/scheduler/common/pkgs/db/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TODO 迁移到Gorm
|
||||||
|
// TODO ComputingCenter去掉了CDSNodeID字段,需要修改DB的结构
|
||||||
|
|
||||||
type DB struct {
|
type DB struct {
|
||||||
d *sqlx.DB
|
d *sqlx.DB
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ func (s *Server) Stop() {
|
||||||
s.rabbitSvr.Close()
|
s.rabbitSvr.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQLogEvent] {
|
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQServerEvent] {
|
||||||
return s.rabbitSvr.Start()
|
return s.rabbitSvr.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ func (s *Server) Stop() {
|
||||||
s.rabbitSvr.Close()
|
s.rabbitSvr.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQLogEvent] {
|
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQServerEvent] {
|
||||||
return s.rabbitSvr.Start()
|
return s.rabbitSvr.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
type StorageService interface {
|
type StorageService interface {
|
||||||
PackageGetCachedStgNodes(msg *PackageGetCachedStgNodes) (*PackageGetCachedStgNodesResp, *mq.CodeMessage)
|
PackageGetCachedStgNodes(msg *PackageGetCachedStgNodes) (*PackageGetCachedStgNodesResp, *mq.CodeMessage)
|
||||||
|
|
||||||
PackageGetLoadedStgNodes(msg *PackageGetLoadedStgNodes) (*PackageGetLoadedStgNodesResp, *mq.CodeMessage)
|
PackageGetLoadedStgs(msg *PackageGetLoadedStgs) (*PackageGetLoadedStgsResp, *mq.CodeMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取package的缓存分布情况
|
// 获取package的缓存分布情况
|
||||||
|
@ -30,11 +30,11 @@ func NewPackageGetCachedStgNodes(userID cdssdk.UserID, packageID cdssdk.PackageI
|
||||||
PackageID: packageID,
|
PackageID: packageID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func NewPackageGetCachedStgNodesResp(nodeInfos []cdssdk.NodePackageCachingInfo, packageSize int64) *PackageGetCachedStgNodesResp {
|
func NewPackageGetCachedStgNodesResp(nodeInfos []cdssdk.StoragePackageCachingInfo, packageSize int64) *PackageGetCachedStgNodesResp {
|
||||||
return &PackageGetCachedStgNodesResp{
|
return &PackageGetCachedStgNodesResp{
|
||||||
PackageCachingInfo: cdssdk.PackageCachingInfo{
|
PackageCachingInfo: cdssdk.PackageCachingInfo{
|
||||||
NodeInfos: nodeInfos,
|
StorageInfos: nodeInfos,
|
||||||
PackageSize: packageSize,
|
PackageSize: packageSize,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,29 +43,29 @@ func (c *Client) PackageGetCachedStgNodes(msg *PackageGetCachedStgNodes, opts ..
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取package的存储分布情况
|
// 获取package的存储分布情况
|
||||||
var _ = Register(Service.PackageGetLoadedStgNodes)
|
var _ = Register(Service.PackageGetLoadedStgs)
|
||||||
|
|
||||||
type PackageGetLoadedStgNodes struct {
|
type PackageGetLoadedStgs struct {
|
||||||
mq.MessageBodyBase
|
mq.MessageBodyBase
|
||||||
UserID cdssdk.UserID `json:"userID"`
|
UserID cdssdk.UserID `json:"userID"`
|
||||||
PackageID cdssdk.PackageID `json:"packageID"`
|
PackageID cdssdk.PackageID `json:"packageID"`
|
||||||
}
|
}
|
||||||
type PackageGetLoadedStgNodesResp struct {
|
type PackageGetLoadedStgsResp struct {
|
||||||
mq.MessageBodyBase
|
mq.MessageBodyBase
|
||||||
StgNodeIDs []cdssdk.NodeID `json:"stgNodeIDs"`
|
StgIDs []cdssdk.StorageID `json:"stgNodeIDs"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPackageGetLoadedStgNodes(userID cdssdk.UserID, packageID cdssdk.PackageID) *PackageGetLoadedStgNodes {
|
func NewPackageGetLoadedStgs(userID cdssdk.UserID, packageID cdssdk.PackageID) *PackageGetLoadedStgs {
|
||||||
return &PackageGetLoadedStgNodes{
|
return &PackageGetLoadedStgs{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
PackageID: packageID,
|
PackageID: packageID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func NewPackageGetLoadedStgNodesResp(nodeIDs []cdssdk.NodeID) *PackageGetLoadedStgNodesResp {
|
func NewPackageGetLoadedStgsResp(stgIDs []cdssdk.StorageID) *PackageGetLoadedStgsResp {
|
||||||
return &PackageGetLoadedStgNodesResp{
|
return &PackageGetLoadedStgsResp{
|
||||||
StgNodeIDs: nodeIDs,
|
StgIDs: stgIDs,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (c *Client) PackageGetLoadedStgNodes(msg *PackageGetLoadedStgNodes, opts ...mq.RequestOption) (*PackageGetLoadedStgNodesResp, error) {
|
func (c *Client) PackageGetLoadedStgs(msg *PackageGetLoadedStgs, opts ...mq.RequestOption) (*PackageGetLoadedStgsResp, error) {
|
||||||
return mq.Request(Service.PackageGetLoadedStgNodes, c.rabbitCli, msg, opts...)
|
return mq.Request(Service.PackageGetLoadedStgs, c.rabbitCli, msg, opts...)
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ func (s *Server) Stop() {
|
||||||
s.rabbitSvr.Close()
|
s.rabbitSvr.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Serve() *sync2.UnboundChannel[mq.RabbitMQLogEvent] {
|
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQServerEvent] {
|
||||||
return s.rabbitSvr.Start()
|
return s.rabbitSvr.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ func (c *HttpClient) CreateSugonInstance(token string, config map[string]interfa
|
||||||
Token: token,
|
Token: token,
|
||||||
}
|
}
|
||||||
body, err := json.Marshal(config)
|
body, err := json.Marshal(config)
|
||||||
resp, err := http2.PostJSONRow(targetURL, http2.RequestParam{
|
resp, err := http2.PostJSON(targetURL, http2.RequestParam{
|
||||||
Body: body,
|
Body: body,
|
||||||
Header: header,
|
Header: header,
|
||||||
})
|
})
|
||||||
|
|
|
@ -57,7 +57,7 @@ func (c *HttpClient) SubmitTask(req *StartTask) (*StartTaskResp, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := serder.ObjectToJSONEx(req)
|
data, err := serder.ObjectToJSONEx(req)
|
||||||
resp, err := http2.PostJSONRow(targetURL, http2.RequestParam{
|
resp, err := http2.PostJSON(targetURL, http2.RequestParam{
|
||||||
Body: data,
|
Body: data,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -128,7 +128,7 @@ func (c *HttpClient) OperateTask(req *TaskOperateInfo) (*TaskOperateResp, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := serder.ObjectToJSONEx(req)
|
data, err := serder.ObjectToJSONEx(req)
|
||||||
resp, err := http2.PostJSONRow(targetURL, http2.RequestParam{
|
resp, err := http2.PostJSON(targetURL, http2.RequestParam{
|
||||||
Body: data,
|
Body: data,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -6,18 +6,18 @@ type CacheMovePackage struct {
|
||||||
TaskInfoBase
|
TaskInfoBase
|
||||||
UserID cdssdk.UserID `json:"userID"`
|
UserID cdssdk.UserID `json:"userID"`
|
||||||
PackageID cdssdk.PackageID `json:"packageID"`
|
PackageID cdssdk.PackageID `json:"packageID"`
|
||||||
StgNodeID cdssdk.NodeID `json:"stgNodeID"`
|
StgID cdssdk.StorageID `json:"stgID"`
|
||||||
}
|
}
|
||||||
type CacheMovePackageStatus struct {
|
type CacheMovePackageStatus struct {
|
||||||
TaskStatusBase
|
TaskStatusBase
|
||||||
Error string `json:"error"`
|
Error string `json:"error"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCacheMovePackage(userID cdssdk.UserID, packageID cdssdk.PackageID, stgNodeID cdssdk.NodeID) *CacheMovePackage {
|
func NewCacheMovePackage(userID cdssdk.UserID, packageID cdssdk.PackageID, stgID cdssdk.StorageID) *CacheMovePackage {
|
||||||
return &CacheMovePackage{
|
return &CacheMovePackage{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
PackageID: packageID,
|
PackageID: packageID,
|
||||||
StgNodeID: stgNodeID,
|
StgID: stgID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func NewCacheMovePackageStatus(err string) *CacheMovePackageStatus {
|
func NewCacheMovePackageStatus(err string) *CacheMovePackageStatus {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package task
|
package task
|
||||||
|
|
||||||
import cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
import (
|
||||||
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
|
)
|
||||||
|
|
||||||
type StorageMoveObject struct {
|
type StorageMoveObject struct {
|
||||||
TaskInfoBase
|
TaskInfoBase
|
||||||
ObjectMove cdssdk.ObjectMove `json:"objectMove"`
|
ObjectMove cdsapi.ObjectMove `json:"objectMove"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type StorageMoveObjectStatus struct {
|
type StorageMoveObjectStatus struct {
|
||||||
|
@ -12,7 +14,7 @@ type StorageMoveObjectStatus struct {
|
||||||
Error string `json:"error"`
|
Error string `json:"error"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStorageMoveObject(objectMove cdssdk.ObjectMove) *StorageMoveObject {
|
func NewStorageMoveObject(objectMove cdsapi.ObjectMove) *StorageMoveObject {
|
||||||
return &StorageMoveObject{
|
return &StorageMoveObject{
|
||||||
ObjectMove: objectMove,
|
ObjectMove: objectMove,
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ func (s *Server) Stop() {
|
||||||
s.rabbitSvr.Close()
|
s.rabbitSvr.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQLogEvent] {
|
func (s *Server) Start() *sync2.UnboundChannel[mq.RabbitMQServerEvent] {
|
||||||
return s.rabbitSvr.Start()
|
return s.rabbitSvr.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package prescheduler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/inhies/go-bytesize"
|
"github.com/inhies/go-bytesize"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||||
|
@ -171,14 +172,14 @@ func (s *DefaultPreScheduler) calcResourceLevel(avai float64, need float64) int
|
||||||
// 计算节点得分情况
|
// 计算节点得分情况
|
||||||
func (s *DefaultPreScheduler) calcFileScore(files schsdk.JobFilesInfo, allCCs map[schsdk.CCID]*candidate) error {
|
func (s *DefaultPreScheduler) calcFileScore(files schsdk.JobFilesInfo, allCCs map[schsdk.CCID]*candidate) error {
|
||||||
// 只计算运控返回的可用计算中心上的存储服务的数据权重
|
// 只计算运控返回的可用计算中心上的存储服务的数据权重
|
||||||
cdsNodeToCC := make(map[cdssdk.NodeID]*candidate)
|
cdsStgToCC := make(map[cdssdk.StorageID]*candidate)
|
||||||
for _, cc := range allCCs {
|
for _, cc := range allCCs {
|
||||||
cdsNodeToCC[cc.CC.CDSNodeID] = cc
|
cdsStgToCC[cc.CC.CDSStorageID] = cc
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算code相关得分
|
//计算code相关得分
|
||||||
if pkgFile, ok := files.Code.(*schsdk.PackageJobFileInfo); ok {
|
if pkgFile, ok := files.Code.(*schsdk.PackageJobFileInfo); ok {
|
||||||
codeFileScores, err := s.calcPackageFileScore(pkgFile.PackageID, cdsNodeToCC)
|
codeFileScores, err := s.calcPackageFileScore(pkgFile.PackageID, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc code file score: %w", err)
|
return fmt.Errorf("calc code file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -189,7 +190,7 @@ func (s *DefaultPreScheduler) calcFileScore(files schsdk.JobFilesInfo, allCCs ma
|
||||||
|
|
||||||
//计算dataset相关得分
|
//计算dataset相关得分
|
||||||
if pkgFile, ok := files.Dataset.(*schsdk.PackageJobFileInfo); ok {
|
if pkgFile, ok := files.Dataset.(*schsdk.PackageJobFileInfo); ok {
|
||||||
datasetFileScores, err := s.calcPackageFileScore(pkgFile.PackageID, cdsNodeToCC)
|
datasetFileScores, err := s.calcPackageFileScore(pkgFile.PackageID, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc dataset file score: %w", err)
|
return fmt.Errorf("calc dataset file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -201,7 +202,7 @@ func (s *DefaultPreScheduler) calcFileScore(files schsdk.JobFilesInfo, allCCs ma
|
||||||
//计算image相关得分
|
//计算image相关得分
|
||||||
if imgFile, ok := files.Image.(*schsdk.ImageJobFileInfo); ok {
|
if imgFile, ok := files.Image.(*schsdk.ImageJobFileInfo); ok {
|
||||||
//计算image相关得分
|
//计算image相关得分
|
||||||
imageFileScores, err := s.calcImageFileScore(imgFile.ImageID, allCCs, cdsNodeToCC)
|
imageFileScores, err := s.calcImageFileScore(imgFile.ImageID, allCCs, cdsStgToCC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("calc image file score: %w", err)
|
return fmt.Errorf("calc image file score: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -223,7 +224,7 @@ func (s *DefaultPreScheduler) calcFileScore(files schsdk.JobFilesInfo, allCCs ma
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算package在各节点的得分情况
|
// 计算package在各节点的得分情况
|
||||||
func (s *DefaultPreScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsNodeToCC map[cdssdk.NodeID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
func (s *DefaultPreScheduler) calcPackageFileScore(packageID cdssdk.PackageID, cdsStgToCC map[cdssdk.StorageID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
||||||
colCli, err := schglb.CollectorMQPool.Acquire()
|
colCli, err := schglb.CollectorMQPool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("new collector client: %w", err)
|
return nil, fmt.Errorf("new collector client: %w", err)
|
||||||
|
@ -238,8 +239,8 @@ func (s *DefaultPreScheduler) calcPackageFileScore(packageID cdssdk.PackageID, c
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeCacheInfo := range cachedResp.NodeInfos {
|
for _, cdsNodeCacheInfo := range cachedResp.StorageInfos {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeCacheInfo.NodeID]
|
cc, ok := cdsStgToCC[cdsNodeCacheInfo.StorageID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -251,13 +252,13 @@ func (s *DefaultPreScheduler) calcPackageFileScore(packageID cdssdk.PackageID, c
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
loadedResp, err := colCli.PackageGetLoadedStgNodes(collector.NewPackageGetLoadedStgNodes(1, packageID))
|
loadedResp, err := colCli.PackageGetLoadedStgs(collector.NewPackageGetLoadedStgs(1, packageID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeID := range loadedResp.StgNodeIDs {
|
for _, cdsStgID := range loadedResp.StgIDs {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeID]
|
cc, ok := cdsStgToCC[cdsStgID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -276,7 +277,7 @@ func (s *DefaultPreScheduler) calcPackageFileScore(packageID cdssdk.PackageID, c
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算package在各节点的得分情况
|
// 计算package在各节点的得分情况
|
||||||
func (s *DefaultPreScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs map[schsdk.CCID]*candidate, cdsNodeToCC map[cdssdk.NodeID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
func (s *DefaultPreScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs map[schsdk.CCID]*candidate, cdsStgToCC map[cdssdk.StorageID]*candidate) (map[schsdk.CCID]*fileDetail, error) {
|
||||||
colCli, err := schglb.CollectorMQPool.Acquire()
|
colCli, err := schglb.CollectorMQPool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("new collector client: %w", err)
|
return nil, fmt.Errorf("new collector client: %w", err)
|
||||||
|
@ -302,8 +303,8 @@ func (s *DefaultPreScheduler) calcImageFileScore(imageID schsdk.ImageID, allCCs
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cdsNodeCacheInfo := range cachedResp.NodeInfos {
|
for _, cdsNodeCacheInfo := range cachedResp.StorageInfos {
|
||||||
cc, ok := cdsNodeToCC[cdsNodeCacheInfo.NodeID]
|
cc, ok := cdsStgToCC[cdsNodeCacheInfo.StorageID]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -471,30 +471,30 @@ func (s *DefaultPreScheduler) scheduleForSingleJob(job *schedulingJob, ccs map[s
|
||||||
func (s *DefaultPreScheduler) fillNormarlJobLocalUploadScheme(files schsdk.JobFilesInfo, targetCCID schsdk.CCID, schemes map[string]schsdk.LocalFileUploadScheme, ccs map[schsdk.CCID]schmod.ComputingCenter) {
|
func (s *DefaultPreScheduler) fillNormarlJobLocalUploadScheme(files schsdk.JobFilesInfo, targetCCID schsdk.CCID, schemes map[string]schsdk.LocalFileUploadScheme, ccs map[schsdk.CCID]schmod.ComputingCenter) {
|
||||||
if localFile, ok := files.Dataset.(*schsdk.LocalJobFileInfo); ok {
|
if localFile, ok := files.Dataset.(*schsdk.LocalJobFileInfo); ok {
|
||||||
if _, ok := schemes[localFile.LocalPath]; !ok {
|
if _, ok := schemes[localFile.LocalPath]; !ok {
|
||||||
cdsNodeID := ccs[targetCCID].CDSNodeID
|
cdsNodeID := ccs[targetCCID].CDSStorageID
|
||||||
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
||||||
LocalPath: localFile.LocalPath,
|
LocalPath: localFile.LocalPath,
|
||||||
UploadToCDSNodeID: &cdsNodeID,
|
UploadToCDStorageID: cdsNodeID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if localFile, ok := files.Code.(*schsdk.LocalJobFileInfo); ok {
|
if localFile, ok := files.Code.(*schsdk.LocalJobFileInfo); ok {
|
||||||
if _, ok := schemes[localFile.LocalPath]; !ok {
|
if _, ok := schemes[localFile.LocalPath]; !ok {
|
||||||
cdsNodeID := ccs[targetCCID].CDSNodeID
|
cdsNodeID := ccs[targetCCID].CDSStorageID
|
||||||
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
||||||
LocalPath: localFile.LocalPath,
|
LocalPath: localFile.LocalPath,
|
||||||
UploadToCDSNodeID: &cdsNodeID,
|
UploadToCDStorageID: cdsNodeID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if localFile, ok := files.Image.(*schsdk.LocalJobFileInfo); ok {
|
if localFile, ok := files.Image.(*schsdk.LocalJobFileInfo); ok {
|
||||||
if _, ok := schemes[localFile.LocalPath]; !ok {
|
if _, ok := schemes[localFile.LocalPath]; !ok {
|
||||||
cdsNodeID := ccs[targetCCID].CDSNodeID
|
cdsNodeID := ccs[targetCCID].CDSStorageID
|
||||||
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
schemes[localFile.LocalPath] = schsdk.LocalFileUploadScheme{
|
||||||
LocalPath: localFile.LocalPath,
|
LocalPath: localFile.LocalPath,
|
||||||
UploadToCDSNodeID: &cdsNodeID,
|
UploadToCDStorageID: cdsNodeID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
log "gitlink.org.cn/cloudream/common/pkgs/logger"
|
log "gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
|
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
c "gitlink.org.cn/cloudream/common/utils/config"
|
c "gitlink.org.cn/cloudream/common/utils/config"
|
||||||
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
||||||
mymq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
mymq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
||||||
|
@ -19,7 +19,7 @@ type Config struct {
|
||||||
Logger log.Config `json:"logger"`
|
Logger log.Config `json:"logger"`
|
||||||
ReportIntervalSec int `json:"reportIntervalSec"`
|
ReportIntervalSec int `json:"reportIntervalSec"`
|
||||||
RabbitMQ mymq.Config `json:"rabbitMQ"`
|
RabbitMQ mymq.Config `json:"rabbitMQ"`
|
||||||
CloudreamStorage cdssdk.Config `json:"cloudreamStorage"`
|
CloudreamStorage cdsapi.Config `json:"cloudreamStorage"`
|
||||||
PCM pcmsdk.Config `json:"pcm"`
|
PCM pcmsdk.Config `json:"pcm"`
|
||||||
Application Application `json:"application"`
|
Application Application `json:"application"`
|
||||||
Rclone schsdk.Rclone `json:"rclone"`
|
Rclone schsdk.Rclone `json:"rclone"`
|
||||||
|
|
|
@ -2,8 +2,9 @@ package task
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
||||||
)
|
)
|
||||||
|
@ -38,10 +39,10 @@ func (t *CacheMovePackage) do(ctx TaskContext) error {
|
||||||
}
|
}
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
_, err = stgCli.CacheMovePackage(cdssdk.CacheMovePackageReq{
|
_, err = stgCli.CacheMovePackage(cdsapi.CacheMovePackageReq{
|
||||||
UserID: t.UserID,
|
UserID: t.UserID,
|
||||||
PackageID: t.PackageID,
|
PackageID: t.PackageID,
|
||||||
NodeID: t.StgNodeID,
|
StorageID: t.StgID,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -2,8 +2,9 @@ package task
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
||||||
)
|
)
|
||||||
|
@ -37,7 +38,7 @@ func (t *StorageCreatePackage) do(task *Task, ctx TaskContext) error {
|
||||||
}
|
}
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
resp, err := stgCli.StorageCreatePackage(cdssdk.StorageCreatePackageReq{
|
resp, err := stgCli.StorageCreatePackage(cdsapi.StorageCreatePackageReq{
|
||||||
UserID: t.UserID,
|
UserID: t.UserID,
|
||||||
StorageID: t.StorageID,
|
StorageID: t.StorageID,
|
||||||
Path: t.Path,
|
Path: t.Path,
|
||||||
|
|
|
@ -2,8 +2,9 @@ package task
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
||||||
)
|
)
|
||||||
|
@ -39,7 +40,7 @@ func (t *StorageLoadPackage) do(ctx TaskContext) (string, error) {
|
||||||
}
|
}
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
resp, err := stgCli.StorageLoadPackage(cdssdk.StorageLoadPackageReq{
|
resp, err := stgCli.StorageLoadPackage(cdsapi.StorageLoadPackageReq{
|
||||||
UserID: t.UserID,
|
UserID: t.UserID,
|
||||||
PackageID: t.PackageID,
|
PackageID: t.PackageID,
|
||||||
StorageID: t.StorageID,
|
StorageID: t.StorageID,
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
2024-04-16 10:03:59 [INFO] start serving mq server
|
||||||
|
2024-04-16 10:03:59 [INFO] start serving scheduler service
|
||||||
|
2024-04-16 10:03:59 [INFO] start serving reporter
|
||||||
|
2024-04-16 10:04:14 [INFO] start serving mq server
|
||||||
|
2024-04-16 10:04:14 [INFO] start serving reporter
|
||||||
|
2024-04-16 10:04:14 [INFO] start serving scheduler service
|
||||||
|
2024-04-16 10:04:31 [INFO] start serving scheduler service
|
||||||
|
2024-04-16 10:04:31 [INFO] start serving reporter
|
||||||
|
2024-04-16 10:04:31 [INFO] start serving mq server
|
|
@ -0,0 +1 @@
|
||||||
|
2024-04-16 10:03:21 [INFO] start serving command server
|
|
@ -3,7 +3,7 @@ package config
|
||||||
import (
|
import (
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
"gitlink.org.cn/cloudream/common/utils/config"
|
"gitlink.org.cn/cloudream/common/utils/config"
|
||||||
db "gitlink.org.cn/cloudream/scheduler/common/pkgs/db/config"
|
db "gitlink.org.cn/cloudream/scheduler/common/pkgs/db/config"
|
||||||
scmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
scmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
|
||||||
|
@ -13,7 +13,7 @@ type Config struct {
|
||||||
Logger logger.Config `json:"logger"`
|
Logger logger.Config `json:"logger"`
|
||||||
RabbitMQ scmq.Config `json:"rabbitMQ"`
|
RabbitMQ scmq.Config `json:"rabbitMQ"`
|
||||||
DB db.Config `json:"db"`
|
DB db.Config `json:"db"`
|
||||||
CloudreamStorage cdssdk.Config `json:"cloudreamStorage"`
|
CloudreamStorage cdsapi.Config `json:"cloudreamStorage"`
|
||||||
ReportTimeoutSecs int `json:"reportTimeoutSecs"`
|
ReportTimeoutSecs int `json:"reportTimeoutSecs"`
|
||||||
CDSRclone schsdk.Rclone `json:"CDSRclone"`
|
CDSRclone schsdk.Rclone `json:"CDSRclone"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,11 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||||
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
||||||
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
||||||
|
@ -128,7 +128,7 @@ func (s *Adjusting) doPackageScheduling(ctx context.Context, rtx jobmgr.JobState
|
||||||
if scheme.Action == jobmod.ActionMove {
|
if scheme.Action == jobmod.ActionMove {
|
||||||
logger.Debugf("begin move pacakge %v to %v", file.PackageID, s.targetCCInfo.CDSStorageID)
|
logger.Debugf("begin move pacakge %v to %v", file.PackageID, s.targetCCInfo.CDSStorageID)
|
||||||
|
|
||||||
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, file.PackageID, s.targetCCInfo.CDSNodeID), s.targetCCInfo)
|
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, file.PackageID, s.targetCCInfo.CDSStorageID), s.targetCCInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -169,12 +169,15 @@ func (s *Adjusting) doPackageScheduling(ctx context.Context, rtx jobmgr.JobState
|
||||||
|
|
||||||
func (s *Adjusting) doImageScheduling(ctx context.Context, rtx jobmgr.JobStateRunContext, targetCCID schsdk.CCID, fileInfo schsdk.JobFileInfo, file *jobmod.ImageJobFile, scheme *jobmod.FileScheduleScheme) error {
|
func (s *Adjusting) doImageScheduling(ctx context.Context, rtx jobmgr.JobStateRunContext, targetCCID schsdk.CCID, fileInfo schsdk.JobFileInfo, file *jobmod.ImageJobFile, scheme *jobmod.FileScheduleScheme) error {
|
||||||
if scheme.Action == jobmod.ActionImportImage {
|
if scheme.Action == jobmod.ActionImportImage {
|
||||||
|
// TODO 镜像文件位置需要重新设计
|
||||||
|
return fmt.Errorf("not implemented yet")
|
||||||
|
|
||||||
if file.PackageID == nil {
|
if file.PackageID == nil {
|
||||||
return fmt.Errorf("image %v has no associated package, which cannot be uploaded to %v", file.ImageID, s.targetCCInfo.CCID)
|
return fmt.Errorf("image %v has no associated package, which cannot be uploaded to %v", file.ImageID, s.targetCCInfo.CCID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, *file.PackageID, s.targetCCInfo.CDSNodeID), s.targetCCInfo)
|
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, *file.PackageID, s.targetCCInfo.CDSStorageID), s.targetCCInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -194,7 +197,7 @@ func (s *Adjusting) doImageScheduling(ctx context.Context, rtx jobmgr.JobStateRu
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
pkgObjs, err := stgCli.Object().GetPackageObjects(cdssdk.ObjectGetPackageObjects{UserID: 1, PackageID: *file.PackageID})
|
pkgObjs, err := stgCli.Object().GetPackageObjects(cdsapi.ObjectGetPackageObjects{UserID: 1, PackageID: *file.PackageID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getting package objects: %w", err)
|
return fmt.Errorf("getting package objects: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -207,27 +210,27 @@ func (s *Adjusting) doImageScheduling(ctx context.Context, rtx jobmgr.JobStateRu
|
||||||
return fmt.Errorf("there must be only 1 object in the package which will be imported")
|
return fmt.Errorf("there must be only 1 object in the package which will be imported")
|
||||||
}
|
}
|
||||||
|
|
||||||
taskStatus2, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewUploadImage(s.targetCCInfo.PCMParticipantID, cdssdk.MakeIPFSFilePath(pkgObjs.Objects[0].FileHash)), s.targetCCInfo)
|
// taskStatus2, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewUploadImage(s.targetCCInfo.PCMParticipantID, cdsapi.MakeIPFSFilePath(pkgObjs.Objects[0].FileHash)), s.targetCCInfo)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
// return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
// }
|
||||||
|
|
||||||
fut2 := taskStatus2.Receive()
|
// fut2 := taskStatus2.Receive()
|
||||||
status2 := <-fut2.Chan()
|
// status2 := <-fut2.Chan()
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return fmt.Errorf("uploading image: %w", err)
|
// return fmt.Errorf("uploading image: %w", err)
|
||||||
}
|
// }
|
||||||
|
|
||||||
uploadStatus := status2.Value.Status.(*exectsk.UploadImageStatus)
|
// uploadStatus := status2.Value.Status.(*exectsk.UploadImageStatus)
|
||||||
if uploadStatus.Error != "" {
|
// if uploadStatus.Error != "" {
|
||||||
return fmt.Errorf("uploading image: %s", uploadStatus.Error)
|
// return fmt.Errorf("uploading image: %s", uploadStatus.Error)
|
||||||
}
|
// }
|
||||||
|
|
||||||
// TODO 镜像名称
|
// // TODO 镜像名称
|
||||||
err = rtx.Mgr.DB.PCMImage().Create(rtx.Mgr.DB.SQLCtx(), file.ImageID, targetCCID, uploadStatus.PCMImageID, uploadStatus.Name, time.Now())
|
// err = rtx.Mgr.DB.PCMImage().Create(rtx.Mgr.DB.SQLCtx(), file.ImageID, targetCCID, uploadStatus.PCMImageID, uploadStatus.Name, time.Now())
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return fmt.Errorf("creating image info: %w", err)
|
// return fmt.Errorf("creating image info: %w", err)
|
||||||
}
|
// }
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,17 @@ package state
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/future"
|
"gitlink.org.cn/cloudream/common/pkgs/future"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdsapi "gitlink.org.cn/cloudream/common/sdks/storage"
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||||
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
||||||
"gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor"
|
"gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor"
|
||||||
"gitlink.org.cn/cloudream/scheduler/manager/internal/executormgr"
|
"gitlink.org.cn/cloudream/scheduler/manager/internal/executormgr"
|
||||||
"path/filepath"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
|
pcmsdk "gitlink.org.cn/cloudream/common/sdks/pcm"
|
||||||
|
@ -51,7 +53,7 @@ func (s *JobExecuting) Dump(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) jobmo
|
||||||
|
|
||||||
func (s *JobExecuting) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) error {
|
func (s *JobExecuting) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) error {
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
userID := cdsapi.UserID(1)
|
userID := cdssdk.UserID(1)
|
||||||
err := error(nil)
|
err := error(nil)
|
||||||
|
|
||||||
switch runningJob := jo.Body.(type) {
|
switch runningJob := jo.Body.(type) {
|
||||||
|
@ -133,13 +135,13 @@ func (s *JobExecuting) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDataSetPathByID(packageID cdsapi.PackageID) string {
|
func getDataSetPathByID(packageID cdssdk.PackageID) string {
|
||||||
// TODO 临时使用,这个路径应该来自于CDS
|
// TODO 临时使用,这个路径应该来自于CDS
|
||||||
dataSetPath := filepath.Join("packages", "1", fmt.Sprintf("%v", packageID))
|
dataSetPath := filepath.Join("packages", "1", fmt.Sprintf("%v", packageID))
|
||||||
return dataSetPath
|
return dataSetPath
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadDatasetPackage(userID cdsapi.UserID, packageID cdsapi.PackageID, storageID cdsapi.StorageID) (string, error) {
|
func loadDatasetPackage(userID cdssdk.UserID, packageID cdssdk.PackageID, storageID cdssdk.StorageID) (string, error) {
|
||||||
stgCli, err := schglb.CloudreamStoragePool.Acquire()
|
stgCli, err := schglb.CloudreamStoragePool.Acquire()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -200,7 +202,7 @@ func (s *JobExecuting) submitNormalTask(rtx jobmgr.JobStateRunContext, cmd strin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *JobExecuting) submitDataPreprocessTask(rtx jobmgr.JobStateRunContext, cmd string, envs []schsdk.KVPair, ccInfo schmod.ComputingCenter, storageID cdsapi.StorageID, userID cdsapi.UserID) (string, error) {
|
func (s *JobExecuting) submitDataPreprocessTask(rtx jobmgr.JobStateRunContext, cmd string, envs []schsdk.KVPair, ccInfo schmod.ComputingCenter, storageID cdssdk.StorageID, userID cdssdk.UserID) (string, error) {
|
||||||
objectStorage, err := rtx.Mgr.DB.ObjectStorage().GetObjectStorageByStorageID(rtx.Mgr.DB.SQLCtx(), storageID)
|
objectStorage, err := rtx.Mgr.DB.ObjectStorage().GetObjectStorageByStorageID(rtx.Mgr.DB.SQLCtx(), storageID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err.Error())
|
logger.Error(err.Error())
|
||||||
|
@ -231,7 +233,7 @@ func (s *JobExecuting) submitDataPreprocessTask(rtx jobmgr.JobStateRunContext, c
|
||||||
return tskStatus.InstanceID, nil
|
return tskStatus.InstanceID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *JobExecuting) submitFinetuningTask(userID cdsapi.UserID, rtx jobmgr.JobStateRunContext, cmd string, envs []schsdk.KVPair, ccInfo schmod.ComputingCenter, storageID cdsapi.StorageID, runningJob *job.NormalJob) error {
|
func (s *JobExecuting) submitFinetuningTask(userID cdssdk.UserID, rtx jobmgr.JobStateRunContext, cmd string, envs []schsdk.KVPair, ccInfo schmod.ComputingCenter, storageID cdssdk.StorageID, runningJob *job.NormalJob) error {
|
||||||
|
|
||||||
objectStorage, modelInfo, err := getModelInfoAndObjectStorage(rtx, runningJob.Info.ModelJobInfo.ModelID, storageID)
|
objectStorage, modelInfo, err := getModelInfoAndObjectStorage(rtx, runningJob.Info.ModelJobInfo.ModelID, storageID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -265,7 +267,7 @@ func (s *JobExecuting) submitFinetuningTask(userID cdsapi.UserID, rtx jobmgr.Job
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *JobExecuting) submitInstanceTask(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job, runningJob *job.InstanceJob, ccInfo schmod.ComputingCenter,
|
func (s *JobExecuting) submitInstanceTask(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job, runningJob *job.InstanceJob, ccInfo schmod.ComputingCenter,
|
||||||
storageID cdsapi.StorageID, userID cdsapi.UserID, envs []schsdk.KVPair) error {
|
storageID cdssdk.StorageID, userID cdssdk.UserID, envs []schsdk.KVPair) error {
|
||||||
|
|
||||||
modelJobInfo := runningJob.Info.ModelJobInfo
|
modelJobInfo := runningJob.Info.ModelJobInfo
|
||||||
|
|
||||||
|
@ -370,7 +372,7 @@ func (s *JobExecuting) submitInstanceTask(rtx jobmgr.JobStateRunContext, jo *job
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getModelInfoAndObjectStorage(rtx jobmgr.JobStateRunContext, modelID schsdk.ModelID, storageID cdsapi.StorageID) (*schmod.ObjectStorage, *schmod.ModelResource, error) {
|
func getModelInfoAndObjectStorage(rtx jobmgr.JobStateRunContext, modelID schsdk.ModelID, storageID cdssdk.StorageID) (*schmod.ObjectStorage, *schmod.ModelResource, error) {
|
||||||
objectStorage, err := rtx.Mgr.DB.ObjectStorage().GetObjectStorageByStorageID(rtx.Mgr.DB.SQLCtx(), storageID)
|
objectStorage, err := rtx.Mgr.DB.ObjectStorage().GetObjectStorageByStorageID(rtx.Mgr.DB.SQLCtx(), storageID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err.Error())
|
logger.Error(err.Error())
|
||||||
|
@ -426,7 +428,7 @@ func getRuntimeCommand(runtime schsdk.JobRuntimeInfo, dataSetPath string, output
|
||||||
return cmd, envs
|
return cmd, envs
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCCInfoAndStgInfo(rtx jobmgr.JobStateRunContext, targetCCID schsdk.CCID, userID cdsapi.UserID) (*schmod.ComputingCenter, *cdsapi.StorageGetResp, error) {
|
func getCCInfoAndStgInfo(rtx jobmgr.JobStateRunContext, targetCCID schsdk.CCID, userID cdssdk.UserID) (*schmod.ComputingCenter, *cdsapi.StorageGetResp, error) {
|
||||||
ccInfo, err := rtx.Mgr.DB.ComputingCenter().GetByID(rtx.Mgr.DB.SQLCtx(), targetCCID)
|
ccInfo, err := rtx.Mgr.DB.ComputingCenter().GetByID(rtx.Mgr.DB.SQLCtx(), targetCCID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("getting computing center info: %w", err)
|
return nil, nil, fmt.Errorf("getting computing center info: %w", err)
|
||||||
|
@ -470,7 +472,7 @@ func (s *DataReturnJobExecuting) Dump(rtx jobmgr.JobStateRunContext, jo *jobmgr.
|
||||||
|
|
||||||
func (s *DataReturnJobExecuting) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) error {
|
func (s *DataReturnJobExecuting) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job) error {
|
||||||
reJob := jo.Body.(*job.DataReturnJob)
|
reJob := jo.Body.(*job.DataReturnJob)
|
||||||
userID := cdsapi.UserID(1)
|
userID := cdssdk.UserID(1)
|
||||||
|
|
||||||
log := logger.WithType[JobExecuting]("State").WithField("JobID", jo.JobID)
|
log := logger.WithType[JobExecuting]("State").WithField("JobID", jo.JobID)
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,12 @@ package state
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/future"
|
"gitlink.org.cn/cloudream/common/pkgs/future"
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
||||||
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
||||||
"gitlink.org.cn/cloudream/scheduler/manager/internal/jobmgr"
|
"gitlink.org.cn/cloudream/scheduler/manager/internal/jobmgr"
|
||||||
|
@ -77,12 +79,12 @@ func (s *MultiInstanceUpdate) do(rtx jobmgr.JobStateRunContext, jo *jobmgr.Job)
|
||||||
}
|
}
|
||||||
|
|
||||||
userID := cdssdk.UserID(1)
|
userID := cdssdk.UserID(1)
|
||||||
getStg, err := stgCli.StorageGet(cdssdk.StorageGet{
|
getStg, err := stgCli.StorageGet(cdsapi.StorageGet{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
StorageID: ccInfo.CDSStorageID,
|
StorageID: ccInfo.CDSStorageID,
|
||||||
})
|
})
|
||||||
|
|
||||||
loadPackageResp, err := stgCli.StorageLoadPackage(cdssdk.StorageLoadPackageReq{
|
loadPackageResp, err := stgCli.StorageLoadPackage(cdsapi.StorageLoadPackageReq{
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
PackageID: dtrJob.DataReturnPackageID,
|
PackageID: dtrJob.DataReturnPackageID,
|
||||||
StorageID: getStg.StorageID,
|
StorageID: getStg.StorageID,
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
||||||
|
|
||||||
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
|
||||||
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
||||||
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
||||||
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
schmod "gitlink.org.cn/cloudream/scheduler/common/models"
|
||||||
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
||||||
|
@ -148,9 +148,9 @@ func (s *PreScheduling) doPackageScheduling(ctx context.Context, rtx jobmgr.JobS
|
||||||
}
|
}
|
||||||
|
|
||||||
if scheme.Action == jobmod.ActionMove {
|
if scheme.Action == jobmod.ActionMove {
|
||||||
logger.Debugf("begin move pacakge %v to %v", file.PackageID, s.targetCCInfo.CDSNodeID)
|
logger.Debugf("begin move pacakge %v to %v", file.PackageID, s.targetCCInfo.CDSStorageID)
|
||||||
|
|
||||||
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, file.PackageID, s.targetCCInfo.CDSNodeID), s.targetCCInfo)
|
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, file.PackageID, s.targetCCInfo.CDSStorageID), s.targetCCInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -223,12 +223,15 @@ func (s *PreScheduling) doImageScheduling(ctx context.Context, rtx jobmgr.JobSta
|
||||||
}
|
}
|
||||||
|
|
||||||
if scheme.Action == jobmod.ActionImportImage {
|
if scheme.Action == jobmod.ActionImportImage {
|
||||||
|
// TODO 需要重新设计镜像导入流程
|
||||||
|
return fmt.Errorf("not implemented")
|
||||||
|
|
||||||
if file.PackageID == nil {
|
if file.PackageID == nil {
|
||||||
return fmt.Errorf("image %v has no associated package, which cannot be uploaded to %v", file.ImageID, s.targetCCInfo.CCID)
|
return fmt.Errorf("image %v has no associated package, which cannot be uploaded to %v", file.ImageID, s.targetCCInfo.CCID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, *file.PackageID, s.targetCCInfo.CDSNodeID), s.targetCCInfo)
|
taskStatus, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewCacheMovePackage(1, *file.PackageID, s.targetCCInfo.CDSStorageID), s.targetCCInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -248,7 +251,7 @@ func (s *PreScheduling) doImageScheduling(ctx context.Context, rtx jobmgr.JobSta
|
||||||
defer schglb.CloudreamStoragePool.Release(stgCli)
|
defer schglb.CloudreamStoragePool.Release(stgCli)
|
||||||
|
|
||||||
// TODO UserID
|
// TODO UserID
|
||||||
pkgObjs, err := stgCli.Object().GetPackageObjects(cdssdk.ObjectGetPackageObjects{UserID: 1, PackageID: *file.PackageID})
|
pkgObjs, err := stgCli.Object().GetPackageObjects(cdsapi.ObjectGetPackageObjects{UserID: 1, PackageID: *file.PackageID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getting package objects: %w", err)
|
return fmt.Errorf("getting package objects: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -261,7 +264,7 @@ func (s *PreScheduling) doImageScheduling(ctx context.Context, rtx jobmgr.JobSta
|
||||||
return fmt.Errorf("there must be only 1 object in the package which will be imported")
|
return fmt.Errorf("there must be only 1 object in the package which will be imported")
|
||||||
}
|
}
|
||||||
|
|
||||||
taskStatus2, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewUploadImage(s.targetCCInfo.PCMParticipantID, cdssdk.MakeIPFSFilePath(pkgObjs.Objects[0].FileHash)), s.targetCCInfo)
|
taskStatus2, err := rtx.Mgr.ExecMgr.StartTask(exectsk.NewUploadImage(s.targetCCInfo.PCMParticipantID, cdsapi.MakeIPFSFilePath(pkgObjs.Objects[0].FileHash)), s.targetCCInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("moving package: %w", err)
|
return fmt.Errorf("moving package: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,7 +198,7 @@ func (svc *Service) GetServiceList(msg *mgrmq.GetServiceList) (*mgrmq.GetService
|
||||||
var jobSetServiceInfos []schsdk.JobSetServiceInfo
|
var jobSetServiceInfos []schsdk.JobSetServiceInfo
|
||||||
|
|
||||||
for _, jo := range jobs {
|
for _, jo := range jobs {
|
||||||
var cdsNodeID *cdssdk.NodeID
|
var cdsNodeID cdssdk.StorageID
|
||||||
|
|
||||||
norJob, ok := jo.Body.(*jobmod.NormalJobDump)
|
norJob, ok := jo.Body.(*jobmod.NormalJobDump)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -212,20 +212,16 @@ func (svc *Service) GetServiceList(msg *mgrmq.GetServiceList) (*mgrmq.GetService
|
||||||
return nil, mq.Failed(errorcode.OperationFailed, fmt.Sprintf("get cdsNodeID failed by CCID: %s", err.Error()))
|
return nil, mq.Failed(errorcode.OperationFailed, fmt.Sprintf("get cdsNodeID failed by CCID: %s", err.Error()))
|
||||||
}
|
}
|
||||||
|
|
||||||
cdsNodeID = &computingCenter.CDSNodeID
|
cdsNodeID = computingCenter.CDSStorageID
|
||||||
|
|
||||||
} else {
|
|
||||||
//返回空指针,表明查询任务不在执行状态,没有id
|
|
||||||
cdsNodeID = nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
norJobInfo := jo.Info.(*schsdk.NormalJobInfo)
|
norJobInfo := jo.Info.(*schsdk.NormalJobInfo)
|
||||||
for _, servicePortInfo := range norJobInfo.Services.ServicePortInfos {
|
for _, servicePortInfo := range norJobInfo.Services.ServicePortInfos {
|
||||||
jobSetServiceInfo := schsdk.JobSetServiceInfo{
|
jobSetServiceInfo := schsdk.JobSetServiceInfo{
|
||||||
Name: servicePortInfo.Name,
|
Name: servicePortInfo.Name,
|
||||||
Port: servicePortInfo.Port,
|
Port: servicePortInfo.Port,
|
||||||
CDSNodeID: cdsNodeID,
|
CDSStorageID: cdsNodeID,
|
||||||
LocalJobID: norJobInfo.LocalJobID,
|
LocalJobID: norJobInfo.LocalJobID,
|
||||||
}
|
}
|
||||||
jobSetServiceInfos = append(jobSetServiceInfos, jobSetServiceInfo)
|
jobSetServiceInfos = append(jobSetServiceInfos, jobSetServiceInfo)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue