From c9e3a1a88c53a5dd08f0aa0783d92a7786993a10 Mon Sep 17 00:00:00 2001 From: Hasan Wan Date: Fri, 2 Nov 2012 16:25:52 +0800 Subject: [PATCH] rename triggerbuild to buildtrigger, fix bugs Change-Id: I8cb140ddb42ab7a85f663a151d3ce1c64865c6a8 Signed-off-by: Hasan Wan --- common/buildtrigger.py | 19 +++++++++++++++++++ common/triggerbuild.py | 16 ---------------- job_obsevent_dispatcher.py | 8 ++++---- job_request.py | 13 +++++++++---- 4 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 common/buildtrigger.py delete mode 100644 common/triggerbuild.py diff --git a/common/buildtrigger.py b/common/buildtrigger.py new file mode 100644 index 0000000..50f5851 --- /dev/null +++ b/common/buildtrigger.py @@ -0,0 +1,19 @@ +import base64 +try: + import json +except ImportError: + import simplejson as json + +def trigger_next(job_name, data): + print "====LOG:TRIGGER_NEXT:%s ========================================" %job_name.upper() + with open("%s.env" %job_name, 'w') as fh: + fh.write('TRIGGER_INFO=%s\n' % base64.b64encode(json.dumps(data))) + for key in data.keys(): + print "%s='%s'" %(key, data[key]) + print "====LOG:TRIGGER_NEXT:========================================end==" +def trigger_info(TRIGGER_INFO): + print "====LOG:TRIGGER_INFO:========================================" + content_dict = json.loads(base64.b64decode(TRIGGER_INFO)) + print json.dumps(content_dict, indent = 4) + print "====LOG:TRIGGER_INFO:========================================end==" + return content_dict diff --git a/common/triggerbuild.py b/common/triggerbuild.py deleted file mode 100644 index 08b5c68..0000000 --- a/common/triggerbuild.py +++ /dev/null @@ -1,16 +0,0 @@ -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 diff --git a/job_obsevent_dispatcher.py b/job_obsevent_dispatcher.py index 0d077a6..d6d618b 100755 --- a/job_obsevent_dispatcher.py +++ b/job_obsevent_dispatcher.py @@ -5,7 +5,7 @@ try: except ImportError: import simplejson as json -from common.triggerbuild import write_to +from common.buildtrigger import trigger_next from common.envparas import export PARAM_LIST = ['AMQP_HOST', @@ -30,13 +30,13 @@ def main(): if event_dict['fields'].has_key('obsEvent'): event_type = event_dict['fields']['obsEvent']['type'] if 'OBS_SRCSRV_REQUEST' in event_type: - write_to('%s.env' % requests_job, event_dict['fields']['obsEvent']) + trigger_next(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']) + trigger_next(buildcheck_job, event_dict['fields']['obsEvent']) else: - write_to('%s.env' % repomaker_job, event_dict['fields']['obsEvent']) + trigger_next(repomaker_job, event_dict['fields']['obsEvent']) #elif 'OBS_BUILD' in event_type: # event_prj = event_dict['fields']['obsEvent']['project'] # if 'buildcheck' in event_prj: diff --git a/job_request.py b/job_request.py index a1ee476..231ea9d 100755 --- a/job_request.py +++ b/job_request.py @@ -3,6 +3,7 @@ from common.envparas import export from common import git from common import buildservice from common.gerrit import Gerrit +from common.buildtrigger import trigger_info, trigger_next from common.send_mail import prepare_mail from requests.mailer import mailer @@ -12,7 +13,7 @@ import os import datetime import codecs -envparas = ['OBS_EVENT_STRING', +envparas = ['TRIGGER_INFO', 'OBS_OSCRC_PATH', 'OBS_API_URL', 'SR_ENABLE_USER', @@ -214,11 +215,10 @@ def notify_submiter(event_fields, data): if status: prepare_mail("%s.env" %(BUILD_TAG), status['subject'], status['body'], NOREPLY_EMAIL_SENDER, status['To'], status['Cc']) -event = json.loads(' '.join(OBS_EVENT_STRING.split())) -event_fields = event['fields']['obsEvent'] +event_fields = trigger_info(TRIGGER_INFO) if not event_fields: - print 'Invalid OBS event: %s' %(OBS_EVENT_STRING) + print 'Invalid OBS event' sys.exit(-1) data = OBS_Git_data(event_fields) @@ -232,7 +232,12 @@ gitprj = git.Git('%s/%s' %(GIT_CACHE_DIR, data['git_project'])) if event_fields['type'] == 'OBS_SRCSRV_REQUEST_STATECHANGE': if event_fields['state'] == 'declined': request_rejected(data, gerrit, gitprj) + trigger_next('reviewrepo_cleanup', data) + elif event_fields['type'] == 'OBS_SRCSRV_REQUEST_CREATE': request_created(data, gerrit, gitprj) + trigger_next('pre_release_image', data) + elif event_fields['type'] == 'OBS_SRCSRV_REQUEST_ACCEPTED': request_accepted(data, gerrit, gitprj) + trigger_next('reviewrepo_cleanup', data) -- 2.7.4