Merge branch 'release/2.4.0' of ssh://git.yunion.io/~qiujian/onecloud into feature/qj-esxi-support-complete

This commit is contained in:
Qiu Jian
2018-11-25 08:27:09 +08:00
29 changed files with 1053 additions and 89 deletions
+1 -1
View File
@@ -153,7 +153,7 @@ type SOpsLog struct {
ObjId string `width:"128" charset:"ascii" nullable:"false" list:"user"` // = Column(VARCHAR(ID_LENGTH, charset='ascii'), nullable=False)
ObjName string `width:"128" charset:"utf8" nullable:"false" list:"user"` //= Column(VARCHAR(128, charset='utf8'), nullable=False)
Action string `width:"32" charset:"ascii" nullable:"false" list:"user"` //= Column(VARCHAR(32, charset='ascii'), nullable=False)
Notes string `width:"1024" charset:"utf8" list:"user"` // = Column(VARCHAR(1024, charset='utf8'))
Notes string `width:"2048" charset:"utf8" list:"user"` // = Column(VARCHAR(2048, charset='utf8'))
ProjectId string `name:"tenant_id" width:"128" charset:"ascii" list:"user"` // = Column(VARCHAR(ID_LENGTH, charset='ascii'))
Project string `name:"tenant" width:"128" charset:"utf8" list:"user"` // tenant = Column(VARCHAR(128, charset='utf8'))
UserId string `width:"128" charset:"ascii" list:"user"` // = Column(VARCHAR(ID_LENGTH, charset='ascii'))
+1 -1
View File
@@ -11,7 +11,7 @@ import (
var taskWorkMan *appsrv.SWorkerManager
func init() {
taskWorkMan = appsrv.NewWorkerManager("TaskWorkerManager", 4, 100)
taskWorkMan = appsrv.NewWorkerManager("TaskWorkerManager", 4, 1024)
}
func AddTaskHandler(prefix string, app *appsrv.Application) {
@@ -12,7 +12,7 @@ import (
var localTaskWorkerMan *appsrv.SWorkerManager
func init() {
localTaskWorkerMan = appsrv.NewWorkerManager("LocalTaskWorkerManager", 4, 10)
localTaskWorkerMan = appsrv.NewWorkerManager("LocalTaskWorkerManager", 4, 1024)
}
func Error2TaskData(err error) jsonutils.JSONObject {
+4
View File
@@ -227,6 +227,10 @@ func (manager *STaskManager) NewParallelTask(ctx context.Context, taskName strin
return nil, fmt.Errorf("task %s not found", taskName)
}
if len(objs) == 0 {
return nil, fmt.Errorf("failed to do task %s with zero objs", taskName)
}
log.Debugf("number of objs: %d", len(objs))
lockman.LockClass(ctx, objs[0].GetModelManager(), userCred.GetProjectId())
defer lockman.ReleaseClass(ctx, objs[0].GetModelManager(), userCred.GetProjectId())
+21 -15
View File
@@ -203,20 +203,10 @@ func (manager *SPolicyManager) Allow(isAdmin bool, userCred mcclient.TokenCreden
return currentPriv
}
func (manager *SPolicyManager) explainPolicy(userCred mcclient.TokenCredential, policyReq jsonutils.JSONObject) (rbacutils.TRbacResult, error) {
func (manager *SPolicyManager) explainPolicy(userCred mcclient.TokenCredential, policyReq jsonutils.JSONObject) ([]string, rbacutils.TRbacResult, error) {
policySeq, err := policyReq.GetArray()
if err != nil {
return rbacutils.Deny, httperrors.NewInputParameterError("invalid format")
}
isAdmin, _ := policySeq[0].Bool()
if !consts.IsRbacEnabled() {
if !isAdmin {
return rbacutils.OwnerAllow, nil
} else if isAdmin && userCred.IsSystemAdmin() {
return rbacutils.AdminAllow, nil
} else {
return rbacutils.Deny, httperrors.NewForbiddenError("operation not allowed")
}
return nil, rbacutils.Deny, httperrors.NewInputParameterError("invalid format")
}
service := rbacutils.WILD_MATCH
resource := rbacutils.WILD_MATCH
@@ -238,7 +228,22 @@ func (manager *SPolicyManager) explainPolicy(userCred mcclient.TokenCredential,
}
}
return manager.Allow(isAdmin, userCred, service, resource, action, extra...), nil
reqStrs := []string{service, resource, action}
if len(extra) > 0 {
reqStrs = append(reqStrs, extra...)
}
isAdmin, _ := policySeq[0].Bool()
if !consts.IsRbacEnabled() {
if !isAdmin {
return reqStrs, rbacutils.OwnerAllow, nil
} else if isAdmin && userCred.IsSystemAdmin() {
return reqStrs, rbacutils.AdminAllow, nil
} else {
return reqStrs, rbacutils.Deny, httperrors.NewForbiddenError("operation not allowed")
}
}
return reqStrs, manager.Allow(isAdmin, userCred, service, resource, action, extra...), nil
}
func (manager *SPolicyManager) ExplainRpc(userCred mcclient.TokenCredential, params jsonutils.JSONObject) (jsonutils.JSONObject, error) {
@@ -248,11 +253,12 @@ func (manager *SPolicyManager) ExplainRpc(userCred mcclient.TokenCredential, par
}
ret := jsonutils.NewDict()
for key, policyReq := range paramDict {
result, err := manager.explainPolicy(userCred, policyReq)
reqStrs, result, err := manager.explainPolicy(userCred, policyReq)
if err != nil {
return nil, err
}
ret.Add(jsonutils.NewString(string(result)), key)
reqStrs = append(reqStrs, string(result))
ret.Add(jsonutils.NewStringArray(reqStrs), key)
}
return ret, nil
}