diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index 84d969be72..b271bb204e 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -743,6 +743,8 @@ func calculateListResult(data []jsonutils.JSONObject, total, limit, offset int64 // do limit if limit > 0 && total-offset > limit { data = data[:limit] + } else { + data = data[:total-offset] } } diff --git a/pkg/monitor/models/suggestsysrule.go b/pkg/monitor/models/suggestsysrule.go index 01501ea986..1a0a86b176 100644 --- a/pkg/monitor/models/suggestsysrule.go +++ b/pkg/monitor/models/suggestsysrule.go @@ -222,18 +222,17 @@ func (self *SSuggestSysRule) GetExtraDetails( //after create, update Cronjob's info func (self *SSuggestSysRule) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { self.SVirtualResourceBase.PostCreate(ctx, userCred, ownerId, query, data) - cronman.GetCronJobManager().Remove(self.Type) - if self.Enabled.Bool() { - dur, _ := time.ParseDuration(self.Period) - cronman.GetCronJobManager().AddJobAtIntervalsWithStartRun(self.Type, dur, - suggestSysRuleDrivers[self.Type].DoSuggestSysRule, true) - } + self.updateCronjob() } //after update, update Cronjob's info func (self *SSuggestSysRule) PostUpdate( ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) { + self.updateCronjob() +} + +func (self *SSuggestSysRule) updateCronjob() { cronman.GetCronJobManager().Remove(self.Type) if self.Enabled.Bool() { dur, _ := time.ParseDuration(self.Period) @@ -254,7 +253,23 @@ func (self *SSuggestSysRule) PerformEnable(ctx context.Context, userCred mcclien return nil }) db.OpsLog.LogEvent(self, db.ACT_ENABLE, "", userCred) - self.PostUpdate(ctx, userCred, query, data) + self.updateCronjob() + } + return nil, nil +} + +func (self *SSuggestSysRule) AllowPerformDisable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { + return db.IsAdminAllowPerform(userCred, self, "disable") +} + +func (self *SSuggestSysRule) PerformDisable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { + if self.Enabled.IsTrue() { + db.Update(self, func() error { + self.Enabled = tristate.False + return nil + }) + db.OpsLog.LogEvent(self, db.ACT_DISABLE, "", userCred) + self.updateCronjob() } return nil, nil }