From d0ca7025956ddeb0ba2bf167e51b7825595d33bc Mon Sep 17 00:00:00 2001 From: Daniel Vincze Date: Fri, 18 Aug 2023 19:44:05 +0300 Subject: [PATCH] Add core OSMorphing support for Rocky Linux Adds core OSMorphing tools and OS detection method for Rocky Linux OS --- coriolis/osmorphing/osdetect/manager.py | 2 ++ coriolis/osmorphing/osdetect/rocky.py | 40 +++++++++++++++++++++++++ coriolis/osmorphing/rocky.py | 19 ++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 coriolis/osmorphing/osdetect/rocky.py create mode 100644 coriolis/osmorphing/rocky.py diff --git a/coriolis/osmorphing/osdetect/manager.py b/coriolis/osmorphing/osdetect/manager.py index c6d2c4c1..dee136e9 100644 --- a/coriolis/osmorphing/osdetect/manager.py +++ b/coriolis/osmorphing/osdetect/manager.py @@ -12,6 +12,7 @@ from coriolis.osmorphing.osdetect import openwrt from coriolis.osmorphing.osdetect import oracle from coriolis.osmorphing.osdetect import redhat +from coriolis.osmorphing.osdetect import rocky from coriolis.osmorphing.osdetect import suse from coriolis.osmorphing.osdetect import ubuntu from coriolis.osmorphing.osdetect import windows @@ -27,6 +28,7 @@ openwrt.OpenWRTOSDetectTools, oracle.OracleOSDetectTools, redhat.RedHatOSDetectTools, + rocky.RockyLinuxOSDetectTools, suse.SUSEOSDetectTools, ubuntu.UbuntuOSDetectTools ] diff --git a/coriolis/osmorphing/osdetect/rocky.py b/coriolis/osmorphing/osdetect/rocky.py new file mode 100644 index 00000000..4bb5b157 --- /dev/null +++ b/coriolis/osmorphing/osdetect/rocky.py @@ -0,0 +1,40 @@ +# Copyright 2023 Cloudbase Solutions Srl +# All Rights Reserved. + +import re + +from oslo_log import log as logging +from coriolis import constants +from coriolis.osmorphing.osdetect import base + + +LOG = logging.getLogger(__name__) +ROCKY_LINUX_DISTRO_IDENTIFIER = "Rocky Linux" + + +class RockyLinuxOSDetectTools(base.BaseLinuxOSDetectTools): + + def detect_os(self): + info = {} + redhat_release_path = "etc/redhat-release" + if self._test_path(redhat_release_path): + release_info = self._read_file( + redhat_release_path).decode().splitlines() + if release_info: + m = re.match(r"^(.*) release ([0-9](\.[0-9])*)( \(.*\))?.*$", + release_info[0].strip()) + if m: + distro, version, _, _ = m.groups() + if ROCKY_LINUX_DISTRO_IDENTIFIER not in distro: + LOG.debug( + "Distro does not appear to be a Rocky Linux: %s", + distro) + return {} + + info = { + "os_type": constants.OS_TYPE_LINUX, + "distribution_name": ROCKY_LINUX_DISTRO_IDENTIFIER, + "release_version": version, + "friendly_release_name": "%s Version %s" % ( + ROCKY_LINUX_DISTRO_IDENTIFIER, version)} + return info diff --git a/coriolis/osmorphing/rocky.py b/coriolis/osmorphing/rocky.py new file mode 100644 index 00000000..997cb4d3 --- /dev/null +++ b/coriolis/osmorphing/rocky.py @@ -0,0 +1,19 @@ +# Copyright 2023 Cloudbase Solutions Srl +# All Rights Reserved. + +from coriolis.osmorphing import centos +from coriolis.osmorphing.osdetect import rocky as rocky_osdetect + + +ROCKY_LINUX_DISTRO_IDENTIFIER = rocky_osdetect.ROCKY_LINUX_DISTRO_IDENTIFIER + + +class BaseRockyLinuxMorphingTools(centos.BaseCentOSMorphingTools): + + @classmethod + def check_os_supported(cls, detected_os_info): + if detected_os_info['distribution_name'] != ( + ROCKY_LINUX_DISTRO_IDENTIFIER): + return False + return cls._version_supported_util( + detected_os_info['release_version'], minimum=8)