Explorar el Código

Add OSMorphing Support for Amazon Linux

This patch adds Amazon Linux OS detection and core OSMorphing tools
Daniel Vincze hace 2 años
padre
commit
c46f65afbc

+ 21 - 0
coriolis/osmorphing/amazon.py

@@ -0,0 +1,21 @@
+# Copyright 2023 Cloudbase Solutions Srl
+# All Rights Reserved.
+
+from coriolis.osmorphing.osdetect import amazon as amazon_detect
+from coriolis.osmorphing import redhat
+
+
+AMAZON_DISTRO_NAME_IDENTIFIER = amazon_detect.AMAZON_DISTRO_NAME
+
+
+class BaseAmazonLinuxOSMorphingTools(redhat.BaseRedHatMorphingTools):
+
+    UEFI_GRUB_LOCATION = "/boot/efi/EFI/amzn"
+
+    @classmethod
+    def check_os_supported(cls, detected_os_info):
+        if detected_os_info['distribution_name'] != (
+                AMAZON_DISTRO_NAME_IDENTIFIER):
+            return False
+        return cls._version_supported_util(
+            detected_os_info['release_version'], minimum=2)

+ 27 - 0
coriolis/osmorphing/osdetect/amazon.py

@@ -0,0 +1,27 @@
+# Copyright 2023 Cloudbase Solutions Srl
+# All Rights Reserved.
+
+from coriolis import constants
+from coriolis.osmorphing.osdetect import base
+
+
+AMAZON_DISTRO_IDENTIFIER = "amzn"
+AMAZON_DISTRO_NAME = "Amazon Linux"
+
+
+class AmazonLinuxOSDetectTools(base.BaseLinuxOSDetectTools):
+
+    def detect_os(self):
+        info = {}
+        os_release = self._get_os_release()
+        osid = os_release.get("ID")
+        osname = os_release.get("NAME")
+        if osid == AMAZON_DISTRO_IDENTIFIER or osname == AMAZON_DISTRO_NAME:
+            version = os_release.get("VERSION")
+            friendly_name = "%s %s" % (AMAZON_DISTRO_NAME, version)
+            info = {
+                "os_type": constants.OS_TYPE_LINUX,
+                "distribution_name": AMAZON_DISTRO_NAME,
+                "release_version": version,
+                "friendly_release_name": friendly_name}
+        return info

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

@@ -5,6 +5,7 @@ from oslo_log import log as logging
 
 from coriolis import constants
 from coriolis import exception
+from coriolis.osmorphing.osdetect import amazon
 from coriolis.osmorphing.osdetect import base
 from coriolis.osmorphing.osdetect import centos
 from coriolis.osmorphing.osdetect import coreos
@@ -17,11 +18,11 @@ from coriolis.osmorphing.osdetect import suse
 from coriolis.osmorphing.osdetect import ubuntu
 from coriolis.osmorphing.osdetect import windows
 
-
 LOG = logging.getLogger(__name__)
 
 
 LINUX_OS_DETECTION_TOOLS = [
+    amazon.AmazonLinuxOSDetectTools,
     centos.CentOSOSDetectTools,
     coreos.CoreOSOSDetectTools,
     debian.DebianOSDetectTools,