From ae2dfd235dd3614fe2ba4e7f1820dae0ad6d0b9d Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Mon, 8 Aug 2022 17:42:41 +0800 Subject: [PATCH] #2624 update --- models/resource_specification.go | 48 +++++++++++++------ routers/admin/resources.go | 8 +++- .../resource/resource_specification.go | 23 ++++++++- 3 files changed, 61 insertions(+), 18 deletions(-) diff --git a/models/resource_specification.go b/models/resource_specification.go index 4aee172b0..e6b90b131 100644 --- a/models/resource_specification.go +++ b/models/resource_specification.go @@ -7,8 +7,8 @@ import ( const ( SpecNotVerified int = iota + 1 - SpecEffective - SpecNotEffective + SpecOnShelf + SpecOffShelf ) type ResourceSpecification struct { @@ -16,8 +16,9 @@ type ResourceSpecification struct { QueueId int64 `xorm:"INDEX"` SourceSpecId string `xorm:"INDEX"` AccCardsNum int - CpuNum int + CpuCores int MemMiB int + GPUMemMiB int ShareMemMiB int UnitPrice int Status int @@ -33,9 +34,10 @@ func (r ResourceSpecification) ConvertToRes() *ResourceSpecificationRes { ID: r.ID, SourceSpecId: r.SourceSpecId, AccCardsNum: r.AccCardsNum, - CpuNum: r.CpuNum, - MemMiB: r.MemMiB, + CpuCores: r.CpuCores, + MemMiB: r.GPUMemMiB, ShareMemMiB: r.ShareMemMiB, + GPUMemMiB: r.GPUMemMiB, UnitPrice: r.UnitPrice, Status: r.Status, } @@ -44,9 +46,10 @@ func (r ResourceSpecification) ConvertToRes() *ResourceSpecificationRes { type ResourceSpecificationReq struct { QueueId int64 `binding:"Required"` AccCardsNum int - CpuNum int - MemGiB int - ShareMemGiB int + CpuCores int + MemMiB int + GPUMemMiB int + ShareMemMiB int UnitPrice int Status int IsAutomaticSync bool @@ -57,9 +60,10 @@ func (r ResourceSpecificationReq) ToDTO() ResourceSpecification { return ResourceSpecification{ QueueId: r.QueueId, AccCardsNum: r.AccCardsNum, - CpuNum: r.CpuNum, - MemMiB: r.MemGiB * 1024, - ShareMemMiB: r.ShareMemGiB * 1024, + CpuCores: r.CpuCores, + MemMiB: r.MemMiB, + GPUMemMiB: r.GPUMemMiB, + ShareMemMiB: r.ShareMemMiB, UnitPrice: r.UnitPrice, Status: r.Status, IsAutomaticSync: r.IsAutomaticSync, @@ -94,8 +98,9 @@ type ResourceSpecificationRes struct { ID int64 SourceSpecId string AccCardsNum int - CpuNum int + CpuCores int MemMiB int + GPUMemMiB int ShareMemMiB int UnitPrice int Status int @@ -122,8 +127,8 @@ func (r ResourceSpecAndQueue) ConvertToRes() *ResourceSpecAndQueueRes { } } -func InsertResourceSpecification(queue ResourceSpecification) (int64, error) { - return x.Insert(&queue) +func InsertResourceSpecification(r ResourceSpecification) (int64, error) { + return x.Insert(&r) } func UpdateResourceSpecificationById(queueId int64, queue ResourceSpecification) (int64, error) { @@ -157,3 +162,18 @@ func SearchResourceSpecification(opts SearchResourceSpecificationOptions) (int64 } return n, r, nil } + +func ResourceSpecOnShelf(id int64) (int64, error) { + param := ResourceSpecification{ + Status: SpecOnShelf, + } + return x.Where("id = ? and status in (?,?)", id, SpecOffShelf, SpecNotVerified).Update(¶m) +} + +func ResourceSpecOffShelf(id int64) (int64, error) { + //todo delete scene + param := ResourceSpecification{ + Status: SpecOffShelf, + } + return x.Where("id = ? and status = ?", id, SpecOnShelf).Update(¶m) +} diff --git a/routers/admin/resources.go b/routers/admin/resources.go index c7ea9dfef..172b8dc7a 100644 --- a/routers/admin/resources.go +++ b/routers/admin/resources.go @@ -132,8 +132,12 @@ func UpdateResourceSpecification(ctx *context.Context, req models.ResourceSpecif ctx.JSON(http.StatusOK, response.ServerError("param error")) return } - //only UnitPrice permitted to change - err = resource.UpdateUnitPrice(id, req.UnitPrice) + //only UnitPrice and permitted to change + err = resource.UpdateResourceSpecification(id, req) + case "on-shelf": + err = resource.ResourceSpecOnShelf(id) + case "off-shelf": + err = resource.ResourceSpecOffShelf(id) } if err != nil { diff --git a/services/cloudbrain/resource/resource_specification.go b/services/cloudbrain/resource/resource_specification.go index 9de0b6cef..a22f0415e 100644 --- a/services/cloudbrain/resource/resource_specification.go +++ b/services/cloudbrain/resource/resource_specification.go @@ -14,8 +14,10 @@ func AddResourceSpecification(req models.ResourceSpecificationReq) error { return nil } -func UpdateUnitPrice(specId int64, unitPrice int) error { - if _, err := models.UpdateResourceSpecificationById(specId, models.ResourceSpecification{UnitPrice: unitPrice}); err != nil { +func UpdateResourceSpecification(specId int64, req models.ResourceSpecificationReq) error { + if _, err := models.UpdateResourceSpecificationById(specId, models.ResourceSpecification{ + UnitPrice: req.UnitPrice, + }); err != nil { return err } return nil @@ -29,3 +31,20 @@ func GetResourceSpecificationList(opts models.SearchResourceSpecificationOptions return models.NewResourceSpecAndQueueListRes(n, r), nil } + +func ResourceSpecOnShelf(id int64) error { + _, err := models.ResourceSpecOnShelf(id) + if err != nil { + return err + } + return nil + +} +func ResourceSpecOffShelf(id int64) error { + _, err := models.ResourceSpecOffShelf(id) + if err != nil { + return err + } + return nil + +}