%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/beacons/ |
Current File : //usr/lib/python2.7/site-packages/salt/beacons/salt_proxy.py |
# -*- coding: utf-8 -*- ''' Beacon to manage and report the status of one or more salt proxy processes .. versionadded:: 2015.8.3 ''' # Import python libs from __future__ import absolute_import, unicode_literals import logging from salt.ext.six.moves import map log = logging.getLogger(__name__) def _run_proxy_processes(proxies): ''' Iterate over a list of proxy names and restart any that aren't running ''' ret = [] for proxy in proxies: result = {} if not __salt__['salt_proxy.is_running'](proxy)['result']: __salt__['salt_proxy.configure_proxy'](proxy, start=True) result[proxy] = 'Proxy {0} was started'.format(proxy) else: msg = 'Proxy {0} is already running'.format(proxy) result[proxy] = msg log.debug(msg) ret.append(result) return ret def validate(config): ''' Validate the beacon configuration ''' # Configuration for adb beacon should be a dictionary with states array if not isinstance(config, list): log.info('Configuration for salt_proxy beacon must be a list.') return False, ('Configuration for salt_proxy beacon must be a list.') else: _config = {} list(map(_config.update, config)) if 'proxies' not in _config: return False, ('Configuration for salt_proxy' ' beacon requires proxies.') else: if not isinstance(_config['proxies'], dict): return False, ('Proxies for salt_proxy ' 'beacon must be a dictionary.') return True, 'Valid beacon configuration' def beacon(config): ''' Handle configured proxies .. code-block:: yaml beacons: salt_proxy: - proxies: p8000: {} p8001: {} ''' log.trace('salt proxy beacon called') _config = {} list(map(_config.update, config)) return _run_proxy_processes(_config['proxies'])