Skip to content

Commit

Permalink
Merge pull request #8024 from TencentBlueKing/v3.11.x
Browse files Browse the repository at this point in the history
merge v3.11.x into v3.13.x
  • Loading branch information
ZQHcode authored Jun 13, 2024
2 parents 5806f60 + c8cef66 commit 4e2af1e
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 35 deletions.
4 changes: 4 additions & 0 deletions src/common/util/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ import (

// AddModelBizIDCondition add model bizID condition according to bizID value
func AddModelBizIDCondition(cond mapstr.MapStr, modelBizID int64) {
if cond == nil {
cond = make(mapstr.MapStr)
}

var modelBizIDOrCondArr []mapstr.MapStr

if modelBizID > 0 {
Expand Down
82 changes: 47 additions & 35 deletions src/scene_server/host_server/logics/hostsearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,57 +267,69 @@ func (sh *searchHost) validateObjCond(objCond *metadata.SearchCondition) error {
attributeMap[common.BKDefaultField] = common.FieldTypeInt
case common.BKInnerObjIDSet:
attributeMap[common.BKSetIDField] = common.FieldTypeInt
attributeMap[common.BKDefaultField] = common.FieldTypeInt
attributeMap[common.BKParentIDField] = common.FieldTypeInt
case common.BKInnerObjIDModule:
attributeMap[common.BKModuleIDField] = common.FieldTypeInt
attributeMap[common.BKDefaultField] = common.FieldTypeInt
attributeMap[common.BKParentIDField] = common.FieldTypeInt
case common.BKInnerObjIDHost:
attributeMap[common.BKHostIDField] = common.FieldTypeInt
attributeMap[common.BKCloudIDField] = common.FieldTypeInt
}

for _, cond := range objCond.Condition {
attrType, exists := attributeMap[cond.Field]
if !exists {
blog.Errorf("%s condition item field %s not exists, rid: %s", objCond.ObjectID, cond.Field, sh.kit.Rid)
return fmt.Errorf("condition field %s not exists", cond.Field)
err = sh.validateCondItem(objCond.ObjectID, cond, attributeMap)
if err != nil {
return err
}
}
return nil
}

supportedOpMap, exists := attrTypeSupportedOpMap[attrType]
if !exists {
blog.Errorf("%s condition item field %s attr type %s is invalid, rid: %s", objCond.ObjectID, cond.Field,
attrType, sh.kit.Rid)
return fmt.Errorf("condition field %s is invalid", cond.Field)
}
func (sh *searchHost) validateCondItem(objID string, cond metadata.ConditionItem, attrMap map[string]string) error {
attrType, exists := attrMap[cond.Field]
if !exists {
blog.Errorf("%s condition item field %s not exists, rid: %s", objID, cond.Field, sh.kit.Rid)
return fmt.Errorf("condition field %s not exists", cond.Field)
}

_, exists = supportedOpMap[cond.Operator]
if !exists {
blog.Errorf("%s condition item field %s op %s is invalid, rid: %s", objCond.ObjectID, cond.Field,
cond.Operator, sh.kit.Rid)
return fmt.Errorf("condition operator %s is invalid", cond.Operator)
}
supportedOpMap, exists := attrTypeSupportedOpMap[attrType]
if !exists {
blog.Errorf("%s condition item field %s attr type %s is invalid, rid: %s", objID, cond.Field, attrType,
sh.kit.Rid)
return fmt.Errorf("condition field %s is invalid", cond.Field)
}

switch cond.Operator {
case common.BKDBIN, common.BKDBNIN:
valueArr, ok := cond.Value.([]interface{})
if !ok {
blog.Errorf("%s condition item field %s op %s value(%+v) is invalid, rid: %s", objCond.ObjectID,
cond.Field, cond.Operator, cond.Value, sh.kit.Rid)
return fmt.Errorf("operator %s only support array value", cond.Operator)
}
_, exists = supportedOpMap[cond.Operator]
if !exists {
blog.Errorf("%s condition item field %s op %s is invalid, rid: %s", objID, cond.Field, cond.Operator,
sh.kit.Rid)
return fmt.Errorf("condition operator %s is invalid", cond.Operator)
}

for _, value := range valueArr {
if err = sh.validCondValueType(attrType, value); err != nil {
blog.Errorf("%s condition item field %s array value(%+v) is invalid, err: %v, rid: %s",
objCond.ObjectID, cond.Field, value, err, sh.kit.Rid)
return err
}
}
default:
if err = sh.validCondValueType(attrType, cond.Value); err != nil {
blog.Errorf("%s condition item field %s value(%+v) is invalid, err: %v, rid: %s", objCond.ObjectID,
cond.Field, cond.Value, err, sh.kit.Rid)
switch cond.Operator {
case common.BKDBIN, common.BKDBNIN:
valueArr, ok := cond.Value.([]interface{})
if !ok {
blog.Errorf("%s condition item field %s op %s value(%+v) is invalid, rid: %s", objID, cond.Field,
cond.Operator, cond.Value, sh.kit.Rid)
return fmt.Errorf("operator %s only support array value", cond.Operator)
}

for _, value := range valueArr {
if err := sh.validCondValueType(attrType, value); err != nil {
blog.Errorf("%s condition item field %s array value(%+v) is invalid, err: %v, rid: %s", objID,
cond.Field, value, err, sh.kit.Rid)
return err
}
}
default:
if err := sh.validCondValueType(attrType, cond.Value); err != nil {
blog.Errorf("%s condition item field %s value(%+v) is invalid, err: %v, rid: %s", objID, cond.Field,
cond.Value, err, sh.kit.Rid)
return err
}
}
return nil
}
Expand Down

0 comments on commit 4e2af1e

Please sign in to comment.