Add reviewers to an API WG review

To make it easier to engage the liaisons, we have a tool that will
add all current liaisons to an API WG review.

Change-Id: I0c32aa407def04c8a81868ed8a682cb7888ff1ff
This commit is contained in:
Everett Toews 2015-06-19 18:15:49 -05:00
parent 38a98d5a12
commit 9e83fc0c10
4 changed files with 255 additions and 0 deletions

View File

@ -43,4 +43,5 @@ specific issue:
process
template
liaisons
guidelines/*

144
doc/source/liaisons.json Normal file
View File

@ -0,0 +1,144 @@
{
"liaisons": [
{
"project": "Barbican",
"name": "Douglas Mendizábal",
"nick": "redrobot"
},
{
"project": "Ceilometer",
"name": "Chris Dent",
"nick": "cdent"
},
{
"project": "Cinder",
"name": "Alex Meade",
"nick": "ameade"
},
{
"project": "Congress",
"name": "",
"nick": ""
},
{
"project": "Designate",
"name": "",
"nick": ""
},
{
"project": "Glance",
"name": "Stuart McLaren",
"nick": "mclaren"
},
{
"project": "Glance",
"name": "Nikhil Komawar",
"nick": "nikhil_k"
},
{
"project": "Heat",
"name": "Ryan Brown",
"nick": "ryansb"
},
{
"project": "Horizon",
"name": "Cindy Lu",
"nick": "clu_"
},
{
"project": "Ironic",
"name": "Lucas Alvares Gomes",
"nick": "lucasagomes"
},
{
"project": "Keystone",
"name": "Dolph Mathews",
"nick": "dolphm"
},
{
"project": "MagnetoDB",
"name": "Ilya Sviridov",
"nick": "isviridov"
},
{
"project": "Magnum",
"name": "",
"nick": ""
},
{
"project": "Manila",
"name": "Alex Meade",
"nick": "ameade"
},
{
"project": "Mistral",
"name": "",
"nick": ""
},
{
"project": "Murano",
"name": "",
"nick": ""
},
{
"project": "Neutron",
"name": "Salvatore Orlando",
"nick": "salv-orlando"
},
{
"project": "Neutron",
"name": "Henry Gessau",
"nick": "HenryG"
},
{
"project": "Nova",
"name": "Matthew Gilliard",
"nick": "gilliard"
},
{
"project": "Nova",
"name": "Alex Xu",
"nick": "alex_xu"
},
{
"project": "Rally",
"name": "",
"nick": ""
},
{
"project": "Sahara",
"name": "Michael McCune",
"nick": "elmiko"
},
{
"project": "Sahara",
"name": "Sergey Lukjanov",
"nick": "SergeyLukjanov"
},
{
"project": "Swift",
"name": "John Dickinson",
"nick": "notmyname"
},
{
"project": "Trove",
"name": "Peter Stachowski",
"nick": "peterstac"
},
{
"project": "Trove",
"name": "Amrith Kumar",
"nick": "amrith"
},
{
"project": "Tripleo",
"name": "",
"nick": ""
},
{
"project": "Zaqar",
"name": "Fei Long Wang",
"nick": "flwang"
}
]
}

47
doc/source/liaisons.rst Normal file
View File

@ -0,0 +1,47 @@
Cross-Project Liaisons
======================
Description
-----------
The API Working Group seeks API subject matter experts for each project to
communicate plans for API updates, review API guidelines with their project's
view in mind, and review the API Working Group guidelines as they are drafted.
The Cross-Project Liaison (CPL) should be familiar with the project's REST API
design and future planning for changes to it.
* The liaison should be the PTL or whomever they delegate to be their
representative
* The liaison is the first line of contact for the API Working Group team
members
* The liaison may further delegate work to other subject matter experts
* The liaison should be aware of and engaged in the API Working Group
`Communication channels
<https://wiki.openstack.org/wiki/API_Working_Group#Communication>`_
* The Nova team has been very explicit about how they will liaise with the
API Working Group, see the `Responsibilities of Liaisons <https://wiki.openstack.org/wiki/Nova/APIWGLiaisons>`_
Tooling
-------
To make it easier to engage the liaisons, we have a tool that will add all
current liaisons to an API WG review.
You can run the tool like so from the base dir of the api-wg repository.
::
$ python3 tools/add-reviewers.py my-gerrit-username 183599
Added 21 reviewers to 183599
To get help use ``--help``.
::
$ python3 tools/add-reviewers.py --help
Liaisons
--------
.. literalinclude:: liaisons.json
:language: json

63
tools/add-reviewers.py Executable file
View File

@ -0,0 +1,63 @@
#!/usr/bin/env python
import argparse
import json
import logging
import subprocess
logger = logging.getLogger(__name__)
def parse_args():
parser = argparse.ArgumentParser(
description="Add the cross-project liaisons as reviewers " \
"on an API working group review.")
parser.add_argument('--debug', help="Print debugging information",
action='store_true')
parser.add_argument("username", help="Your Gerrit username", type=str)
parser.add_argument("review", help="An API WG Gerrit review", type=int)
args = parser.parse_args()
return (args.debug, args.username, args.review)
def get_liaisons():
with open('doc/source/liaisons.json') as f:
liaisons = json.load(f)['liaisons']
names = [liaison['name'] for liaison in liaisons if liaison['name']]
return names
def add_reviewers(debug, username, liaisons, review):
gerrit = [
'ssh',
'-p',
'29418',
'{}@review.openstack.org'.format(username),
'gerrit',
'set-reviewers'
]
for liaison in liaisons:
gerrit.append('--add "{}"'.format(liaison))
gerrit.append('{}'.format(review))
logger.debug(' '.join(gerrit))
subprocess.call(gerrit)
if __name__ == '__main__':
debug, username, review = parse_args()
level = logging.INFO
if debug:
level = logging.DEBUG
logging.basicConfig(
level=level,
format='%(levelname)s: %(message)s')
liaisons = get_liaisons()
add_reviewers(debug, username, liaisons, review)
print("Added {} reviewers to {}".format(len(liaisons), review))