Add new option of tpk_install
authoryuhuan.yang <yuhuan.yang@123.com>
Mon, 7 Aug 2017 11:07:17 +0000 (19:07 +0800)
committeryuhuan.yang <yuhuan.yang@123.com>
Tue, 8 Aug 2017 09:45:08 +0000 (17:45 +0800)
Change-Id: Id67c37b143f723e98491aad1d6730446149f01a5

mic/cmd_create.py
mic/conf.py
mic/imager/baseimager.py
tools/mic

index 8dfaf8f..3189af2 100755 (executable)
@@ -191,7 +191,9 @@ def main(parser, args, argv):
         configmgr.create['ignore_ksrepo'] = args.ignore_ksrepo\r
     if args.run_script:\r
         configmgr.create['run_script'] = args.run_script\r
-        \r
+    if args.tpk_install:\r
+        configmgr.create['tpk_install'] = args.tpk_install\r
+\r
     creater = createrClass()\r
     creater.do_create(args)\r
 \r
index a45b05e..d56d3cb 100755 (executable)
@@ -76,6 +76,7 @@ class ConfigMgr(object):
                     "ignore_ksrepo": False,
                     "strict_mode": False,
                     "run_script": None,
+                    "tpk_install": None,
                 },
                 'chroot': {
                     "saveto": None,
index e0340a1..dd758b4 100755 (executable)
@@ -37,6 +37,7 @@ from mic.utils.errors import CreatorError, Abort
 from mic.utils import misc, grabber, runner, fs_related as fs
 from mic.chroot import kill_proc_inchroot
 from mic.archive import get_archive_suffixes
+from mic.conf import configmgr
 #post script max run time
 MAX_RUN_TIME = 120
 
@@ -767,6 +768,23 @@ class BaseImageCreator(object):
 
         runner.show('umount -l %s' % self.workdir)
 
+    def cp_tpk(self):
+        #Add tpk-install option
+        createopts = configmgr.create
+        if createopts['tpk_install']:
+            path = createopts['tpk_install']
+            file_list = os.listdir(path)
+            for f in file_list:
+                sub = os.path.splitext(f)[1]
+                if sub != ".tpk":
+                    raise CreatorError("Not all files in the path: "+path +" is tpk")
+
+            tpk_dir = "/usr/apps/.preload-tpk"
+            fs.makedirs(self._instroot + "/usr/apps")
+            fs.makedirs(self._instroot + tpk_dir)
+            for f in file_list:
+                shutil.copy(path+"/"+f,self._instroot + tpk_dir)
+
     def mount(self, base_on = None, cachedir = None):
         """Setup the target filesystem in preparation for an install.
 
@@ -833,6 +851,7 @@ class BaseImageCreator(object):
 
         # get size of available space in 'instroot' fs
         self._root_fs_avail = misc.get_filesystem_avail(self._instroot)
+        self.cp_tpk()
 
     def unmount(self):
         """Unmounts the target filesystem.
index 59138fc..e807a77 100755 (executable)
--- a/tools/mic
+++ b/tools/mic
@@ -124,7 +124,7 @@ def create_parser(parser):
                                dest='strict_mode', default=False,
                                help='Abort creation of image, if there are some errors'
                                     ' during rpm installation. ')
-     
+
     parent_parser.add_argument('-d', '--debug', action='store_true',
                                help='debug output')
     parent_parser.add_argument('-v', '--verbose', action='store_true',
@@ -134,6 +134,8 @@ def create_parser(parser):
                                help='interactive output')
     parent_parser.add_argument('--run_script', action='store', dest='run_script',
                                                    default=None, help='Run script on local PC after image created')
+    parent_parser.add_argument('--tpk_install', action='store', dest='tpk_install',
+                                                                       default=None, help='Copy tpk file to /usr/apps/.preload-tpk')
 
     parser.set_defaults(alias="cr")