-
Notifications
You must be signed in to change notification settings - Fork 16
Gerrymander provides a client for interacting with & querying the Gerrit code review system
License
berrange/gerrymander
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Gerrymander
===========
The Gerrymander package provides a set of Python2 / Python3 compatible
modules for interacting with Gerrit, along with a set of command line
programs for various useful operations.
License
=======
The package is distributed under the terms of the Apache License,
version 2.0. See the LICENSE file for full copying terms.
Usage instructions
==================
Server configuration
--------------------
The out of the box config assumes that you have a $HOME/.ssh/config
file configured with a server alias called "review" that points to
your gerrit instance. For example the following config is possible
Host review
Hostname review.openstack.org
User berrange
Port 29418
Alternatively, create a configuration file $HOME/.gerrymander
containing
[server]
hostname=review.openstack.org
username=berrange
port=29418
Command listing
---------------
To get a list of all available commands just invoke the program
with the '-h' argument
$ gerrymander
usage: gerrymander [-h] [-c CONFIG] [-d] [-q]
{watch,todo-noones,todo-anyones,todo-mine,todo-others,patchreviewstats,changes}
...
Gerrymander client
positional arguments:
{watch,todo-noones,todo-anyones,todo-mine,todo-others,patchreviewstats,changes}
watch Watch incoming changes
todo-noones List of changes no one has looked at yet
todo-anyones List of changes anyone has looked at
todo-mine List of changes I've looked at before
todo-others List of changes I've not looked at before
patchreviewstats Statistics on patch review approvals
changes Query project changes
...snip...
Command invocation
------------------
To use the 'changes' command to see all open changes by a particular user
$ gerrymander changes --project openstack/nova --owner russellb --status open
+--------+------------------------------------+----------+-----------------------------------+---------+---------+--------------+
| Status | URL | Owner | Subject | Created | Updated | Approvals |
+--------+------------------------------------+----------+-----------------------------------+---------+---------+--------------+
| NEW | https://review.openstack.org/84254 | russellb | Drop support for conductor 1.x... | 14 days | 4 hours | v=-1,1,1 c=1 |
| NEW | https://review.openstack.org/84430 | russellb | Drop support for scheduler 2.x... | 14 days | 4 hours | v=-1,1,1 c=1 |
| NEW | https://review.openstack.org/86982 | russellb | ec2: remove db.instance_system... | 3 days | 4 hours | v=1,1,1 c=1 |
| NEW | https://review.openstack.org/86985 | russellb | ec2: get services using Servic... | 3 days | 4 hours | v=1,1,1 c=1 |
| NEW | https://review.openstack.org/86999 | russellb | ec2: use SecurityGroup object | 3 days | 4 hours | v=1,1,1 c=1 |
| NEW | https://review.openstack.org/87018 | russellb | ec2: use BlockDeviceMappingLis... | 3 days | 4 hours | v=1,1,1 c=1 |
| NEW | https://review.openstack.org/87048 | russellb | compute.rpcapi: remove havana ... | 3 days | 3 days | v=-1,1,1 |
+--------+------------------------------------+----------+-----------------------------------+---------+---------+--------------+
For this command, the set of columns displayed can be customized via the '--field' argument:
$ gerrymander changes --project openstack/nova --owner russellb --status open --field url --field subject:50 --field lastUpdated --field approvals
+------------------------------------+-----------------------------------------------+---------+--------------+
| URL | Subject | Updated | Approvals |
+------------------------------------+-----------------------------------------------+---------+--------------+
| https://review.openstack.org/84254 | Drop support for conductor 1.x rpc interface | 4 hours | v=-1,1,1 c=1 |
| https://review.openstack.org/84430 | Drop support for scheduler 2.x rpc interface | 4 hours | v=-1,1,1 c=1 |
| https://review.openstack.org/86982 | ec2: remove db.instance_system_metadata usage | 4 hours | v=1,1,1 c=1 |
| https://review.openstack.org/86985 | ec2: get services using ServiceList object | 4 hours | v=1,1,1 c=1 |
| https://review.openstack.org/86999 | ec2: use SecurityGroup object | 4 hours | v=1,1,1 c=1 |
| https://review.openstack.org/87018 | ec2: use BlockDeviceMappingList object | 4 hours | v=1,1,1 c=1 |
| https://review.openstack.org/87048 | compute.rpcapi: remove havana compat | 3 days | v=-1,1,1 |
+------------------------------------+-----------------------------------------------+---------+--------------+
Default arguments
-----------------
Any command line argument can also be set in the configuration file. For example, given
a command called "changes", a config file section called "command-changes" can be used
to set default options. To make the above choice of fields permanent update the config
file to contain
[command-changes]
field = url, subject:50, lastUpdated, approvals
Custom command aliases
----------------------
Imagine that there are a couple of different sets of arguments that are commonly used
with a command. For example, in order to repeat that query above for 2 different users.
It is possible to define new commands that are aliases for existing commands. So to
take the above example and create commands 'russell-nova-changes' & 'daniel-nova-changes'
update the config file to contain
[commands]
aliases = russell-nova-changes, daniel-nova-changes
[alias-russell-nova-changes]
basecmd=changes
help=Russell's open changes to nova
[alias-daniel-nova-changes]
basecmd=changes
help=Daniel's open changes to nova
[command-russell-nova-changes]
project=openstack/nova
status=open
owner=russellb
field = url, subject:50, lastUpdated, approvals
[command-daniel-nova-changes]
project=openstack/nova
status=open
owner=berrange
field = url, subject:50, lastUpdated, approvals
Project groups
--------------
It is common to have multiple different projects defined in gerrit
which are all related to one team of people. There are also commonly
set teams of people working on projects and often automated robot
users to be filtered from some reports. It is possible to define
orgnaization teams and project groups in the configuration file,
and use those in place of project names with many commands.
For example, to define an organization with two projects, each with
a "core" teamm of members and some robot accounts
[organization]
teams = core
groups = nova, neutron
bots=jenkins, turbo-hipster
[group-nova]
projects = openstack/nova, openstack/python-novaclient
team-core = danms, russellb, berrange
[group-neutron]
projects = openstack/neutron, openstack/python-neutronclient
team-core = arosen, amotoki, danwent
Now these groups can be referenced in commands
$ gerrymander changes -g nova --status open
+------------------------------------+-------------------------------------------------------+----------+------------------------------+
| URL | Subject | Updated | Approvals |
+------------------------------------+-------------------------------------------------------+----------+------------------------------+
| https://review.openstack.org/15104 | Nova option to delete the quota for an specific re... | 5 days | v=1,1 c=2,-2,1,1 |
| https://review.openstack.org/38158 | Add Pcloud support (whole host allocation) | 171 days | v=1 |
| https://review.openstack.org/43822 | Get quota and usage from neutron for limit APIs | 13 days | v=1,1,1 c=1 |
| https://review.openstack.org/44674 | Adding Read-Only volume attaching support to Nova ... | 221 days | v=1 |
| https://review.openstack.org/51132 | glance plugin should not upload on unauthorised | 5 days | v=-1,1 c=1,-1,-1,1,-1 |
| https://review.openstack.org/52687 | VMware: create utility functions | 7 hours | v=1,1,1 c=1,1,1 |
| https://review.openstack.org/53746 | Fix CPU compare check bug in live migration | 10 hours | v=1,1,1 c=-1 |
| https://review.openstack.org/56812 | XenAPI: disable/enable host will be failed when us... | 32 days | v=1,1 |
...snip...
Source repository
=================
The master repository for the codebase is
https://github.com/berrange/gerrymander
File bug reports in github, or send pull requests for features.
-- End
About
Gerrymander provides a client for interacting with & querying the Gerrit code review system
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published