save repo data and enable to dispatch obs build events
authorLi Yi <yi.a.li@intel.com>
Fri, 24 Aug 2012 05:00:11 +0000 (13:00 +0800)
committerLin Yang <lin.a.yang@intel.com>
Thu, 28 Feb 2013 07:44:17 +0000 (15:44 +0800)
boss-image-dispatcher.py
boss-repomaker.py

index b166379..706b27f 100755 (executable)
@@ -3,6 +3,11 @@
 from __future__ import with_statement
 import os
 
+try:
+    import json
+except ImportError:
+    import simplejson as json
+
 from common.envparas import export
 from images import submit, get_ks_list, set_relative_uri
 
@@ -11,13 +16,15 @@ PARAM_LIST = ['AMQP_HOST',
               'AMQP_USER',
               'AMQP_PASSWD',
               'AMQP_QUEUE',
+              'OBS_EVENT_STRING',
               'CONF_BASEURL',
               'IMAGES_PATH',
               'RELATIVE_URI',
               'RSYNC_SERVER',
               'release_build_id',
               'To',
-              'snapshot']
+              'snapshot',
+              'BUILD_TAG']
 
 export(PARAM_LIST, locals())
 
@@ -28,6 +35,31 @@ AMQP_SET = {
     'pwd': AMQP_PASSWD,
 }
 
+def OBS_Repo_data(event_fields, ks_list):
+
+    obs_fields_mapping = {
+                'project': 'obs_repo_project',
+                'repo': 'obs_repo_repo',
+                'time': 'obs_repo_time',
+                'type': 'obs_repo_type',
+            }
+
+    ret_data = {}
+    for key in obs_fields_mapping.keys():
+        ret_data[obs_fields_mapping[key]] = event_fields.get(key)
+
+    ret_data['obs_repo_baseurl'] = CONF_BASEURL
+    ret_data['obs_repo_buildid'] = release_build_id
+    ret_data['obs_repo_kslist'] = ks_list
+
+    # Database records
+    print '########################################'
+    import pprint
+    pp = pprint.PrettyPrinter(indent=4)
+    print pp.pprint(ret_data)
+
+    return ret_data
+
 def main():
     ready = ("True" == snapshot)
 
@@ -54,5 +86,13 @@ def main():
         else:
             print 'Empty kickstart file list, skip!'
 
+        event = json.loads(' '.join(OBS_EVENT_STRING.split()))
+        event_fields = event['fields']['obsEvent']
+        OBS_Repo_data(event_fields, ks_list)
+
+        with open('%s.env' %(BUILD_TAG), 'w') as f:
+            f.write("release_build_id = %s\n" %release_build_id)
+            f.write("RELATIVE_URI = %s\n" %RELATIVE_URI)
+
 if __name__ == "__main__":
     main()
index 76eaaa5..89a161f 100755 (executable)
@@ -73,7 +73,7 @@ def main():
     event_fields = event['fields']['obsEvent']
 
     if not event_fields:
-        print "Invalud OBS event: %s" %(OBS_EVENT_STRING)
+        print "Invalid OBS event: %s" %(OBS_EVENT_STRING)
         sys.exit(-1)
 
     try: