Просмотр исходного кода

Add core OSMorphing support for Rocky Linux

Adds core OSMorphing tools and OS detection method for Rocky Linux OS
Daniel Vincze 2 лет назад
Родитель
Сommit
d0ca702595

+ 2 - 0
coriolis/osmorphing/osdetect/manager.py

@@ -12,6 +12,7 @@ from coriolis.osmorphing.osdetect import debian
 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 @@ LINUX_OS_DETECTION_TOOLS = [
     openwrt.OpenWRTOSDetectTools,
     oracle.OracleOSDetectTools,
     redhat.RedHatOSDetectTools,
+    rocky.RockyLinuxOSDetectTools,
     suse.SUSEOSDetectTools,
     ubuntu.UbuntuOSDetectTools
 ]

+ 40 - 0
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

+ 19 - 0
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)