Переглянути джерело

OSMorphing overhaul fixes for RHEL-based distros

Daniel Vincze 6 роки тому
батько
коміт
b94ef563d7
2 змінених файлів з 16 додано та 10 видалено
  1. 1 1
      coriolis/osmorphing/osdetect/redhat.py
  2. 15 9
      coriolis/osmorphing/redhat.py

+ 1 - 1
coriolis/osmorphing/osdetect/redhat.py

@@ -10,7 +10,7 @@ from coriolis.osmorphing.osdetect import base
 
 
 LOG = logging.getLogger(__name__)
-RED_HAT_DISTRO_IDENTIFIER = "Red Hat Enterprise Linux Server"
+RED_HAT_DISTRO_IDENTIFIER = "Red Hat Enterprise Linux"
 
 
 class RedHatOSDetectTools(base.BaseLinuxOSDetectTools):

+ 15 - 9
coriolis/osmorphing/redhat.py

@@ -38,6 +38,7 @@ ONBOOT=yes
 NM_CONTROLLED=no
 """
 
+
 class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
     _NETWORK_SCRIPTS_PATH = "etc/sysconfig/network-scripts"
 
@@ -57,11 +58,8 @@ class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
         self._enable_repos = []
 
     def disable_predictable_nic_names(self):
-        kernel_versions = self._list_dir("lib/modules")
-        for version in kernel_versions:
-            cmd = '/sbin/new-kernel-pkg --update --kernel-args="%s" %s'
-            self._exec_cmd_chroot(cmd % (
-                "net.ifnames=0 biosdevname=0", version))
+        cmd = 'grubby --update-kernel=ALL --args="%s"'
+        self._exec_cmd_chroot(cmd % "net.ifnames=0 biosdevname=0")
 
     def _get_net_ifaces_info(self, ifcfgs_ethernet, mac_addresses):
         net_ifaces_info = []
@@ -132,7 +130,7 @@ class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
         return ifcfgs
 
     def _write_nic_configs(self, nics_info):
-        for idx,_ in enumerate(nics_info):
+        for idx, _ in enumerate(nics_info):
             dev_name = "eth%d" % idx
             cfg_path = "etc/sysconfig/network-scripts/ifcfg-%s" % dev_name
             if self._test_path(cfg_path):
@@ -177,6 +175,7 @@ class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
         super(BaseRedHatMorphingTools, self).pre_packages_install(
             package_names)
         self._yum_clean_all()
+        self._yum_install(['grubby'])
 
     def install_packages(self, package_names):
         self._yum_install(package_names, self._enable_repos)
@@ -188,8 +187,16 @@ class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
         self._run_dracut_base('kernel')
 
     def _run_dracut_base(self, rpm_base_name):
-        package_names = self._exec_cmd_chroot(
-            'rpm -q %s' % rpm_base_name).decode().splitlines()
+        package_names = []
+        try:
+            package_names = self._exec_cmd_chroot(
+                'rpm -q %s' % rpm_base_name).decode().splitlines()
+        except Exception as ex:
+            self._event_manager.progress_update(
+                "Failed to query kernel package name: '%s'. Unable to rebuild"
+                " initrd for the new platform")
+            LOG.exception(ex)
+
         for package_name in package_names:
             m = re.match('^%s-(.*)$' % rpm_base_name, package_name)
             if m:
@@ -219,4 +226,3 @@ class BaseRedHatMorphingTools(base.BaseLinuxOSMorphingTools):
         dir_content = self._list_dir(self._NETWORK_SCRIPTS_PATH)
         return [os.path.join(self._NETWORK_SCRIPTS_PATH, f) for f in
                 dir_content if re.match("^ifcfg-(.*)", f)]
-