%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/states/ |
Current File : //usr/lib/python2.7/site-packages/salt/states/modjk.py |
# -*- coding: utf-8 -*- ''' State to control Apache modjk ''' # Python Libs from __future__ import absolute_import, print_function, unicode_literals import logging # Import 3rd-party libs from salt.ext import six log = logging.getLogger(__name__) def __virtual__(): ''' Load this state if modjk is loaded ''' return 'modjk.workers' in __salt__ def _bulk_state(saltfunc, lbn, workers, profile): ''' Generic function for bulk worker operation ''' ret = {'name': lbn, 'result': True, 'changes': {}, 'comment': ''} if not isinstance(workers, list): ret['result'] = False ret['comment'] = 'workers should be a list not a {0}'.format( type(workers) ) return ret if __opts__['test']: ret['result'] = None return ret log.info('executing %s to modjk workers %s', saltfunc, workers) try: cmdret = __salt__[saltfunc](workers, lbn, profile=profile) except KeyError: ret['result'] = False ret['comment'] = 'unsupported function {0}'.format( saltfunc ) return ret errors = [] for worker, ok in six.iteritems(cmdret): if not ok: errors.append(worker) ret['changes'] = {'status': cmdret} if errors: ret['result'] = False ret['comment'] = '{0} failed on some workers'.format(saltfunc) return ret def worker_stopped(name, workers=None, profile='default'): ''' Stop all the workers in the modjk load balancer Example: .. code-block:: yaml loadbalancer: modjk.worker_stopped: - workers: - app1 - app2 ''' if workers is None: workers = [] return _bulk_state( 'modjk.bulk_stop', name, workers, profile ) def worker_activated(name, workers=None, profile='default'): ''' Activate all the workers in the modjk load balancer Example: .. code-block:: yaml loadbalancer: modjk.worker_activated: - workers: - app1 - app2 ''' if workers is None: workers = [] return _bulk_state( 'modjk.bulk_activate', name, workers, profile ) def worker_disabled(name, workers=None, profile='default'): ''' Disable all the workers in the modjk load balancer Example: .. code-block:: yaml loadbalancer: modjk.worker_disabled: - workers: - app1 - app2 ''' if workers is None: workers = [] return _bulk_state( 'modjk.bulk_disable', name, workers, profile ) def worker_recover(name, workers=None, profile='default'): ''' Recover all the workers in the modjk load balancer Example: .. code-block:: yaml loadbalancer: modjk.worker_recover: - workers: - app1 - app2 ''' if workers is None: workers = [] return _bulk_state( 'modjk.bulk_recover', name, workers, profile )