|
|
|
@@ -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 |
|
|
|
|