From: ZhuoX Li Date: Sun, 4 Jan 2015 07:30:11 +0000 (+0800) Subject: Fix the bug about accepting muliple packages. X-Git-Tag: 1.0~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=127285c117607b4fffdb14ad0ac912066956f134;p=services%2Fjenkins-scripts.git Fix the bug about accepting muliple packages. When accept/reject group submission, jenkins will accepts/rejects muliple packages. There are the different sourcepackages and targetpackages. we shouldn't use the same sourcepackage and targetpackage to work, when accept/reject. So add them into the matched project. Change-Id: Ie2e17897a3548f750e12dd79fb8f75e11138c3bd --- diff --git a/common/buildservice.py b/common/buildservice.py index 71391e0..3b09569 100644 --- a/common/buildservice.py +++ b/common/buildservice.py @@ -117,7 +117,7 @@ class BuildService(OSC): def get_sr_info(self, reqid): """Get some info of SR by reqid - Currently, We need 'sourcepackage', 'sourceproject', 'targetpackage', + Currently, We need 'sourceproject', 'targetproject', 'comment', 'sender' If need more, can add other data from the xml_root into the function in future. @@ -142,9 +142,7 @@ class BuildService(OSC): 'sender': 'Admin', } """ - NODES = {'sourcepackage':['action', 'source', 'package'], \ - 'sourceproject':['action', 'source', 'project'], \ - 'targetpackage':['action', 'target', 'package'], \ + NODES = {'sourceproject':['action', 'source', 'project'], \ 'targetproject':['action', 'target', 'project'], 'comment': ['state', 'comment'], 'sender': ['state', 'who'], @@ -155,9 +153,12 @@ class BuildService(OSC): """ try: data = xml_info[nodes[0]] + _data = data + if isinstance(_data, list): + _data = data[0] for node in nodes[1:]: - data = data[node] - return data + _data = _data[node] + return _data except (AttributeError, ValueError): return '' diff --git a/job_request.py b/job_request.py index f614407..184d7c6 100755 --- a/job_request.py +++ b/job_request.py @@ -78,11 +78,9 @@ def obs_git_data(event_fields): 'person': 'OBS_REQ_PERSON', 'role': 'OBS_REQ_ROLE', 'sender': 'OBS_REQ_SENDER', - 'sourcepackage': 'OBS_REQ_PKG_SRC', 'sourceproject': 'OBS_REQ_PRJ_SRC', 'sourcerevision': 'OBS_REQ_SRCREV', 'state': 'OBS_REQ_STATE', - 'targetpackage': 'OBS_REQ_PKG', 'targetproject': 'OBS_REQ_PRJ', 'time': 'OBS_REQ_TIME', 'event_type': 'OBS_REQ_TYPE', @@ -133,7 +131,9 @@ def obs_git_data(event_fields): projects.append(entry['GIT_PROJECTS']) for project in projects: tag = tag_info(project, entry['GIT_TAG']) - tag.update({'GIT_PROJECT': project}) + tag.update({'GIT_PROJECT': project, + 'OBS_REQ_PKG_SRC': os.path.basename(project), + 'OBS_REQ_PKG': os.path.basename(project),}) projects_list.append(tag) else: print '-------------------------------------' @@ -340,8 +340,7 @@ def main(): build = BuildService(os.getenv('OBS_API_URL'), \ os.getenv('OBS_API_USERNAME'), os.getenv('OBS_API_PASSWD')) reqinfo = build.get_sr_info(event_fields.get('id')) - for var in ['targetproject', 'targetpackage', \ - 'sourceproject', 'sourcepackage', + for var in ['targetproject', 'sourceproject', 'comment', 'sender']: if var not in event_fields: event_fields.update({var: reqinfo.get(var)}) @@ -386,6 +385,10 @@ def main(): data.update({'GIT_AUTHOR_EMAIL': '%s <%s>' % \ (project_data['author'], project_data['email'])}) + # Update sourcepackage and targetpackage into event_fields, + # becuase the multiple project have the different packages. + event_fields.update({'sourcepackage': project_data['OBS_REQ_PKG_SRC'], + 'targetpackage': project_data['OBS_REQ_PKG']}) if not (event_type == 'OBS_SRCSRV_REQUEST_REVOKED' or \ (event_type == 'OBS_SRCSRV_REQUEST_STATECHANGE' and \ event_fields['state'] == 'revoked')):