Global enable/disable was being ignored

This commit is contained in:
Gareth J. Greenaway 2019-02-26 15:58:42 -08:00
parent 27dd9fbac2
commit 72466a53bd
No known key found for this signature in database
GPG key ID: 10B62F8A7CAD7A41
2 changed files with 44 additions and 6 deletions

View file

@ -240,7 +240,7 @@ class Schedule(object):
)
data['_skip_reason'] = 'maxrunning'
data['_skipped'] = True
data['_skip_time'] = now
data['_skipped_time'] = now
data['run'] = False
return data
return data
@ -357,7 +357,7 @@ class Schedule(object):
# assume job is enabled.
for job in data:
if 'enabled' not in data[job]:
data[job]['enabled'] = True
data[job]['_enabled'] = True
new_job = next(six.iterkeys(data))
@ -1378,8 +1378,10 @@ class Schedule(object):
# Clear these out between runs
for item in ['_continue',
'_error',
'_enabled',
'_skipped',
'_skip_reason']:
'_skip_reason',
'_skipped_time']:
if item in data:
del data[item]
run = False
@ -1598,12 +1600,22 @@ class Schedule(object):
# If there is no job specific enabled available,
# grab the global which defaults to True.
if 'enabled' not in data:
data['enabled'] = self.enabled
data['_enabled'] = self.enabled
# If globally disabled, disable the job
if not self.enabled:
data['_enabled'] = self.enabled
data['_skip_reason'] = 'disabled'
data['_skipped_time'] = now
data['_skipped'] = True
run = False
# Job is disabled, set run to False
if 'enabled' in data and not data['enabled']:
log.debug('Job: %s is disabled', job_name)
data['_enabled'] = False
data['_skip_reason'] = 'disabled'
data['_skipped_time'] = now
data['_skipped'] = True
run = False
miss_msg = ''
@ -1614,7 +1626,7 @@ class Schedule(object):
try:
if run:
# Job is disabled, continue
if 'enabled' in data and not data['enabled']:
if '_enabled' in data and not data['_enabled']:
log.debug('Job: %s is disabled', job_name)
data['_skip_reason'] = 'disabled'
data['_skipped_time'] = now

View file

@ -506,6 +506,32 @@ class SchedulerEvalTest(ModuleCase, SaltReturnAssertsMixin):
self.assertNotIn('_last_run', ret)
self.assertEqual(ret['_skip_reason'], 'disabled')
def test_eval_global_disabled_job_enabled(self):
'''
verify that scheduled job does not run
'''
job_name = 'test_eval_global_disabled'
job = {
'schedule': {
'enabled': False,
job_name: {
'function': 'test.ping',
'when': '11/29/2017 4:00pm',
'enabled': True,
}
}
}
run_time1 = dateutil_parser.parse('11/29/2017 4:00pm')
# Add the job to the scheduler
self.schedule.opts.update(job)
# Evaluate 1 second at the run time
self.schedule.eval(now=run_time1)
ret = self.schedule.job_status(job_name)
self.assertNotIn('_last_run', ret)
self.assertEqual(ret['_skip_reason'], 'disabled')
def test_eval_run_on_start(self):
'''
verify that scheduled job is run when minion starts