Skip to content

Commit

Permalink
Add core OSMorphing support for Rocky Linux
Browse files Browse the repository at this point in the history
Adds core OSMorphing tools and OS detection method for Rocky Linux OS
  • Loading branch information
Dany9966 committed Aug 29, 2023
1 parent 8c20aa0 commit d0ca702
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
2 changes: 2 additions & 0 deletions coriolis/osmorphing/osdetect/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -27,6 +28,7 @@
openwrt.OpenWRTOSDetectTools,
oracle.OracleOSDetectTools,
redhat.RedHatOSDetectTools,
rocky.RockyLinuxOSDetectTools,
suse.SUSEOSDetectTools,
ubuntu.UbuntuOSDetectTools
]
Expand Down
40 changes: 40 additions & 0 deletions coriolis/osmorphing/osdetect/rocky.py
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions coriolis/osmorphing/rocky.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit d0ca702

Please sign in to comment.