diff --git a/pkg/compute/models/initdb.go b/pkg/compute/models/initdb.go index 783e6a982c..4c6010aa33 100644 --- a/pkg/compute/models/initdb.go +++ b/pkg/compute/models/initdb.go @@ -29,6 +29,7 @@ func InitDB() error { LoadbalancerBackendManager, SchedtagManager, DynamicschedtagManager, + ServerSkuManager, } { err := manager.InitializeData() if err != nil { diff --git a/pkg/compute/models/skus.go b/pkg/compute/models/skus.go index 3d5a0ca72c..8b976781a8 100644 --- a/pkg/compute/models/skus.go +++ b/pkg/compute/models/skus.go @@ -77,8 +77,9 @@ type SServerSku struct { db.SStandaloneResourceBase // SkuId string `width:"64" charset:"ascii" nullable:"false" list:"user" create:"admin_required"` // x2.large - InstanceTypeFamily string `width:"32" charset:"ascii" nullable:"false" list:"user" create:"admin_optional" update:"admin"` // x2 - InstanceTypeCategory string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"admin_optional" update:"admin"` // 通用型 + InstanceTypeFamily string `width:"32" charset:"ascii" nullable:"false" list:"user" create:"admin_optional" update:"admin"` // x2 + InstanceTypeCategory string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"admin_optional" update:"admin"` // 通用型 + LocalCategory string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"admin_optional" update:"admin" default:""` // 记录本地分类 PrepaidStatus string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"admin_optional" update:"admin" default:"available"` // 预付费资源状态 available|soldout PostpaidStatus string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"admin_optional" update:"admin" default:"available"` // 按需付费资源状态 available|soldout @@ -338,6 +339,7 @@ func (self *SServerSkuManager) ValidateCreateData(ctx context.Context, if !exists { return nil, httperrors.NewInputParameterError("instance_type_category %s is invalid", category) } + data.Add(jsonutils.NewString(category),"local_category") data.Set("instance_type_family", jsonutils.NewString(family)) // 格式 ecs.g1.c1m1 @@ -1065,3 +1067,23 @@ func (manager *SServerSkuManager) FetchAllAvailableSkuIdByZoneId(zoneId string) return ids, nil } + +func (manager *SServerSkuManager) InitializeData() error { + privateSkus := make([]SServerSku, 0) + err := manager.Query().IsNullOrEmpty("local_category").IsNullOrEmpty("zone_id").All(&privateSkus) + if err != nil { + return err + } + + for _, sku := range privateSkus { + _, err = manager.TableSpec().Update(&sku, func() error { + sku.LocalCategory = sku.InstanceTypeCategory + return nil + }) + if err != nil { + return err + } + } + + return nil +}