create temp configuration file when runs on slave
authorHasan Wan <hasan.wan@intel.com>
Mon, 20 May 2013 06:15:44 +0000 (14:15 +0800)
committerHasan Wan <hasan.wan@intel.com>
Mon, 20 May 2013 06:15:44 +0000 (14:15 +0800)
Change-Id: Ie22e6cf6b9f74f5834afdd006509b9f0e1809907

job_imager.py

index 07fcd83..4ab49b0 100755 (executable)
@@ -1,14 +1,62 @@
 #!/usr/bin/env python
-import os, sys
+
+import os
+import sys
 import subprocess
-from datetime import datetime
+import tempfile
+from common.buildtrigger import trigger_info
 
-try:
-    import json
-except ImportError:
-    import simplejson as json
+kvmic_conf_template ="""
+[general]
+resdir = /usr/share/kvmic
+imgdir = /var/tmp/mic2image
 
-from common.buildtrigger import trigger_info
+[run]
+usekvm = no
+usescreen = no
+tmpimgdir = /var/tmp/mic2image.tmp
+
+[deploy]
+;
+
+; Following configurations are for mic
+[common]
+; general settings
+distro_name = Tizen
+plugin_dir = /usr/lib/mic/plugins
+
+[create]
+base_buildid = invalid_id
+tmpdir= %(tmpdir)s
+cachedir= %(cachedir)s
+outdir= %(outdir)s
+runtime= %(runtime)s
+
+pkgmgr = auto
+
+# to skip all ssl verification for repos
+#ssl_verify = no
+
+[bootstrap]
+rootdir=/var/tmp/mic-bootstrap
+packages=mic-bootstrap-x86-arm
+
+"""
+
+def gen_kvmic_conf():
+    kvmic_conf_string = kvmic_conf_template %{
+        "tmpdir": os.getenv("MIC_TMPDIR", "/var/tmp/mic"),
+        "cachedir": os.getenv("MIC_CACHEDIR", "/var/tmp/mic/cache"),
+        "outdir": os.path.join(os.getenv("WORKSPACE"),"image"),
+        "runtime": os.getenv("MIC_RUNTIME", "native")
+        }
+
+    (fds, path) = tempfile.mkstemp(prefix=".kvmic_conf")
+    os.close(fds)
+    with file(path, 'w+') as fobj:
+        fobj.write(kvmic_conf_string)
+
+    return path
 
 def main():
 
@@ -18,11 +66,9 @@ def main():
         kickstart = fields["kickstart"]
         buildid = fields.get("buildid") or 'prerelease'
         name = fields["name"]
-        timeout = '90m'
-        starttime = fields.get("starttime") or datetime.now()
         image_pub_path = fields.get("images_path")
         image_dest_path = image_pub_path.replace(\
-                os.getenv('IMG_PUB_PATH_BASE'), os.getenv('IMG_DEST_PATH_BASE'))
+                os.getenv('IMG_PUB_PATH_BASE','_NULL_'), os.getenv('IMG_DEST_PATH_BASE','_NULL_'))
 
     except KeyError, e:
         print 'Lost field: %s' % str(e)
@@ -38,13 +84,14 @@ def main():
     with open(ks_path, 'w') as ks_fh:
         ks_fh.write(kickstart)
 
+    # Temp configuration
+    kvmic_conf = gen_kvmic_conf()
     print 'starting kvmic instance to create image...'
-    kvmic_cmd = "/usr/bin/kvmic -b %s -k %s -d %s -T %s"  %(buildid,
-                                                            ks_path,
-                                                            output_path,
-                                                            timeout)
-    print kvmic_cmd
-
+    kvmic_cmd = "/usr/bin/kvmic -b %s -k %s -d %s -T %s -c %s"  %(buildid,
+                                                                  ks_path,
+                                                                  output_path,
+                                                                  '20m',
+                                                                  kvmic_conf)
     ret = subprocess.call(kvmic_cmd,
                           stdout=sys.stdout,
                           stderr=sys.stderr,
@@ -54,15 +101,12 @@ def main():
         status = {0: 'ok', 1: 'failed', 2: 'timeout'}[ret]
     except KeyError:
         status = 'kvmic runtime error'
-
-    if not os.path.isdir(image_dest_path):
-        os.makedirs(image_dest_path)
-
-    os.system('mv %s/%s/images/* %s/' %(output_path, buildid, image_dest_path))
+    os.unlink(kvmic_conf)
 
     print 'kvmic quit, with status: %s' % status
+    return ret
 
 
 if __name__ == "__main__":
 
-    main()
+    sys.exit(main())