Browse Source

#2624

update
tags/v1.22.8.2^2
chenyifan01 3 years ago
parent
commit
11dbd635ef
2 changed files with 41 additions and 32 deletions
  1. +33
    -32
      models/resource_scene.go
  2. +8
    -0
      services/cloudbrain/resource/resource_queue.go

+ 33
- 32
models/resource_scene.go View File

@@ -17,7 +17,6 @@ type ResourceScene struct {
JobType string
IsExclusive bool
ExclusiveOrg string
QueueId int64
CreatedTime timeutil.TimeStamp `xorm:"created"`
CreatedBy int64
UpdatedTime timeutil.TimeStamp `xorm:"updated"`
@@ -39,7 +38,6 @@ type ResourceSceneReq struct {
JobType string
IsExclusive bool
ExclusiveOrg string
QueueId int64
CreatorId int64
SpecIds []int64
}
@@ -65,18 +63,12 @@ func NewResourceSceneListRes(totalSize int64, list []ResourceSceneRes) *Resource
}

type ResourceSceneRes struct {
ID int64
SceneName string
JobType JobType
IsExclusive bool
ExclusiveOrg string
Cluster string
AiCenterCode string
QueueCode string
QueueId int64
ComputeResource string
AccCardType string
Specs []ResourceSpecWithSceneId
ID int64
SceneName string
JobType JobType
IsExclusive bool
ExclusiveOrg string
Specs []ResourceSpecWithSceneId
}

func (ResourceSceneRes) TableName() string {
@@ -104,6 +96,13 @@ type ResourceSpecWithSceneId struct {
Status int
UpdatedTime timeutil.TimeStamp
SceneId int64
//queue
Cluster string
AiCenterCode string
QueueCode string
QueueId int64
ComputeResource string
AccCardType string
}

func (ResourceSpecWithSceneId) TableName() string {
@@ -116,7 +115,7 @@ func InsertResourceScene(r ResourceSceneReq) error {

//check
specs := make([]ResourceSpecification, 0)
cond := builder.In("id", r.SpecIds).And(builder.Eq{"queue_id": r.QueueId}).And(builder.Eq{"status": SpecOnShelf})
cond := builder.In("id", r.SpecIds).And(builder.Eq{"status": SpecOnShelf})
if err := sess.Where(cond).Find(&specs); err != nil {
return err
}
@@ -129,7 +128,6 @@ func InsertResourceScene(r ResourceSceneReq) error {
JobType: r.JobType,
IsExclusive: r.IsExclusive,
ExclusiveOrg: r.ExclusiveOrg,
QueueId: r.QueueId,
CreatedBy: r.CreatorId,
UpdatedBy: r.CreatorId,
}
@@ -176,7 +174,7 @@ func UpdateResourceScene(r ResourceSceneReq) error {
}
//check specification
specs := make([]ResourceSpecification, 0)
cond := builder.In("id", r.SpecIds).And(builder.Eq{"queue_id": old.QueueId}).And(builder.Eq{"status": SpecOnShelf})
cond := builder.In("id", r.SpecIds).And(builder.Eq{"status": SpecOnShelf})
if err := sess.Where(cond).Find(&specs); err != nil {
return err
}
@@ -258,16 +256,20 @@ func SearchResourceScene(opts SearchResourceSceneOptions) (int64, []ResourceScen
cond = cond.And(builder.Eq{"resource_scene.queue_id": opts.QueueId})
}
cond = cond.And(builder.NewCond().Or(builder.Eq{"resource_scene.delete_time": 0}).Or(builder.IsNull{"resource_scene.delete_time"}))
count, err := x.Where(cond).Join("INNER", "resource_queue", "resource_queue.id = resource_scene.queue_id").Count(&ResourceSceneRes{})
count, err := x.Where(cond).
Join("INNER", "resource_scene_spec", "resource_scene_spec.scene_id = resource_scene.id").
Join("INNER", "resource_specification", "resource_specification.id = resource_scene_spec.spec_id").
Join("INNER", "resource_queue", "resource_queue.id = resource_specification.queue_id").Count(&ResourceSceneRes{})
if err != nil {
return 0, nil, err
}
cols := []string{"resource_scene.id", "resource_scene.scene_name", "resource_scene.job_type", "resource_scene.is_exclusive",
"resource_scene.exclusive_org", "resource_queue.cluster", "resource_queue.ai_center_code", "resource_queue.acc_card_type",
"resource_queue.id as queue_id", "resource_queue.compute_resource", "resource_queue.queue_code"}
"resource_scene.exclusive_org"}
r := make([]ResourceSceneRes, 0)
if err = x.Where(cond).Cols(cols...).
Join("INNER", "resource_queue", "resource_queue.id = resource_scene.queue_id").
Join("INNER", "resource_scene_spec", "resource_scene_spec.scene_id = resource_scene.id").
Join("INNER", "resource_specification", "resource_specification.id = resource_scene_spec.spec_id").
Join("INNER", "resource_queue", "resource_queue.id = resource_specification.queue_id").
Desc("resource_scene.id").
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
Find(&r); err != nil {
@@ -285,19 +287,18 @@ func SearchResourceScene(opts SearchResourceSceneOptions) (int64, []ResourceScen

specs := make([]ResourceSpecWithSceneId, 0)

if err := x.Cols("resource_specification.id",
"resource_specification.source_spec_id",
"resource_specification.acc_cards_num",
"resource_specification.cpu_cores",
"resource_specification.mem_gi_b",
"resource_specification.gpu_mem_gi_b",
"resource_specification.share_mem_gi_b",
"resource_specification.unit_price",
"resource_specification.status",
"resource_specification.updated_time",
"resource_scene_spec.scene_id",
if err := x.Cols("resource_specification.id", "resource_specification.source_spec_id",
"resource_specification.acc_cards_num", "resource_specification.cpu_cores",
"resource_specification.mem_gi_b", "resource_specification.gpu_mem_gi_b",
"resource_specification.share_mem_gi_b", "resource_specification.unit_price",
"resource_specification.status", "resource_specification.updated_time",
"resource_scene_spec.scene_id", "resource_queue.cluster",
"resource_queue.ai_center_code", "resource_queue.acc_card_type",
"resource_queue.id as queue_id", "resource_queue.compute_resource",
"resource_queue.queue_code",
).In("resource_scene_spec.scene_id", sceneIds).
Join("INNER", "resource_scene_spec", "resource_scene_spec.spec_id = resource_specification.id").
Join("INNER", "resource_queue", "resource_queue.ID = resource_specification.queue_id").
OrderBy("resource_specification.acc_cards_num").
Find(&specs); err != nil {
return 0, nil, err


+ 8
- 0
services/cloudbrain/resource/resource_queue.go View File

@@ -3,6 +3,8 @@ package resource
import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/grampus"
"code.gitea.io/gitea/modules/log"
"fmt"
"strings"
)

@@ -106,6 +108,12 @@ func SyncGrampusQueue(doerId int64) error {
}

func SyncGrampusQueueAndSpecs() {
defer func() {
if err := recover(); err != nil {
combinedErr := fmt.Errorf("%s\n%s", err, log.Stack(2))
log.Error("PANIC:", combinedErr)
}
}()
SyncGrampusQueue(0)
SyncGrampusSpecs(0)
}

Loading…
Cancel
Save