mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-24 02:26:39 +08:00
Merge pull request #5944 from rainzm/fix/auto_scaling7
fix(region): Add implements about owner for ScalingPolicy and ScalingActivity
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user