From 55bd0fd038206bdabf1fadd855b3d65f29f62f86 Mon Sep 17 00:00:00 2001
From: licanwei
Date: Tue, 24 Oct 2017 00:00:57 -0700
Subject: [PATCH] Can't cancell CONTINUOUS audit
If scheduler uses db job store, the self.scheduler is None
beacuse execute_audit is class method.
We get [] from self.scheduler.get_jobs()
and can't remove the cancelled audit.
Change-Id: I1768c847465bbefbc9794281328edb07fea83b03
Closes-Bug: #1726345
---
watcher/decision_engine/audit/continuous.py | 5 ++++-
watcher/tests/decision_engine/audit/test_audit_handlers.py | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/watcher/decision_engine/audit/continuous.py b/watcher/decision_engine/audit/continuous.py
index b6833ac19..0439eb8e7 100644
--- a/watcher/decision_engine/audit/continuous.py
+++ b/watcher/decision_engine/audit/continuous.py
@@ -66,7 +66,7 @@ class ContinuousAuditHandler(base.AuditHandler):
[job for job in self.scheduler.get_jobs()
if job.name == 'execute_audit' and
job.args[0].uuid == audit.uuid][0].remove()
- return True
+ return True
return False
@@ -131,6 +131,9 @@ class ContinuousAuditHandler(base.AuditHandler):
scheduler_job_args = [
job.args for job in self.scheduler.get_jobs()
if job.name == 'execute_audit']
+ for args in scheduler_job_args:
+ if self._is_audit_inactive(args[0]):
+ scheduler_job_args.remove(args)
for audit in audits:
# if audit is not presented in scheduled audits yet.
if audit.uuid not in [arg[0].uuid for arg in scheduler_job_args]:
diff --git a/watcher/tests/decision_engine/audit/test_audit_handlers.py b/watcher/tests/decision_engine/audit/test_audit_handlers.py
index 8e7d084ac..d8dfe58c2 100644
--- a/watcher/tests/decision_engine/audit/test_audit_handlers.py
+++ b/watcher/tests/decision_engine/audit/test_audit_handlers.py
@@ -376,7 +376,7 @@ class TestContinuousAuditHandler(base.DbTestCase):
audit_handler = continuous.ContinuousAuditHandler()
self.audits[0].next_run_time = (datetime.datetime.now() -
datetime.timedelta(seconds=1800))
- m_is_inactive.return_value = True
+ m_is_inactive.return_value = False
m_get_jobs.return_value = None
audit_handler.execute_audit(self.audits[0], self.context)