Merge "Another method of install tpk." into devel
authorChunhua Liu <chunhua1.liu@samsung.com>
Mon, 29 Jan 2018 05:29:00 +0000 (05:29 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Mon, 29 Jan 2018 05:29:01 +0000 (05:29 +0000)
1  2 
mic/3rdparty/pykickstart/parser.py
mic/3rdparty/pykickstart/sections.py
mic/conf.py
mic/imager/baseimager.py
mic/kickstart/__init__.py
mic/rt_util.py
plugins/imager/fs_plugin.py
plugins/imager/loop_plugin.py
plugins/imager/qcow_plugin.py
plugins/imager/raw_plugin.py

index 02a0f320f2e5ee61718a82675fe30b912275ecee,f09f925663900f555d2974864669d08661f7ebdc..46495f6a81c928e5128ceb77be60d9d788750559
@@@ -704,5 -720,6 +722,7 @@@ class KickstartParser
          self.registerSection(PostScriptSection(self.handler, dataObj=Script))
          self.registerSection(TracebackScriptSection(self.handler, dataObj=Script))
          self.registerSection(RunScriptSection(self.handler, dataObj=Script))
 +        self.registerSection(PostUmountScriptSection(self.handler, dataObj=Script))
          self.registerSection(PackageSection(self.handler))
+         self.registerSection(TpkPackageSection(self.handler))
Simple merge
diff --cc mic/conf.py
Simple merge
index f39d236f0b130abf7d5fb147dd38d2a87364b33b,d93276393fc4838bc8300eba60174718befd2ff4..ef86f0fad64313db8e580634112183f858bed682
@@@ -1153,8 -1152,49 +1153,49 @@@ class BaseImageCreator(object)
              except:
                  pass
  
+     def tpkinstall(self):
+         if self.ks:
+             tpk_pkgs = kickstart.get_tpkpackages(self.ks)
+             tpk_repoList = kickstart.get_tpkrepos(self.ks)
+             if tpk_repoList and tpk_pkgs:
+                 tpk_dir = "/usr/apps/.preload-tpk"
+                 fs.makedirs(self._instroot + "/usr/apps")
+                 fs.makedirs(self._instroot + tpk_dir)
+             for pkg in tpk_pkgs:
+                 flag = 0
+                 for tpk_repo in tpk_repoList:
+                     if hasattr(tpk_repo,'baseurl') and tpk_repo.baseurl.startswith("file:"):
+                         tpk_repourl = tpk_repo.baseurl.replace('file:','')
+                         tpk_repourl = "/%s" % tpk_repourl.lstrip('/')
+                         tpk_pkgpath = tpk_repourl + "/"+ pkg
+                         if os.path.isfile(tpk_pkgpath):
+                             shutil.copy(tpk_pkgpath,self._instroot + tpk_dir)
+                             flag = 1
+                             break
+                     elif hasattr(tpk_repo,'baseurl'):
+                         url = tpk_repo.baseurl.join(pkg)
+                         filename = self._instroot+tpk_dir+"/"+pkg
+                         if tpk_repo.baseurl.startswith("http:"):
+                             import urllib
+                             status = urllib.urlopen(url).code
+                             if status == 200:
+                                 filename = myurlgrab(url.full, filename, None)
+                                 flag = 1
+                                 break
+                             elif status == 404 or status == None:
+                                 continue
+                         #url is ok, then download, url wrong, check other url.
+                         elif tpk_repo.baseurl.startswith("https:") :
+                             try:
+                                 flag = 1
+                                 filename = myurlgrab(url.full, filename, None)
+                             except CreatorError:
+                                 continue
+                 if flag == 0:
+                     raise CreatorError("Tpk package missing.")
      def postinstall(self):
 -        self.copy_attachment()
 +        pass
  
      def _get_sign_scripts_env(self):
          """Return an environment dict for %post-umount scripts.
Simple merge
diff --cc mic/rt_util.py
Simple merge
Simple merge
index 8815fe4db2a15e215d088c6839e1cff7c3dab4b2,0b94f0ea17d5f9ac66909220256096e9fbac924e..d81eb457656a3a6e54b1f646e338c0c91c39a9cb
@@@ -101,9 -101,9 +101,10 @@@ class LoopPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.create_cpio_image()
              creator.unmount()
              creator.copy_cpio_image()
index a1d808a037aa363e58ca792a5ab0adb4c4795005,3962ec00a846d8bf8aba99556bf075dd8a6129e0..239778b828379075fe3846edb5aec91ae3830f41
@@@ -132,9 -132,9 +132,10 @@@ class QcowPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.create_cpio_image()
              creator.unmount()
              creator.copy_cpio_image()
index ef537a42e5edb8a3daf81e18c2261ef996528681,e954b7b271bbc583d4c2f987278df29885daf04e..7d44bc3266338dd4f3a9caafc9850346475e0957
@@@ -99,9 -99,9 +99,10 @@@ class RawPlugin(ImagerPlugin)
              creator.check_depend_tools()
              creator.mount(None, creatoropts["cachedir"])
              creator.install()
+             creator.tpkinstall()
              creator.configure(creatoropts["repomd"])
              creator.copy_kernel()
 +            creator.copy_attachment()
              creator.unmount()
              creator.generate_bmap()
              creator.package(creatoropts["destdir"])