fix interval logic and example

This commit is contained in:
David Boucha 2015-05-06 22:02:07 +00:00
parent 5504778adf
commit 81198f9399

View file

@ -9,6 +9,7 @@ import copy
# Import Salt libs
import salt.loader
import salt.utils
log = logging.getLogger(__name__)
@ -29,8 +30,8 @@ class Beacon(object):
code_block:: yaml
beacons:
inotify:
- /etc/fstab
- /var/cache/foo/*
/etc/fstab: {}
/var/cache/foo: {}
'''
ret = []
b_config = copy.deepcopy(config)
@ -38,9 +39,18 @@ class Beacon(object):
log.trace('Beacon processing: {0}'.format(mod))
fun_str = '{0}.beacon'.format(mod)
if fun_str in self.beacons:
interval = [arg for arg in config[mod] if 'interval' in arg]
if isinstance(config[mod], list):
interval = None
interval_config = [arg for arg in config[mod] if 'interval' in arg]
if interval_config:
interval = interval_config[0]['interval']
elif isinstance(config[mod], dict):
interval = config[mod].get('interval', False)
if interval:
b_config[mod].remove(interval[0])
if isinstance(b_config[mod], list):
b_config[mod].remove(interval_config[0])
elif isinstance(b_config[mod], dict):
b_config[mod].pop('interval')
if not self._process_interval(mod, interval):
log.trace('Skipping beacon {0}. Interval not reached.'.format(mod))
continue
@ -65,7 +75,7 @@ class Beacon(object):
log.trace('Processing interval in map')
counter = self.interval_map[mod]
log.trace('Interval counter: {0}'.format(counter))
if counter * loop_interval >= interval[0]['interval']:
if counter * loop_interval >= interval:
self.interval_map[mod] = 1
return True
else: