import json
import sys
import os
+import datetime
envparas = ['OBS_EVENT_STRING',
'OBS_OSCRC_PATH',
'MAILINGLIST',
'BCC_MAILS',
'BUILD_TAG',
+ 'OBS_URL',
'EMAIL_TEMPLATES_DIR',
'GIT_CACHE_DIR',
'GERRIT_HOSTNAME',
export(envparas, locals())
+def request_url(request_id):
+ if OBS_URL:
+ return '%s/request/show/%s' %(OBS_URL, request_id)
+ else:
+ return '%s' %(request_id)
+
def tag_info(prjdir, tag):
git.update_git_project(GIT_CACHE_DIR, prjdir, GIT_URL)
data['git_project'],
data["tag"],
data['commit_subj'],
- 'null')
+ request_url(data['request_id']))
gerrit.review(commit = data['commitid'], message = message)
- if data['tag'].startswith('submit'):
- accepted_tag = data['tag'].replace('submit','accepted')
+ tag = data['tag'].lower()
+
+ if tag.startswith('submit'):
+ try:
+ target_version = tag.split('/')[1]
+ except:
+ target_version = 'unknown'
else:
- accepted_tag = 'accepted/%s' %(data['tag'])
+ try:
+ target_version = '.'.join(tag.split('/')[1])
+ except:
+ target_version = 'unknown'
+
+ timestamp = datetime.datetime.utcnow().strftime("%Y%m%d.%H%M%S")
- gitprj.create_tag(accepted_tag, "Accepted by %s" %(data['reviewer']), data['commitid'])
+ # use os.path.join() to avoid '//', which is invalid as tag name
+ accepted_tag = os.path.join('accepted', target_version, timestamp)
+
+ gitprj.create_tag(accepted_tag, message, data['commitid'])
args = []
args.append('ssh://%s@%s:%s/%s' %(gerrit.username, gerrit.host, gerrit.port, data['git_project']))
- args.append('%s --tag' %(accepted_tag))
+ args.append('refs/tags/%s' %(accepted_tag))
gitprj.push(' '.join(args))
def request_rejected(data, gerrit, gitprj):
data['git_project'],
data["tag"],
data['commit_subj'],
- 'null')
+ request_url(data['request_id']))
gerrit.review(commit = data['commitid'], message = message)
data['git_project'],
data["tag"],
data['commit_subj'],
- 'null')
- print message
+ request_url(data['request_id']))
+ print '#########NOTE: post to gerrit is disabled###############################'
#gerrit.review(commit = data['commitid'], message = message)
+ print message
+ print '########################################'
+
def notify_submiter(event_fields, data):
print '====Notify the tag owner===================================='
for entry in data['descriptions']:
mail_to.append(entry['author_email'])
- status = True
+ status = {}
bs = buildservice.BuildService(OBS_API_URL, OBS_OSCRC_PATH)
# email notification to mailing list
- if MAILINGLIST:
- status = mailer(event_fields, bs, event_fields, NOREPLY_EMAIL_SENDER,
+ status = mailer(event_fields, bs, event_fields, NOREPLY_EMAIL_SENDER,
MAILINGLIST, BCC_MAILS, data, SR_ENABLE_USER, EMAIL_TEMPLATES_DIR)
print status
if status:
return_dict = {}
if request['type'] not in MAIL_TRIGGERS.keys():
- return False
+ return {}
rid = request['id']
tgtprj = request[tri['tgtprj']]
if tgtprj is None:
logger('info', 'ignore requests for empty targetproject: %s' % ev)
- return False
+ return return_dict
if IGNORE_HOME and tgtprj.startswith('home'):
logger('info', 'ignore requests for home project: %s' % ev)
- return False
+ return return_dict
if not _is_valid_submitter(tri['temp'], request['author'], sr_enabled_users):
bs.reqDecline(rid, msg=AUTO_REJECT_COMMENT)
- return False
+ return return_dict
logger('info', 'sending mail for %s %s' %(ev, tri['temp']))
return_dict['reqinfo'] = reqinfo
return_dict['To'] = request_data['author_email']
- return_dict['Cc'] = ml
+
+ # CC mailinglist and the author of superseded SRs
+ return_dict['Cc'] = [ml]
+ for desp in request_data['descriptions']:
+ return_dict['Cc'].append(desp['author_email'])
+
return_dict['realname'] = request_data['author']
if bccs:
return_dict['Bcc'] = bccs