Merge remote-tracking branch 'origin/release/2.0.0' into release/2.1.0

This commit is contained in:
Yousong Zhou
2018-08-10 03:17:25 +00:00
13 changed files with 59 additions and 29 deletions
Generated
+1 -1
View File
@@ -576,7 +576,7 @@
branch = "master"
name = "github.com/yunionio/jsonutils"
packages = ["."]
revision = "895610f4e0f2f4bf3aebf016604e6fec39992fd8"
revision = "a19572265f525c898629becef50b405afd5e3ec6"
[[projects]]
branch = "master"
-4
View File
@@ -69,10 +69,6 @@
name = "github.com/ugorji/go"
revision = "f3cacc17c85ecb7f1b6a9e373ee85d1480919868"
[[constraint]]
name = "github.com/coreos/etcd"
version = "3.3.5"
[[constraint]]
name = "github.com/coredns/coredns"
version = "v1.2.0"
+2 -2
View File
@@ -665,7 +665,7 @@ func doCreateItem(manager IModelManager, ctx context.Context, userCred mcclient.
generateName, _ := dataDict.GetString("generate_name")
if len(generateName) > 0 {
dataDict.Remove("generate_name", true)
dataDict.Remove("generate_name")
dataDict.Add(jsonutils.NewString(GenerateName(manager, ownerProjId, generateName)), "name")
} else {
name, _ := data.GetString("name")
@@ -756,7 +756,7 @@ func expandMultiCreateParams(data jsonutils.JSONObject, count int) ([]jsonutils.
return nil, httperrors.NewInputParameterError("Missing name or generate_name")
}
jsonDict.Add(jsonutils.NewString(name), "generate_name")
jsonDict.Remove("name", false)
jsonDict.RemoveIgnoreCase("name")
}
ret := make([]jsonutils.JSONObject, count)
for i := 0; i < count; i += 1 {
+1 -1
View File
@@ -116,7 +116,7 @@ type IJointModelManager interface {
GetMasterManager() IStandaloneModelManager
GetSlaveManager() IStandaloneModelManager
FetchByIds(id1 string, id2 string) (IJointModel, error)
FetchByIds(masterId string, slaveId string) (IJointModel, error)
AllowListDescendent(ctx context.Context, userCred mcclient.TokenCredential, model IStandaloneModel, query jsonutils.JSONObject) bool
AllowAttach(ctx context.Context, userCred mcclient.TokenCredential, master IStandaloneModel, slave IStandaloneModel) bool
+8 -9
View File
@@ -65,7 +65,7 @@ func (manager *SJointResourceBaseManager) SlaveField(q *sqlchemy.SQuery) sqlchem
return queryField(q, manager.GetSlaveManager())
}
func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJointModel, error) {
func (manager *SJointResourceBaseManager) FetchByIds(masterId string, slaveId string) (IJointModel, error) {
obj, err := NewModelObject(manager)
if err != nil {
return nil, err
@@ -83,9 +83,8 @@ func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJ
if slaveField == nil {
return nil, fmt.Errorf("cannot find slave id")
}
cond1 := sqlchemy.AND(sqlchemy.Equals(masterField, id1), sqlchemy.Equals(slaveField, id2))
cond2 := sqlchemy.AND(sqlchemy.Equals(slaveField, id1), sqlchemy.Equals(masterField, id2))
q = q.Filter(sqlchemy.OR(cond1, cond2))
cond := sqlchemy.AND(sqlchemy.Equals(masterField, masterId), sqlchemy.Equals(slaveField, slaveId))
q = q.Filter(cond)
count := q.Count()
if count > 1 {
return nil, sqlchemy.ErrDuplicateEntry
@@ -127,14 +126,14 @@ func (joint *SJointResourceBase) GetJointModelManager() IJointModelManager {
return joint.SResourceBase.GetModelManager().(IJointModelManager)
}
func getFieldValue(joint IJointModel, name1 string, name2 string) string {
func getFieldValue(joint IJointModel, keyword string, alias string) string {
jointValue := reflect.Indirect(reflect.ValueOf(joint))
idStr, find := reflectutils.FindStructFieldInterface(jointValue, fmt.Sprintf("%s_id", name1))
if find {
idStr, ok := reflectutils.FindStructFieldInterface(jointValue, fmt.Sprintf("%s_id", keyword))
if ok {
return idStr.(string)
}
idStr, find = reflectutils.FindStructFieldInterface(jointValue, fmt.Sprintf("%s_id", name2))
if find {
idStr, ok = reflectutils.FindStructFieldInterface(jointValue, fmt.Sprintf("%s_id", alias))
if ok {
return idStr.(string)
}
return ""
+3 -3
View File
@@ -270,17 +270,17 @@ func (manager *SOpsLogManager) ListItemFilter(ctx context.Context, q *sqlchemy.S
}
objTypes := jsonutils.GetQueryStringArray(queryDict, "obj_type")
if objTypes != nil && len(objTypes) > 0 {
queryDict.Remove("obj_type", false)
queryDict.RemoveIgnoreCase("obj_type")
q = q.Filter(sqlchemy.In(q.Field("obj_type"), objTypes))
}
objIds := jsonutils.GetQueryStringArray(queryDict, "obj_id")
if objIds != nil && len(objIds) > 0 {
queryDict.Remove("obj_id", false)
queryDict.RemoveIgnoreCase("obj_id")
q = q.Filter(sqlchemy.OR(sqlchemy.In(q.Field("obj_id"), objIds), sqlchemy.In(q.Field("obj_name"), objIds)))
}
action := jsonutils.GetQueryStringArray(queryDict, "action")
if action != nil && len(action) > 0 {
queryDict.Remove("action", false)
queryDict.RemoveIgnoreCase("action")
q = q.Filter(sqlchemy.In(q.Field("action"), action))
}
if !userCred.IsSystemAdmin() {
+1 -1
View File
@@ -198,7 +198,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
isBMstr, _ := queryDict.GetString("baremetal")
if len(isBMstr) > 0 && utils.ToBool(isBMstr) {
queryDict.Add(jsonutils.NewString(HYPERVISOR_BAREMETAL), "hypervisor")
queryDict.Remove("baremetal", true)
queryDict.Remove("baremetal")
}
hypervisor, _ := queryDict.GetString("hypervisor")
if len(hypervisor) > 0 {
+9 -2
View File
@@ -18,8 +18,15 @@ var HostwireManager *SHostwireManager
func init() {
db.InitManager(func() {
HostwireManager = &SHostwireManager{SHostJointsManager: NewHostJointsManager(SHostwire{},
"hostwires_tbl", "hostwire", "hostwires", WireManager)}
HostwireManager = &SHostwireManager{
SHostJointsManager: NewHostJointsManager(
SHostwire{},
"hostwires_tbl",
"hostwire",
"hostwires",
WireManager,
),
}
})
}
+10 -1
View File
@@ -36,7 +36,16 @@ var StoragecachedimageManager *SStoragecachedimageManager
func init() {
db.InitManager(func() {
StoragecachedimageManager = &SStoragecachedimageManager{SJointResourceBaseManager: db.NewJointResourceBaseManager(SStoragecachedimage{}, "storagecachedimages_tbl", "storagecachedimage", "storagecachedimages", StoragecacheManager, CachedimageManager)}
StoragecachedimageManager = &SStoragecachedimageManager{
SJointResourceBaseManager: db.NewJointResourceBaseManager(
SStoragecachedimage{},
"storagecachedimages_tbl",
"storagecachedimage",
"storagecachedimages",
StoragecacheManager,
CachedimageManager,
),
}
})
}
+1 -1
View File
@@ -119,7 +119,7 @@ func (this *ImageManager) List(session *mcclient.ClientSession, params jsonutils
path = fmt.Sprintf("%s/detail", path)
}
dictparams, _ := params.(*jsonutils.JSONDict)
dictparams.Remove("details", false)
dictparams.RemoveIgnoreCase("details")
qs := params.QueryString()
if len(qs) > 0 {
path = fmt.Sprintf("%s?%s", path, qs)
+2 -2
View File
@@ -20,8 +20,8 @@ func (this *UsageManager) GetGeneralUsage(session *mcclient.ClientSession, param
url = fmt.Sprintf("%s/%s/%s", url, range_type, range_id)
}
dict := params.(*jsonutils.JSONDict)
dict.Remove("range_type", true)
dict.Remove("range_id", true)
dict.Remove("range_type")
dict.Remove("range_id")
qs := dict.QueryString()
if len(qs) > 0 {
url = fmt.Sprintf("%s?%s", url, qs)
+2 -1
View File
@@ -155,7 +155,8 @@ func TestGuestDisk(t *testing.T) {
if err != nil {
t.Fatal(err)
}
size, err := gst.(*Guest).DiskSize()
onlyLocal := false
size, err := gst.(*Guest).DiskSize(onlyLocal)
if err != nil {
t.Fatal(err)
}
+19 -1
View File
@@ -53,7 +53,25 @@ func (this *JSONDict) Set(key string, value JSONObject) {
this.data[key] = value
}
func (this *JSONDict) Remove(key string, caseSensitive bool) bool {
func (this *JSONDict) Remove(key string) bool {
return this.remove(key, true)
}
func (this *JSONDict) RemoveIgnoreCase(key string) bool {
someRemoved := false
for {
removed := this.remove(key, false)
if !removed {
break
}
if !someRemoved {
someRemoved = true
}
}
return someRemoved
}
func (this *JSONDict) remove(key string, caseSensitive bool) bool {
_, rk, ok := dictGet(this.data, key, caseSensitive)
if ok {
delete(this.data, rk)