Merge pull request #5944 from rainzm/fix/auto_scaling7

fix(region): Add implements about owner for ScalingPolicy and ScalingActivity
This commit is contained in:
Zexi Li
2020-04-23 00:04:07 +08:00
committed by GitHub
2 changed files with 64 additions and 8 deletions
+32 -4
View File
@@ -62,10 +62,6 @@ func init() {
ScalingActivityManager.SetVirtualObject(ScalingActivityManager)
}
func (sam *SScalingActivityManager) ResourceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (sam *SScalingActivityManager) FetchByStatus(ctx context.Context, saIds, status []string, action string) (ids []string, err error) {
q := sam.Query("id").In("id", saIds)
if action == "not" {
@@ -190,3 +186,35 @@ func (sam *SScalingActivityManager) ListItemFilter(ctx context.Context, q *sqlch
q = q.Desc("start_time").Desc("end_time")
return q, nil
}
func (sam *SScalingActivityManager) NamespaceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (sam *SScalingActivityManager) ResourceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (sam *SScalingActivityManager) FilterByOwner(q *sqlchemy.SQuery, owner mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery {
if owner != nil {
switch scope {
case rbacutils.ScopeProject, rbacutils.ScopeDomain:
scalingGroupQ := ScalingGroupManager.Query("id", "domain_id").SubQuery()
q = q.Join(scalingGroupQ, sqlchemy.Equals(q.Field("scaling_group_id"), scalingGroupQ.Field("id")))
q = q.Filter(sqlchemy.Equals(scalingGroupQ.Field("domain_id"), owner.GetProjectDomainId()))
}
}
return q
}
func (sam *SScalingActivityManager) FetchOwnerId(ctx context.Context, data jsonutils.JSONObject) (mcclient.IIdentityProvider, error) {
return db.FetchDomainInfo(ctx, data)
}
func (sa *SScalingActivity) GetOwnerId() mcclient.IIdentityProvider {
scalingGroup := sa.GetScalingGroup()
if scalingGroup != nil {
return scalingGroup.GetOwnerId()
}
return nil
}
+32 -4
View File
@@ -109,10 +109,6 @@ func (spm *SScalingPolicyManager) ListItemFilter(ctx context.Context, q *sqlchem
return q, nil
}
func (spm *SScalingPolicyManager) ResourceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (spm *SScalingPolicyManager) QueryDistinctExtraField(q *sqlchemy.SQuery, field string) (*sqlchemy.SQuery, error) {
q, err := spm.SStatusStandaloneResourceBaseManager.QueryDistinctExtraField(q, field)
if err == nil {
@@ -518,3 +514,35 @@ func (sg *SScalingPolicy) PostCreate(ctx context.Context, userCred mcclient.Toke
})
}()
}
func (spm *SScalingPolicyManager) NamespaceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (spm *SScalingPolicyManager) ResourceScope() rbacutils.TRbacScope {
return rbacutils.ScopeProject
}
func (spm *SScalingPolicyManager) FilterByOwner(q *sqlchemy.SQuery, owner mcclient.IIdentityProvider, scope rbacutils.TRbacScope) *sqlchemy.SQuery {
if owner != nil {
switch scope {
case rbacutils.ScopeProject, rbacutils.ScopeDomain:
scalingGroupQ := ScalingGroupManager.Query("id", "domain_id").SubQuery()
q = q.Join(scalingGroupQ, sqlchemy.Equals(q.Field("scaling_group_id"), scalingGroupQ.Field("id")))
q = q.Filter(sqlchemy.Equals(scalingGroupQ.Field("domain_id"), owner.GetProjectDomainId()))
}
}
return q
}
func (spm *SScalingPolicyManager) FetchOwnerId(ctx context.Context, data jsonutils.JSONObject) (mcclient.IIdentityProvider, error) {
return db.FetchDomainInfo(ctx, data)
}
func (sp *SScalingPolicy) GetOwnerId() mcclient.IIdentityProvider {
scalingGroup := sp.GetScalingGroup()
if scalingGroup != nil {
return scalingGroup.GetOwnerId()
}
return nil
}