Introduce --copy-kernel cmdline option to copy kernel files to output directory.
authorMarko Saukko <marko.saukko@cybercom.com>
Wed, 18 Jan 2012 13:47:41 +0000 (15:47 +0200)
committerMarko Saukko <marko.saukko@cybercom.com>
Fri, 20 Jan 2012 10:59:23 +0000 (12:59 +0200)
Signed-off-by: Marko Saukko <marko.saukko@cybercom.com>
mic/conf.py
mic/creator.py
mic/imager/baseimager.py
plugins/imager/fs_plugin.py
plugins/imager/livecd_plugin.py
plugins/imager/liveusb_plugin.py
plugins/imager/loop_plugin.py
plugins/imager/raw_plugin.py

index 112164c..287f69a 100644 (file)
@@ -49,6 +49,7 @@ class ConfigMgr(object):
                     "name_prefix": None,
                     "proxy": None,
                     "no_proxy": None,
+                    "copy_kernel": False,
 
                     "runtime": None,
                 },
index 5b28deb..da72946 100644 (file)
@@ -95,6 +95,10 @@ class Creator(cmdln.Cmdln):
                              help='Sets the disk image compression. NOTE: The '
                                   'available values might depend on the used '
                                   'filesystem type.')
+        optparser.add_option('', '--copy-kernel', action='store_true',
+                             dest='copy_kernel',
+                             help='Copy kernel files from image /boot directory'
+                                  'to the image output directory.')
         return optparser
 
     def preoptparse(self, argv):
@@ -193,7 +197,10 @@ class Creator(cmdln.Cmdln):
         if self.options.compress_disk_image is not None:
             configmgr.create['compress_disk_image'] = \
                                                 self.options.compress_disk_image
-
+        
+        if self.options.copy_kernel:
+            configmgr.create['copy_kernel'] = self.options.copy_kernel
+        
     def main(self, argv=None):
         if argv is None:
             argv = sys.argv
index d5f7588..4a39922 100644 (file)
@@ -1,3 +1,4 @@
+
 #!/usr/bin/python -tt
 #
 # Copyright (c) 2007 Red Hat  Inc.
@@ -73,6 +74,8 @@ class BaseImageCreator(object):
         self.destdir = "."
         self.target_arch = "noarch"
         self._local_pkgs_path = None
+        # If the kernel is save to the destdir when copy_kernel cmd is called.
+        self._copy_kernel = False
 
         # Eeach image type can change these values as they might be image type
         # specific
@@ -83,11 +86,13 @@ class BaseImageCreator(object):
         self._img_compression_method = None
 
         if createopts:
+            # Mapping table for variables that have different names.
             optmap = {"pkgmgr" : "pkgmgr_name",
                       "outdir" : "destdir",
                       "arch" : "target_arch",
                       "local_pkgs_path" : "_local_pkgs_path",
                       "compress_disk_image" : "_img_compression_method",
+                      "copy_kernel" : "_copy_kernel",
                      }
     
             # update setting from createopts
@@ -1172,11 +1177,18 @@ class BaseImageCreator(object):
             if not os.path.exists("%s" % fp):
                 outimages.remove(fp)
 
-    def save_kernel(self, destdir):
-        if not os.path.exists(destdir):
-            os.makedirs(destdir)
+    def copy_kernel(self):
+        """ Copy kernel files to the outimage directory.
+        
+        NOTE: This needs to be called before unmounting the instroot.
+        
+        """
+        if not self._copy_kernel:
+            return
+        if not os.path.exists(self.destdir):
+            os.makedirs(self.destdir)
         for kernel in glob.glob("%s/boot/vmlinuz-*" % self._instroot):
-            kernelfilename = "%s/%s-%s" % (destdir, self.name, os.path.basename(kernel))
+            kernelfilename = "%s/%s-%s" % (self.destdir, self.name, os.path.basename(kernel))
             shutil.copy(kernel, kernelfilename)
             self.outimage.append(kernelfilename)
 
index a46b7ae..aa88e16 100644 (file)
@@ -112,6 +112,7 @@ class FsPlugin(ImagerPlugin):
                     msger.warning("Source packages can't be downloaded")
 
             creator.configure(creatoropts["repomd"])
+            creator.copy_kernel()
             creator.unmount()
             creator.package(creatoropts["outdir"])
             if creatoropts['release'] is not None:
index 6572eef..7828e5c 100644 (file)
@@ -102,6 +102,7 @@ class LiveCDPlugin(ImagerPlugin):
             creator.mount(None, creatoropts["cachedir"])
             creator.install()
             creator.configure(creatoropts["repomd"])
+            creator.copy_kernel()
             creator.unmount()
             creator.package(creatoropts["outdir"])
             if creatoropts['release'] is not None:
index cbcf81e..45fd308 100644 (file)
@@ -104,6 +104,7 @@ class LiveUSBPlugin(ImagerPlugin):
             creator.mount(None, creatoropts["cachedir"])
             creator.install()
             creator.configure(creatoropts["repomd"])
+            creator.copy_kernel()
             creator.unmount()
             creator.package(creatoropts["outdir"])
             if creatoropts['release'] is not None:
index c84efe6..51ea79b 100644 (file)
@@ -112,6 +112,7 @@ class LoopPlugin(ImagerPlugin):
             creator.mount(None, creatoropts["cachedir"])
             creator.install()
             creator.configure(creatoropts["repomd"])
+            creator.copy_kernel()            
             creator.unmount()
             creator.package(creatoropts["outdir"])
 
index 25134c6..f0d02bb 100644 (file)
@@ -102,6 +102,7 @@ class RawPlugin(ImagerPlugin):
             creator.mount(None, creatoropts["cachedir"])
             creator.install()
             creator.configure(creatoropts["repomd"])
+            creator.copy_kernel()
             creator.unmount()
             creator.package(creatoropts["outdir"])
             if creatoropts['release'] is not None: