From 2d2c62cd81cf64759130289b5c4f10df951c98ce Mon Sep 17 00:00:00 2001 From: elizabevil Date: Mon, 20 Apr 2026 17:14:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=8A=9F=E8=83=BD=20--story=3D132638579=20CM?= =?UTF-8?q?DB=E6=A8=A1=E5=9E=8Blabels=E5=8A=9F=E8=83=BD=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/scene_server/admin_server/imports.go --- src/common/metadata/object.go | 6 +- src/scene_server/admin_server/imports.go | 1 + .../y3.14.202604101200/addObjLabelField.go | 66 +++++++++++++++++++ .../upgrader/y3.14.202604101200/pkg.go | 42 ++++++++++++ .../topo_server/logics/model/object.go | 8 ++- 5 files changed, 120 insertions(+), 3 deletions(-) create mode 100755 src/scene_server/admin_server/upgrader/y3.14.202604101200/addObjLabelField.go create mode 100755 src/scene_server/admin_server/upgrader/y3.14.202604101200/pkg.go diff --git a/src/common/metadata/object.go b/src/common/metadata/object.go index 27eb2c0bde..c3a0b5a93e 100644 --- a/src/common/metadata/object.go +++ b/src/common/metadata/object.go @@ -47,6 +47,8 @@ const ( ModelFieldOwnerID = "bk_supplier_account" // ModelFieldDescription TODO ModelFieldDescription = "description" + // ModelFieldLabels TODO + ModelFieldLabels = "bk_labels" // ModelFieldCreator TODO ModelFieldCreator = "creator" // ModelFieldModifier TODO @@ -68,7 +70,8 @@ type Object struct { ObjectName string `field:"bk_obj_name" json:"bk_obj_name" bson:"bk_obj_name" mapstructure:"bk_obj_name"` // IsHidden front-end don't display the object if IsHidden is true - IsHidden bool `field:"bk_ishidden" json:"bk_ishidden" bson:"bk_ishidden" mapstructure:"bk_ishidden"` + IsHidden bool `field:"bk_ishidden" json:"bk_ishidden" bson:"bk_ishidden" mapstructure:"bk_ishidden"` + Labels []string `field:"bk_labels" json:"bk_labels" bson:"bk_labels" mapstructure:"bk_labels"` IsPre bool `field:"ispre" json:"ispre" bson:"ispre" mapstructure:"ispre"` IsPaused bool `field:"bk_ispaused" json:"bk_ispaused" bson:"bk_ispaused" mapstructure:"bk_ispaused"` @@ -331,6 +334,7 @@ type YamlObject struct { ObjectName string `json:"bk_obj_name" yaml:"bk_obj_name"` ObjIcon string `json:"bk_obj_icon" yaml:"bk_obj_icon"` IsPre bool `json:"ispre" yaml:"ispre"` + Labels []string `json:"bk_labels" yaml:"bk_labels"` ObjSortNumber int64 `json:"obj_sort_number" yaml:"obj_sort_number"` ClsID string `json:"bk_classification_id" yaml:"bk_classification_id"` ClsName string `json:"bk_classification_name" yaml:"bk_classification_name"` diff --git a/src/scene_server/admin_server/imports.go b/src/scene_server/admin_server/imports.go index 5a88012acb..523c72e432 100644 --- a/src/scene_server/admin_server/imports.go +++ b/src/scene_server/admin_server/imports.go @@ -121,5 +121,6 @@ import ( _ "configcenter/src/scene_server/admin_server/upgrader/y3.14.202410100930" _ "configcenter/src/scene_server/admin_server/upgrader/y3.14.202502101200" _ "configcenter/src/scene_server/admin_server/upgrader/y3.14.202603231000" + _ "configcenter/src/scene_server/admin_server/upgrader/y3.14.202604101200" _ "configcenter/src/scene_server/admin_server/upgrader/y3.14.202605111642" ) diff --git a/src/scene_server/admin_server/upgrader/y3.14.202604101200/addObjLabelField.go b/src/scene_server/admin_server/upgrader/y3.14.202604101200/addObjLabelField.go new file mode 100755 index 0000000000..ca9b63801c --- /dev/null +++ b/src/scene_server/admin_server/upgrader/y3.14.202604101200/addObjLabelField.go @@ -0,0 +1,66 @@ +/* + * Tencent is pleased to support the open source community by making + * 蓝鲸智云 - 配置平台 (BlueKing - Configuration System) available. + * Copyright (C) 2017 Tencent. All rights reserved. + * Licensed under the MIT License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * We undertake not to change the open source license (MIT license) applicable + * to the current version of the project delivered to anyone in the future. + */ + +package y3_14_202604101200 + +import ( + "configcenter/src/common" + "configcenter/src/common/blog" + "configcenter/src/common/mapstr" + "configcenter/src/common/metadata" + "configcenter/src/scene_server/admin_server/upgrader" + "configcenter/src/storage/dal" + "configcenter/src/storage/dal/types" + "context" + + "go.mongodb.org/mongo-driver/bson" +) + +// addObjLabelField add field 'bk_labels' to object labels ,default:[]string +func addObjLabelField(ctx context.Context, db dal.RDB, _ *upgrader.Config) error { + cond := bson.M{ + common.BKDBOR: bson.A{ + bson.M{metadata.ModelFieldLabels: bson.M{ + common.BKDBExists: false, + }}, + bson.M{metadata.ModelFieldLabels: nil}, + }, + } + doc := mapstr.MapStr{ + metadata.ModelFieldLabels: make([]string, 0), + } + if err := db.Table(common.BKTableNameObjDes).Update(ctx, cond, doc); err != nil { + blog.ErrorJSON("failed to add object labels value of field %s to true, err: %s", + metadata.ModelFieldLabels, err) + return err + } + objLabelIndex := types.Index{ + Keys: bson.D{ + {metadata.ModelFieldLabels, 1}, + }, + Name: common.CCLogicIndexNamePrefix + "obj_labels", + Unique: false, + Background: true, + } + + err := db.Table(common.BKTableNameObjDes).CreateIndex(ctx, objLabelIndex) + if err != nil && !db.IsDuplicatedError(err) { + blog.Errorf("create obj labels index %+v failed, err: %v", objLabelIndex, err) + return err + } + + return nil +} diff --git a/src/scene_server/admin_server/upgrader/y3.14.202604101200/pkg.go b/src/scene_server/admin_server/upgrader/y3.14.202604101200/pkg.go new file mode 100755 index 0000000000..bfb2ac5eb5 --- /dev/null +++ b/src/scene_server/admin_server/upgrader/y3.14.202604101200/pkg.go @@ -0,0 +1,42 @@ +/* + * Tencent is pleased to support the open source community by making + * 蓝鲸智云 - 配置平台 (BlueKing - Configuration System) available. + * Copyright (C) 2017 Tencent. All rights reserved. + * Licensed under the MIT License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * We undertake not to change the open source license (MIT license) applicable + * to the current version of the project delivered to anyone in the future. + */ + +package y3_14_202604101200 + +import ( + "context" + + "configcenter/src/common/blog" + "configcenter/src/scene_server/admin_server/upgrader" + "configcenter/src/storage/dal" +) + +func init() { + upgrader.RegistUpgrader("y3.14.202604101200", upgrade) +} + +func upgrade(ctx context.Context, db dal.RDB, conf *upgrader.Config) (err error) { + + blog.Infof("start execute y3.14.202604101200") + err = addObjLabelField(ctx, db, conf) + if err != nil { + blog.Errorf("upgrade y3.14.202604101200 add object labels field failed, error: %v", err) + return err + } + blog.Infof("execute y3.14.202604101200, add object labels field success!") + + return nil +} diff --git a/src/scene_server/topo_server/logics/model/object.go b/src/scene_server/topo_server/logics/model/object.go index 76c3c77c80..fa193f454e 100644 --- a/src/scene_server/topo_server/logics/model/object.go +++ b/src/scene_server/topo_server/logics/model/object.go @@ -233,7 +233,9 @@ func (o *object) createObjectParamCheck(kit *rest.Kit, data mapstr.MapStr) (*met "rid: %s", obj.ObjSortNumber, kit.Rid) return nil, kit.CCError.CCError(common.CCErrCommParamsInvalid) } - + if len(obj.Labels) == 0 { + obj.Labels = make([]string, 0) + } return obj, nil } @@ -660,7 +662,9 @@ func (o *object) isValid(kit *rest.Kit, isUpdate bool, data mapstr.MapStr) (*met return nil, kit.CCError.New(common.CCErrCommParamsIsInvalid, fmt.Sprintf("'%s' the built-in object id, please use a new one", obj.ObjectID)) } - + if len(obj.Labels) == 0 { + obj.Labels = make([]string, 0) + } obj.OwnerID = kit.SupplierAccount return obj, nil }