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


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


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


//check //check
specs := make([]ResourceSpecification, 0) 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 { if err := sess.Where(cond).Find(&specs); err != nil {
return err return err
} }
@@ -129,7 +128,6 @@ func InsertResourceScene(r ResourceSceneReq) error {
JobType: r.JobType, JobType: r.JobType,
IsExclusive: r.IsExclusive, IsExclusive: r.IsExclusive,
ExclusiveOrg: r.ExclusiveOrg, ExclusiveOrg: r.ExclusiveOrg,
QueueId: r.QueueId,
CreatedBy: r.CreatorId, CreatedBy: r.CreatorId,
UpdatedBy: r.CreatorId, UpdatedBy: r.CreatorId,
} }
@@ -176,7 +174,7 @@ func UpdateResourceScene(r ResourceSceneReq) error {
} }
//check specification //check specification
specs := make([]ResourceSpecification, 0) 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 { if err := sess.Where(cond).Find(&specs); err != nil {
return err 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.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"})) 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 { if err != nil {
return 0, nil, err return 0, nil, err
} }
cols := []string{"resource_scene.id", "resource_scene.scene_name", "resource_scene.job_type", "resource_scene.is_exclusive", 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) r := make([]ResourceSceneRes, 0)
if err = x.Where(cond).Cols(cols...). 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"). Desc("resource_scene.id").
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
Find(&r); err != nil { Find(&r); err != nil {
@@ -285,19 +287,18 @@ func SearchResourceScene(opts SearchResourceSceneOptions) (int64, []ResourceScen


specs := make([]ResourceSpecWithSceneId, 0) 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). ).In("resource_scene_spec.scene_id", sceneIds).
Join("INNER", "resource_scene_spec", "resource_scene_spec.spec_id = resource_specification.id"). 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"). OrderBy("resource_specification.acc_cards_num").
Find(&specs); err != nil { Find(&specs); err != nil {
return 0, nil, err return 0, nil, err


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

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


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


func SyncGrampusQueueAndSpecs() { 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) SyncGrampusQueue(0)
SyncGrampusSpecs(0) SyncGrampusSpecs(0)
} }

Loading…
Cancel
Save