mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge branch 'release/2.4.0' of ssh://git.yunion.io/~qiujian/onecloud into feature/qj-esxi-support-complete
This commit is contained in:
@@ -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'))
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user