in azurelinuxagent/common/osutil/factory.py [0:0]
def _get_osutil(distro_name, distro_code_name, distro_version, distro_full_name):
if distro_name == "photonos":
return PhotonOSUtil()
if distro_name == "arch":
return ArchUtil()
if "Clear Linux" in distro_full_name:
return ClearLinuxUtil()
if distro_name == "ubuntu":
ubuntu_version = DistroVersion(distro_version)
if ubuntu_version in [DistroVersion("12.04"), DistroVersion("12.10")]:
return Ubuntu12OSUtil()
if ubuntu_version in [DistroVersion("14.04"), DistroVersion("14.10")]:
return Ubuntu14OSUtil()
if ubuntu_version in [DistroVersion('16.04'), DistroVersion('16.10'), DistroVersion('17.04')]:
return Ubuntu16OSUtil()
if DistroVersion('18.04') <= ubuntu_version <= DistroVersion('24.04'):
return Ubuntu18OSUtil()
if distro_full_name == "Snappy Ubuntu Core":
return UbuntuSnappyOSUtil()
return UbuntuOSUtil()
if distro_name == "alpine":
return AlpineOSUtil()
if distro_name == "kali":
return DebianOSBaseUtil()
if distro_name in ("flatcar", "coreos") or distro_code_name in ("flatcar", "coreos"):
return CoreOSUtil()
if distro_name in ("suse", "sle-micro", "sle_hpc", "sles", "opensuse"):
if distro_full_name == 'SUSE Linux Enterprise Server' \
and DistroVersion(distro_version) < DistroVersion('12') \
or distro_full_name == 'openSUSE' and DistroVersion(distro_version) < DistroVersion('13.2'):
return SUSE11OSUtil()
return SUSEOSUtil()
if distro_name == "debian":
if "sid" in distro_version or DistroVersion(distro_version) > DistroVersion("7"):
return DebianOSModernUtil()
return DebianOSBaseUtil()
# Devuan support only works with v4+
# Reason is that Devuan v4 (Chimaera) uses python v3.9, in which the
# platform.linux_distribution module has been removed. This was unable
# to distinguish between debian and devuan. The new distro.linux_distribution module
# is able to distinguish between the two.
if distro_name == "devuan" and DistroVersion(distro_version) >= DistroVersion("4"):
return DevuanOSUtil()
if distro_name in ("redhat", "rhel", "centos", "oracle", "almalinux",
"cloudlinux", "rocky"):
if DistroVersion(distro_version) < DistroVersion("7"):
return Redhat6xOSUtil()
if DistroVersion(distro_version) >= DistroVersion("8.6"):
return RedhatOSModernUtil()
return RedhatOSUtil()
if distro_name == "euleros":
return RedhatOSUtil()
if distro_name == "uos":
return RedhatOSUtil()
if distro_name == "freebsd":
return FreeBSDOSUtil()
if distro_name == "openbsd":
return OpenBSDOSUtil()
if distro_name == "bigip":
return BigIpOSUtil()
if distro_name == "gaia":
return GaiaOSUtil()
if distro_name == "iosxe":
return IosxeOSUtil()
if distro_name in ["mariner", "azurelinux"]:
return MarinerOSUtil()
if distro_name == "nsbsd":
return NSBSDOSUtil()
if distro_name == "openwrt":
return OpenWRTOSUtil()
if distro_name == "fedora":
return FedoraOSUtil()
logger.warn("Unable to load distro implementation for {0}. Using default distro implementation instead.", distro_name)
return DefaultOSUtil()