Add launchpad bug update support to abandon script
Change-Id: If6db7c8f39665dfdef9b3936fd75e33bd9b76e03
This commit is contained in:
parent
eebcee4316
commit
514580692c
@ -292,6 +292,19 @@ If the bug report is sound, move next:
|
|||||||
we rotate, tagging bugs with 'needs-attention' can be useful to quickly
|
we rotate, tagging bugs with 'needs-attention' can be useful to quickly
|
||||||
identify what reports need further screening/eyes on.
|
identify what reports need further screening/eyes on.
|
||||||
|
|
||||||
|
Check for Bugs with the 'timeout-abandon' tag:
|
||||||
|
|
||||||
|
* Search for any bugs with the timeout abandon tag:
|
||||||
|
`Timeout abandon <https://bugs.launchpad.net/neutron/+bugs?field.tag=timeout-abandon>`_.
|
||||||
|
This tag indicates that the bug had a patch associated with it that was
|
||||||
|
automatically abandonded after a timing out with negative feedback.
|
||||||
|
* For each bug with this tag, determine if the bug is still valid and update
|
||||||
|
the status accordingly. For example, if another patch fixed the bug, ensure
|
||||||
|
it's marked as 'Fix Released'. Or, if that was the only patch for the bug and
|
||||||
|
it's still valid, mark it as 'Confirmed'.
|
||||||
|
* After ensuring the bug report is in the correct state, remove the
|
||||||
|
'timeout-abandon' tag.
|
||||||
|
|
||||||
You are done! Iterate.
|
You are done! Iterate.
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,12 +36,14 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
function abandon_review {
|
function abandon_review {
|
||||||
local gitid=$1
|
local gitid=$1
|
||||||
shift
|
shift
|
||||||
local msg=$@
|
local msg=$@
|
||||||
# echo ssh review.openstack.org gerrit review $gitid --abandon --message \"$msg\"
|
# echo ssh review.openstack.org gerrit review $gitid --abandon --message \"$msg\"
|
||||||
|
unassign_and_new_bug $gitid
|
||||||
if [ $DRY_RUN -eq 1 ]; then
|
if [ $DRY_RUN -eq 1 ]; then
|
||||||
echo "Would abandon $gitid"
|
echo "Would abandon $gitid"
|
||||||
else
|
else
|
||||||
@ -50,6 +52,20 @@ function abandon_review {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function unassign_and_new_bug {
|
||||||
|
# unassign current assignee and set bug to 'new' status
|
||||||
|
local gitid=$1
|
||||||
|
cm=$(ssh review.openstack.org "gerrit query $gitid --current-patch-set --format json" | jq .commitMessage)
|
||||||
|
for closes in $(echo -e $cm | grep -i "closes" | grep -i "bug" | grep -o -E '[0-9]+'); do
|
||||||
|
if [ $DRY_RUN -eq 1 ]; then
|
||||||
|
echo "Would unassign and tag 'timeout-abandon' $closes"
|
||||||
|
else
|
||||||
|
echo "Attempting to change status of bug $closes to New"
|
||||||
|
python "$DIR/unassign_bug.py" $closes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
PROJECTS="($(
|
PROJECTS="($(
|
||||||
python - <<EOF
|
python - <<EOF
|
||||||
import urllib2
|
import urllib2
|
||||||
|
52
tools/unassign_bug.py
Normal file
52
tools/unassign_bug.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
"""Unassigns assignee from neutron/network bug, adds message and tag.
|
||||||
|
|
||||||
|
If you get the following exception, you need X11 and python-dbus installed:
|
||||||
|
RuntimeError: No recommended backend was available. Install
|
||||||
|
the keyrings.alt package if you want to use the non-recommended
|
||||||
|
backends. See README.rst for details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from launchpadlib.launchpad import Launchpad
|
||||||
|
|
||||||
|
|
||||||
|
MSG_BODY = "\
|
||||||
|
This bug has had a related patch abandoned and has been automatically \
|
||||||
|
un-assigned due to inactivity. Please re-assign yourself if you are \
|
||||||
|
continuing work or adjust the state as appropriate if it is no longer valid."
|
||||||
|
|
||||||
|
|
||||||
|
def unassign(bug_num):
|
||||||
|
launchpad = Launchpad.login_with('neutron', 'production')
|
||||||
|
b = launchpad.bugs[bug_num]
|
||||||
|
for task in b.bug_tasks:
|
||||||
|
if ('neutron' not in task.bug_target_name and
|
||||||
|
'network' not in task.bug_target_name):
|
||||||
|
# try not to interfere with non-neutron projects too much
|
||||||
|
continue
|
||||||
|
task.assignee = None
|
||||||
|
if task.status == "In Progress":
|
||||||
|
task.status = 'New'
|
||||||
|
task.lp_save()
|
||||||
|
b.tags = b.tags + ['timeout-abandon']
|
||||||
|
b.newMessage(content=MSG_BODY, subject='auto-abandon-script')
|
||||||
|
b.lp_save()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unassign(int(sys.argv[1]))
|
Loading…
Reference in New Issue
Block a user