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
This commit is contained in:
licanwei
2017-10-24 00:00:57 -07:00
parent e9c420467e
commit 55bd0fd038
2 changed files with 5 additions and 2 deletions

View File

@@ -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]:

View File

@@ -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)