accepted tag format accepted/${version}/${accepte_datetime}
authorHasan Wan <hasan.wan@intel.com>
Wed, 15 Aug 2012 03:18:27 +0000 (11:18 +0800)
committerLin Yang <lin.a.yang@intel.com>
Tue, 28 Aug 2012 03:23:07 +0000 (11:23 +0800)
fix a bug about mailer

Change-Id: I6c9954bdadb56dc2ce5b93e92aa66f02b75c2177
Signed-off-by: Hasan Wan <hasan.wan@intel.com>
request.py
requests/mailer.py

index e152543..f7aff70 100644 (file)
@@ -8,6 +8,7 @@ from requests.mailer import mailer
 import json
 import sys
 import os
+import datetime
 
 envparas = ['OBS_EVENT_STRING',
             'OBS_OSCRC_PATH',
@@ -17,6 +18,7 @@ envparas = ['OBS_EVENT_STRING',
             'MAILINGLIST',
             'BCC_MAILS',
             'BUILD_TAG',
+            'OBS_URL',
             'EMAIL_TEMPLATES_DIR',
             'GIT_CACHE_DIR',
             'GERRIT_HOSTNAME',
@@ -26,6 +28,12 @@ envparas = ['OBS_EVENT_STRING',
 
 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)
@@ -100,19 +108,32 @@ def request_accepted(data, gerrit, gitprj):
                           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):
@@ -130,7 +151,7 @@ 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)
 
@@ -149,10 +170,13 @@ def request_created(data, gerrit, gitprj):
                           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===================================='
@@ -162,13 +186,12 @@ def notify_submiter(event_fields, data):
     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:
index add3bda..7a0a06e 100644 (file)
@@ -279,7 +279,7 @@ def mailer(request, bs, wi, noreply_sender, ml, bccs, request_data,
     return_dict = {}
 
     if request['type'] not in MAIL_TRIGGERS.keys():
-        return False
+        return {}
 
     rid = request['id']
 
@@ -292,15 +292,15 @@ def mailer(request, bs, wi, noreply_sender, ml, bccs, request_data,
                 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']))
 
@@ -311,7 +311,12 @@ def mailer(request, bs, wi, noreply_sender, ml, bccs, request_data,
                 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