AzureMonitorAgent/ama_tst/modules/install/check_os.py (60 lines of code) (raw):

import platform from error_codes import * from errors import error_info from helpers import find_vm_bits, find_vm_distro import install.supported_distros as supported_distros def format_alternate_versions(supported_dist, versions): """ print out warning if running the wrong version of OS """ last = versions.pop() if (versions == []): s = "{0}".format(last) else: s = "{0} or {1}".format(', '.join(versions), last) return s def check_vm_supported(vm_dist, vm_ver): if platform.machine() == 'aarch64': supported_dists = supported_distros.supported_dists_aarch64 else: supported_dists = supported_distros.supported_dists_x86_64 vm_supported = False # find VM distribution in supported list vm_supported_dist = None for supported_dist in (supported_dists.keys()): if (not vm_dist.lower().startswith(supported_dist)): continue vm_supported_dist = supported_dist # check if version is supported vm_ver_split = vm_ver.split('.') for supported_ver in (supported_dists[supported_dist]): supported_ver_split = supported_ver.split('.') vm_ver_match = True # try matching VM version with supported version for (idx, supported_ver_num) in enumerate(supported_ver_split): try: supported_ver_num = int(supported_ver_num) vm_ver_num = int(vm_ver_split[idx]) if (vm_ver_num is not supported_ver_num): vm_ver_match = False break except (IndexError, ValueError) as e: vm_ver_match = False break # check if successful in matching if (vm_ver_match): vm_supported = True break # check if any version successful in matching if (vm_supported): return NO_ERROR # VM distribution is supported, but not current version if (vm_supported_dist != None): versions = supported_dists[vm_supported_dist] alt_vers = format_alternate_versions(vm_supported_dist, versions) error_info.append((vm_dist, vm_ver, alt_vers)) return ERR_OS_VER # VM distribution isn't supported else: error_info.append((vm_dist,)) return ERR_OS def check_os(): if platform.machine() == 'x86_64': cpu_bits = find_vm_bits() if (not cpu_bits == '64-bit'): return ERR_BITS # get OS version (vm_dist, vm_ver, e) = find_vm_distro() if (vm_dist == None or vm_ver == None): error_info.append((e,)) return ERR_FINDING_OS # check if OS version is supported return check_vm_supported(vm_dist, vm_ver)