use parameter file to trigger downstream job
authorLin Yang <lin.a.yang@intel.com>
Fri, 2 Nov 2012 05:57:03 +0000 (13:57 +0800)
committerLin Yang <lin.a.yang@intel.com>
Mon, 19 Nov 2012 07:46:26 +0000 (15:46 +0800)
common/triggerbuild.py [new file with mode: 0644]
job_obsevent_dispatcher.py

diff --git a/common/triggerbuild.py b/common/triggerbuild.py
new file mode 100644 (file)
index 0000000..08b5c68
--- /dev/null
@@ -0,0 +1,16 @@
+import base64
+try:
+    import json
+except ImportError:
+    import simplejson as json
+
+def write_to(filename, data):
+    with open(filename, 'w') as fh:
+        for key in data.keys():
+            fh.write('CONTENT=%s\n' % base64.b64encode(json.dumps(data)))
+    print 'write to %s to trigger downstream job' % filename
+
+def read_from(content):
+    content_dict = json.loads(base64.b64decode(content))
+    print json.dumps(content_dict, indent = 4)
+    return content_dict
index c05d2cf..0d077a6 100755 (executable)
@@ -5,7 +5,7 @@ try:
 except ImportError:
     import simplejson as json
 
-import amqplib.client_0_8 as amqp
+from common.triggerbuild import write_to
 from common.envparas import export
 
 PARAM_LIST = ['AMQP_HOST',
@@ -14,47 +14,33 @@ PARAM_LIST = ['AMQP_HOST',
               'AMQP_PASSWD',
               'AMQP_QUEUE',
               'OBS_EVENT_STRING',
-              'REQUESTS_QUEUE_NAME',
-              'REPOMAKER_QUEUE_NAME']
+              'BUILDCHECK_JOB_NAME',
+              'REQUESTS_JOB_NAME',
+              'REPOMAKER_JOB_NAME']
 
 export(PARAM_LIST, locals())
 
-def send_to_queue(queue_name, msg_body):
-    """ send message to the specified AMQP queue
-    """
-    conn = amqp.Connection(host = AMQP_HOST,
-                           userid = AMQP_USER,
-                           password = AMQP_PASSWD,
-                           virtual_host = AMQP_VHOST)
-
-    chan = conn.channel()
-    chan.access_request('/data', active=True, write=True)
-
-    chan.queue_declare(queue=queue_name, durable=True, auto_delete=False)
-    chan.queue_bind(queue=queue_name, exchange="", routing_key=queue_name)
-
-    msg = amqp.Message(msg_body, content_encoding='UTF-8')
-    msg.properties['delivery_mode'] = 2
-
-    chan.basic_publish(msg, exchange="", routing_key=queue_name)
-
-    chan.close()
-    conn.close()
-
 def main():
     event_dict = json.loads(OBS_EVENT_STRING)
-    requests_queue = REQUESTS_QUEUE_NAME or 'requests'
-    repomaker_queue = REPOMAKER_QUEUE_NAME or 'repomaker'
+    buildcheck_job = BUILDCHECK_JOB_NAME or 'buildcheck-post'
+    requests_job = REQUESTS_JOB_NAME or 'requests'
+    repomaker_job = REPOMAKER_JOB_NAME or 'repomaker'
 
     if event_dict and event_dict.has_key('fields'):
         if event_dict['fields'].has_key('obsEvent'):
             event_type = event_dict['fields']['obsEvent']['type']
             if 'OBS_SRCSRV_REQUEST' in event_type:
-                send_to_queue(requests_queue, OBS_EVENT_STRING)
-                print "event string has been sent to %s queue." % requests_queue
-            elif 'OBS_REPO' in event_type:
-                send_to_queue(repomaker_queue, OBS_EVENT_STRING)
-                print "event string has been sent to %s queue" % repomaker_queue
+                write_to('%s.env' % requests_job, event_dict['fields']['obsEvent'])
+            elif 'OBS_REPO_PUBLISHED' in event_type:
+                event_prj = event_dict['fields']['obsEvent']['project']
+                if 'buildcheck' in event_prj:
+                    write_to('%s.env' % buildcheck_job, event_dict['fields']['obsEvent'])
+                else:
+                    write_to('%s.env' % repomaker_job, event_dict['fields']['obsEvent'])
+            #elif 'OBS_BUILD' in event_type:
+            #    event_prj = event_dict['fields']['obsEvent']['project']
+            #    if 'buildcheck' in event_prj:
+            #        write_to('%s.env' % buildcheck_job, event_dict['fields']['obsEvent'])
 
 if __name__ == '__main__':
     main()