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.
'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'],
"""
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 ''
'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',
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 '-------------------------------------'
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)})
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')):