%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/modules/ |
Current File : //usr/lib/python2.7/site-packages/salt/modules/win_ntp.py |
# -*- coding: utf-8 -*- ''' Management of NTP servers on Windows .. versionadded:: 2014.1.0 ''' from __future__ import absolute_import, unicode_literals, print_function # Import Python libs import logging # Import Salt libs import salt.utils.platform log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = 'ntp' def __virtual__(): ''' This only supports Windows ''' if not salt.utils.platform.is_windows(): return (False, "Module win_system: module only works on Windows systems") return __virtualname__ def set_servers(*servers): ''' Set Windows to use a list of NTP servers CLI Example: .. code-block:: bash salt '*' ntp.set_servers 'pool.ntp.org' 'us.pool.ntp.org' ''' service_name = 'w32time' if not __salt__['service.status'](service_name): if not __salt__['service.start'](service_name): return False server_cmd = ['W32tm', '/config', '/syncfromflags:manual', '/manualpeerlist:{0}'.format(' '.join(servers))] reliable_cmd = ['W32tm', '/config', '/reliable:yes'] update_cmd = ['W32tm', '/config', '/update'] for cmd in server_cmd, reliable_cmd, update_cmd: __salt__['cmd.run'](cmd, python_shell=False) if not sorted(list(servers)) == get_servers(): return False __salt__['service.restart'](service_name) return True def get_servers(): ''' Get list of configured NTP servers CLI Example: .. code-block:: bash salt '*' ntp.get_servers ''' cmd = ['w32tm', '/query', '/configuration'] lines = __salt__['cmd.run'](cmd, python_shell=False).splitlines() for line in lines: try: if line.startswith('NtpServer:'): _, ntpsvrs = line.rsplit(' (', 1)[0].split(':', 1) return sorted(ntpsvrs.split()) except ValueError as e: return False return False