Add change abandoned logic to jeepyb

This change allows jeepyb to update LP bugs associated
to Gerrit changesets when those changesets
are abandoned.
Another change in openstack-infra/config will be needed
to configure review.openstack.org appropriately.

Partial-Bug: 1248813
Change-Id: I51ab97f240d161704fb323787fb54ee1814bd7fa
diff --git a/jeepyb/cmd/update_bug.py b/jeepyb/cmd/update_bug.py
index 5a351e4..8644106 100644
--- a/jeepyb/cmd/update_bug.py
+++ b/jeepyb/cmd/update_bug.py
@@ -46,6 +46,19 @@
         return "Fix"
 
 
+def add_change_abandoned_message(bugtask, change_url, project,
+                                 branch, abandoner, reason):
+    subject = ('Change abandoned on %s (%s)'
+               % (u.short_project_name(project), branch))
+    body = ('Change abandoned by %s on branch: %s\nReview: %s'
+            % (abandoner, branch, change_url))
+
+    if reason:
+        body += ('\nReason: %s' % (reason))
+
+    bugtask.bug.newMessage(subject=subject, content=body)
+
+
 def add_change_proposed_message(bugtask, change_url, project, branch,
                                 related=False):
     fix = fix_or_related_fix(related)
@@ -194,6 +207,11 @@
 
     bugtask = task.lp_task
 
+    if args.hook == "change-abandoned":
+        add_change_abandoned_message(bugtask, args.change_url,
+                                     args.project, args.branch,
+                                     args.abandoner, args.reason)
+
     if args.hook == "change-merged":
         if args.branch == 'master':
             if (p.is_direct_release(args.project) and
@@ -317,6 +335,9 @@
     parser.add_argument('--branch', default=None)
     parser.add_argument('--commit', default=None)
     parser.add_argument('--topic', default=None)
+    # change-abandoned
+    parser.add_argument('--abandoner', default=None)
+    parser.add_argument('--reason', default=None)
     # change-merged
     parser.add_argument('--submitter', default=None)
     # patchset-created