%PDF- %PDF-
Direktori : /proc/self/root/usr/lib/python2.7/site-packages/salt/states/ |
Current File : //proc/self/root/usr/lib/python2.7/site-packages/salt/states/ntp.py |
# -*- coding: utf-8 -*- ''' Management of NTP servers ========================= .. versionadded:: 2014.1.0 This state is used to manage NTP servers. Currently only Windows is supported. .. code-block:: yaml win_ntp: ntp.managed: - servers: - pool.ntp.org - us.pool.ntp.org ''' from __future__ import absolute_import, print_function, unicode_literals # Import Python libs import logging # Import Salt libs import salt.utils.platform # Import 3rd-party libs from salt.ext import six log = logging.getLogger(__name__) def __virtual__(): ''' This only supports Windows ''' if not salt.utils.platform.is_windows(): return False return 'ntp' def _check_servers(servers): if not isinstance(servers, list): return False for server in servers: if not isinstance(server, six.string_types): return False return True def _get_servers(): try: return set(__salt__['ntp.get_servers']()) except TypeError: return set([False]) def managed(name, servers=None): ''' Manage NTP servers servers A list of NTP servers ''' ret = {'name': name, 'changes': {}, 'result': True, 'comment': 'NTP servers already configured as specified'} if not _check_servers(servers): ret['result'] = False ret['comment'] = 'NTP servers must be a list of strings' before_servers = _get_servers() desired_servers = set(servers) if before_servers == desired_servers: return ret if __opts__['test']: ret['result'] = None ret['comment'] = ('NTP servers will be updated to: {0}' .format(', '.join(sorted(desired_servers)))) return ret __salt__['ntp.set_servers'](*desired_servers) after_servers = _get_servers() if after_servers == desired_servers: ret['comment'] = 'NTP servers updated' ret['changes'] = {'old': sorted(before_servers), 'new': sorted(after_servers)} else: ret['result'] = False ret['comment'] = 'Failed to update NTP servers' if before_servers != after_servers: ret['changes'] = {'old': sorted(before_servers), 'new': sorted(after_servers)} return ret