%PDF- %PDF-
Direktori : /lib/python2.7/site-packages/salt/states/ |
Current File : //lib/python2.7/site-packages/salt/states/ceph.py |
# -*- coding: utf-8 -*- ''' Manage ceph with salt. .. versionadded:: 2016.11.0 ''' # Import Python Libs from __future__ import absolute_import, print_function, unicode_literals import logging # Import Salt Libs import salt.utils.json from salt.exceptions import CommandExecutionError, CommandNotFoundError log = logging.getLogger(__name__) def _unchanged(name, msg): ''' Utility function: Return structure unchanged ''' return {'name': name, 'result': True, 'comment': msg, 'changes': {}} def _test(name, msg): ''' Utility function: Return structure test ''' return {'name': name, 'result': None, 'comment': msg, 'changes': {}} def _error(name, msg): ''' Utility function: Return structure error ''' return {'name': name, 'result': False, 'comment': msg, 'changes': {}} def _changed(name, msg, **changes): ''' Utility function: Return structure changed ''' return {'name': name, 'result': True, 'comment': msg, 'changes': changes} def _ordereddict2dict(input_ordered_dict): ''' Convert ordered dictionary to a dictionary ''' return salt.utils.json.loads(salt.utils.json.dumps(input_ordered_dict)) def quorum(name, **kwargs): ''' Quorum state This state checks the mon daemons are in quorum. It does not alter the cluster but can be used in formula as a dependency for many cluster operations. Example usage in sls file: .. code-block:: yaml quorum: sesceph.quorum: - require: - sesceph: mon_running ''' parameters = _ordereddict2dict(kwargs) if parameters is None: return _error(name, "Invalid parameters:%s") if __opts__['test']: return _test(name, "cluster quorum") try: cluster_quorum = __salt__['ceph.cluster_quorum'](**parameters) except (CommandExecutionError, CommandNotFoundError) as err: return _error(name, err.strerror) if cluster_quorum: return _unchanged(name, "cluster is quorum") return _error(name, "cluster is not quorum")