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

Merged in aznashwan/coriolis/osmorph-prepacks (pull request #23)

OSMorphing improvements.
Nashwan Azhari 9 лет назад
Родитель
Сommit
0e5022bfbd

+ 4 - 4
coriolis/osmorphing/base.py

@@ -41,7 +41,7 @@ class BaseOSMorphingTools(object):
     def get_packages(self):
         return [], []
 
-    def pre_packages_install(self):
+    def pre_packages_install(self, package_names):
         pass
 
     def install_packages(self, package_names):
@@ -50,7 +50,7 @@ class BaseOSMorphingTools(object):
     def uninstall_packages(self, package_names):
         pass
 
-    def post_packages_install(self):
+    def post_packages_install(self, package_names):
         pass
 
 
@@ -79,10 +79,10 @@ class BaseLinuxOSMorphingTools(BaseOSMorphingTools):
 
         return add, remove
 
-    def pre_packages_install(self):
+    def pre_packages_install(self, package_names):
         self._copy_resolv_conf()
 
-    def post_packages_install(self):
+    def post_packages_install(self, package_names):
         self._restore_resolv_conf()
 
     def _test_path(self, chroot_path):

+ 7 - 5
coriolis/osmorphing/debian.py

@@ -36,11 +36,13 @@ class DebianMorphingTools(base.BaseLinuxOSMorphingTools):
             self._exec_cmd('sudo sed -i.bak "s/static/dhcp/g" %s' %
                            interfaces_path)
 
-    def pre_packages_install(self):
-        super(DebianMorphingTools, self).pre_packages_install()
-        self._event_manager.progress_update("Updating packages list")
-        self._exec_cmd_chroot('apt-get clean')
-        self._exec_cmd_chroot('apt-get update -y')
+    def pre_packages_install(self, package_names):
+        super(DebianMorphingTools, self).pre_packages_install(package_names)
+
+        if package_names:
+            self._event_manager.progress_update("Updating packages list")
+            self._exec_cmd_chroot('apt-get clean')
+            self._exec_cmd_chroot('apt-get update -y')
 
     def install_packages(self, package_names):
         apt_get_cmd = 'apt-get install %s -y' % " ".join(package_names)

+ 3 - 3
coriolis/osmorphing/manager.py

@@ -26,11 +26,11 @@ def morph_image(connection_info, os_type, target_hypervisor, target_platform,
 
     os_morphing_tools.set_net_config(nics_info, dhcp=True)
     LOG.info("Pre packages")
-    os_morphing_tools.pre_packages_install()
-
     (packages_add,
      packages_remove) = os_morphing_tools.get_packages()
 
+    os_morphing_tools.pre_packages_install(packages_add)
+
     if packages_remove:
         event_manager.progress_update(
             "Removing packages: %s" % str(packages_remove))
@@ -42,7 +42,7 @@ def morph_image(connection_info, os_type, target_hypervisor, target_platform,
         os_morphing_tools.install_packages(packages_add)
 
     LOG.info("Post packages")
-    os_morphing_tools.post_packages_install()
+    os_morphing_tools.post_packages_install(packages_add)
 
     event_manager.progress_update("Dismounting OS partitions")
     os_mount_tools.dismount_os(other_mounted_dirs + [os_root_dir])

+ 2 - 2
coriolis/osmorphing/oracle.py

@@ -22,9 +22,9 @@ class OracleMorphingTools(redhat.RedHatMorphingTools):
     def install_packages(self, package_names):
         self._yum_install(package_names, self._enable_repos)
 
-    def pre_packages_install(self):
+    def pre_packages_install(self, package_names):
         self._enable_repos = []
-        super(OracleMorphingTools, self).pre_packages_install()
+        super(OracleMorphingTools, self).pre_packages_install(package_names)
 
         if self._platform == constants.PLATFORM_OPENSTACK:
             self._enable_cloud_init_repos()

+ 4 - 4
coriolis/osmorphing/redhat.py

@@ -208,8 +208,8 @@ class RedHatMorphingTools(base.BaseLinuxOSMorphingTools):
     def _set_selinux_autorelabel(self):
         self._exec_cmd_chroot("touch /.autorelabel")
 
-    def pre_packages_install(self):
-        super(RedHatMorphingTools, self).pre_packages_install()
+    def pre_packages_install(self, package_names):
+        super(RedHatMorphingTools, self).pre_packages_install(package_names)
 
         distro, version = self.check_os()
         if distro == RELEASE_RHEL and "cloud-init" in self.get_packages()[0]:
@@ -221,9 +221,9 @@ class RedHatMorphingTools(base.BaseLinuxOSMorphingTools):
             self._exec_cmd_chroot(
                 "subscription-manager repos --enable %s" % repo_name)
 
-    def post_packages_install(self):
+    def post_packages_install(self, package_names):
         self._add_hyperv_ballooning_udev_rules()
         self._run_dracut()
         self._configure_cloud_init()
         self._set_selinux_autorelabel()
-        super(RedHatMorphingTools, self).post_packages_install()
+        super(RedHatMorphingTools, self).post_packages_install(package_names)

+ 4 - 4
coriolis/osmorphing/suse.py

@@ -40,8 +40,8 @@ class SUSEMorphingTools(base.BaseLinuxOSMorphingTools):
         # TODO: add networking support
         pass
 
-    def pre_packages_install(self):
-        super(SUSEMorphingTools, self).pre_packages_install()
+    def pre_packages_install(self, package_names):
+        super(SUSEMorphingTools, self).pre_packages_install(package_names)
 
         if self._platform == constants.PLATFORM_OPENSTACK:
             # TODO: use OS version to choose the right repo
@@ -99,7 +99,7 @@ class SUSEMorphingTools(base.BaseLinuxOSMorphingTools):
         self._exec_cmd_chroot(
             'zypper --non-interactive remove %s' % " ".join(package_names))
 
-    def post_packages_install(self):
+    def post_packages_install(self, packages_names):
         self._run_dracut()
         self._configure_cloud_init()
-        super(SUSEMorphingTools, self).post_packages_install()
+        super(SUSEMorphingTools, self).post_packages_install(package_names)

+ 1 - 1
coriolis/osmorphing/windows.py

@@ -52,7 +52,7 @@ class WindowsMorphingTools(base.BaseOSMorphingTools):
         except exception.CoriolisException as ex:
             LOG.debug("Exception during OS detection: %s", ex)
 
-    def pre_packages_install(self):
+    def pre_packages_install(self, packages_add):
         if (not self._hypervisor or
                 self._hypervisor == constants.HYPERVISOR_KVM):
             self._add_virtio_drivers()