mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
bugfix:scoperesource FilterByOwner
1.调度标签 和 优化建议 FilterByOwner 逻辑调整
This commit is contained in:
@@ -116,34 +116,8 @@ func (m *SScopedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, userCred
|
||||
}
|
||||
switch scope {
|
||||
case rbacutils.ScopeDomain:
|
||||
/* q = q.Filter(sqlchemy.OR(
|
||||
// share to system
|
||||
sqlchemy.AND(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("domain_id")),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to this domain or its sub-projects
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
)) */
|
||||
q = q.Equals("domain_id", userCred.GetProjectDomainId())
|
||||
case rbacutils.ScopeProject:
|
||||
/* q = q.Filter(sqlchemy.OR(
|
||||
// share to system
|
||||
sqlchemy.AND(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("domain_id")),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to project's parent domain
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to this project
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
sqlchemy.Equals(q.Field("tenant_id"), userCred.GetProjectId()),
|
||||
),
|
||||
)) */
|
||||
q = q.Equals("tenant_id", userCred.GetProjectId())
|
||||
}
|
||||
return q
|
||||
|
||||
@@ -140,6 +140,43 @@ func (manager *SSchedtagManager) AllowListItems(ctx context.Context, userCred mc
|
||||
return true
|
||||
}
|
||||
|
||||
func (m *SSchedtagManager) FilterByOwner(q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery {
|
||||
if userCred == nil {
|
||||
return q
|
||||
}
|
||||
switch scope {
|
||||
case rbacutils.ScopeDomain:
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
// share to system
|
||||
sqlchemy.AND(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("domain_id")),
|
||||
//sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to this domain or its sub-projects
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
))
|
||||
case rbacutils.ScopeProject:
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
// share to system
|
||||
sqlchemy.AND(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("domain_id")),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to project's parent domain
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("tenant_id")),
|
||||
),
|
||||
// share to this project
|
||||
sqlchemy.AND(
|
||||
sqlchemy.Equals(q.Field("domain_id"), userCred.GetProjectDomainId()),
|
||||
sqlchemy.Equals(q.Field("tenant_id"), userCred.GetProjectId()),
|
||||
),
|
||||
))
|
||||
}
|
||||
return q
|
||||
}
|
||||
|
||||
// 调度标签列表
|
||||
func (manager *SSchedtagManager) ListItemFilter(
|
||||
ctx context.Context,
|
||||
|
||||
@@ -55,7 +55,7 @@ type SAlertManager struct {
|
||||
//db.SVirtualResourceBaseManager
|
||||
db.SEnabledResourceBaseManager
|
||||
db.SStatusStandaloneResourceBaseManager
|
||||
db.SScopedResourceBaseManager
|
||||
SMonitorScopedResourceManager
|
||||
//db.SStatusResourceBaseManager
|
||||
|
||||
tester AlertTestRunner
|
||||
@@ -112,7 +112,7 @@ type SAlert struct {
|
||||
//db.SVirtualResourceBase
|
||||
db.SEnabledResourceBase
|
||||
db.SStatusStandaloneResourceBase
|
||||
db.SScopedResourceBase
|
||||
SMonitorScopedResource
|
||||
//db.SStatusResourceBase
|
||||
|
||||
// Frequency is evaluate period
|
||||
|
||||
@@ -21,14 +21,14 @@ var (
|
||||
type SAlertRecordManager struct {
|
||||
db.SEnabledResourceBaseManager
|
||||
db.SStatusStandaloneResourceBaseManager
|
||||
db.SScopedResourceBaseManager
|
||||
SMonitorScopedResourceManager
|
||||
}
|
||||
|
||||
type SAlertRecord struct {
|
||||
//db.SVirtualResourceBase
|
||||
db.SEnabledResourceBase
|
||||
db.SStatusStandaloneResourceBase
|
||||
db.SScopedResourceBase
|
||||
SMonitorScopedResource
|
||||
|
||||
AlertId string `width:"36" charset:"ascii" nullable:"false" list:"user" create:"required"`
|
||||
Level string `charset:"ascii" width:"36" nullable:"false" default:"normal" list:"user" update:"user"`
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/util/rbacutils"
|
||||
"yunion.io/x/sqlchemy"
|
||||
)
|
||||
|
||||
type SMonitorScopedResourceManager struct {
|
||||
db.SScopedResourceBaseManager
|
||||
}
|
||||
|
||||
type SMonitorScopedResource struct {
|
||||
db.SScopedResourceBase
|
||||
}
|
||||
|
||||
func (m *SMonitorScopedResourceManager) FilterByOwner(q *sqlchemy.SQuery, userCred mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery {
|
||||
if userCred == nil {
|
||||
return q
|
||||
}
|
||||
switch scope {
|
||||
case rbacutils.ScopeDomain:
|
||||
q = q.Equals("domain_id", userCred.GetProjectDomainId())
|
||||
case rbacutils.ScopeProject:
|
||||
|
||||
q = q.Equals("tenant_id", userCred.GetProjectId())
|
||||
}
|
||||
return q
|
||||
}
|
||||
|
||||
func (manager *SMonitorScopedResourceManager) ResourceScope() rbacutils.TRbacScope {
|
||||
return manager.SScopedResourceBaseManager.ResourceScope()
|
||||
}
|
||||
|
||||
func (manager *SMonitorScopedResourceManager) FetchOwnerId(ctx context.Context, data jsonutils.JSONObject) (mcclient.IIdentityProvider, error) {
|
||||
return manager.SScopedResourceBaseManager.FetchOwnerId(ctx, data)
|
||||
}
|
||||
|
||||
func (model *SMonitorScopedResource) GetOwnerId() mcclient.IIdentityProvider {
|
||||
return model.SScopedResourceBase.GetOwnerId()
|
||||
}
|
||||
@@ -52,12 +52,12 @@ func init() {
|
||||
// +onecloud:swagger-gen-model-plural=suggestsysruleconfigs
|
||||
type SSuggestSysRuleConfigManager struct {
|
||||
db.SStandaloneResourceBaseManager
|
||||
db.SScopedResourceBaseManager
|
||||
SMonitorScopedResourceManager
|
||||
}
|
||||
|
||||
type SSuggestSysRuleConfig struct {
|
||||
db.SStandaloneResourceBase
|
||||
db.SScopedResourceBase
|
||||
SMonitorScopedResource
|
||||
|
||||
// RuleId is SSuggestSysRule model object id
|
||||
// RuleId string `width:"36" charset:"ascii" nullable:"true" list:"user" create:"optional"`
|
||||
@@ -166,7 +166,7 @@ func (man *SSuggestSysRuleConfigManager) createFromDriver(ctx context.Context, s
|
||||
}
|
||||
config.SetModelManager(man, config)
|
||||
|
||||
ownerId := config.GetOwnerId()
|
||||
ownerId := config.SMonitorScopedResource.GetOwnerId()
|
||||
data := monitor.SuggestSysRuleConfigCreateInput{}
|
||||
data.Scope = string(scope)
|
||||
data.ProjectDomainId = ownerId.GetProjectDomainId()
|
||||
|
||||
Reference in New Issue
Block a user