%PDF- %PDF-
Direktori : /proc/thread-self/root/usr/lib/python2.7/site-packages/salt/utils/ |
Current File : //proc/thread-self/root/usr/lib/python2.7/site-packages/salt/utils/platform.py |
# -*- coding: utf-8 -*- ''' Functions for identifying which platform a machine is ''' # Import Python libs from __future__ import absolute_import, print_function, unicode_literals import os import subprocess import sys import warnings # linux_distribution deprecated in py3.7 try: from platform import linux_distribution as _deprecated_linux_distribution def linux_distribution(**kwargs): with warnings.catch_warnings(): warnings.simplefilter("ignore") return _deprecated_linux_distribution(**kwargs) except ImportError: from distro import linux_distribution # Import Salt libs from salt.utils.decorators import memoize as real_memoize @real_memoize def is_windows(): ''' Simple function to return if a host is Windows or not ''' return sys.platform.startswith('win') @real_memoize def is_proxy(): ''' Return True if this minion is a proxy minion. Leverages the fact that is_linux() and is_windows both return False for proxies. TODO: Need to extend this for proxies that might run on other Unices ''' import __main__ as main # This is a hack. If a proxy minion is started by other # means, e.g. a custom script that creates the minion objects # then this will fail. ret = False try: # Changed this from 'salt-proxy in main...' to 'proxy in main...' # to support the testsuite's temp script that is called 'cli_salt_proxy' # # Add '--proxyid' in sys.argv so that salt-call --proxyid # is seen as a proxy minion if 'proxy' in main.__file__ or '--proxyid' in sys.argv: ret = True except AttributeError: pass return ret @real_memoize def is_linux(): ''' Simple function to return if a host is Linux or not. Note for a proxy minion, we need to return something else ''' return sys.platform.startswith('linux') @real_memoize def is_darwin(): ''' Simple function to return if a host is Darwin (macOS) or not ''' return sys.platform.startswith('darwin') @real_memoize def is_sunos(): ''' Simple function to return if host is SunOS or not ''' return sys.platform.startswith('sunos') @real_memoize def is_smartos(): ''' Simple function to return if host is SmartOS (Illumos) or not ''' if not is_sunos(): return False else: return os.uname()[3].startswith('joyent_') @real_memoize def is_smartos_globalzone(): ''' Function to return if host is SmartOS (Illumos) global zone or not ''' if not is_smartos(): return False else: cmd = ['zonename'] try: zonename = subprocess.Popen( cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: return False if zonename.returncode: return False if zonename.stdout.read().strip() == 'global': return True return False @real_memoize def is_smartos_zone(): ''' Function to return if host is SmartOS (Illumos) and not the gz ''' if not is_smartos(): return False else: cmd = ['zonename'] try: zonename = subprocess.Popen( cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: return False if zonename.returncode: return False if zonename.stdout.read().strip() == 'global': return False return True @real_memoize def is_freebsd(): ''' Simple function to return if host is FreeBSD or not ''' return sys.platform.startswith('freebsd') @real_memoize def is_netbsd(): ''' Simple function to return if host is NetBSD or not ''' return sys.platform.startswith('netbsd') @real_memoize def is_openbsd(): ''' Simple function to return if host is OpenBSD or not ''' return sys.platform.startswith('openbsd') @real_memoize def is_aix(): ''' Simple function to return if host is AIX or not ''' return sys.platform.startswith('aix') @real_memoize def is_fedora(): ''' Simple function to return if host is Fedora or not ''' (osname, osrelease, oscodename) = \ [x.strip('"').strip("'") for x in linux_distribution()] return osname == 'Fedora'