<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Wed, May 29, 2013 at 6:33 AM, Russell Bryant <span dir="ltr"><<a href="mailto:rbryant@redhat.com" target="_blank">rbryant@redhat.com</a>></span> wrote:</div>
<div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
However, I couldn't resist scratching my own itch, so at least for now I<br>
scripted this.  It's openreviews.py here:<br>
<br>
    <a href="https://github.com/russellb/openstack-stats" target="_blank">https://github.com/russellb/openstack-stats</a><br>
<br></blockquote><div><br></div><div style>I had a bit of play around with the code and added displaying the median waiting time</div><div style>and 5 longest waiting reviews (I've sent a pull request)</div><div style>
<br></div><div style><div>Projects: [u'nova']</div><div>Total Open Reviews: 180</div><div>Waiting on Submitter: 74</div><div>Waiting on Reviewer: 106</div><div> --> Average wait time: 5 days, 9 hours, 54 minutes</div>
<div> --> Median wait time: 4 days, 12 hours, 12 minutes</div><div> --> Longest waiting reviews:</div><div>    --> 19 days, 8 hours, 53 minutes <a href="https://review.openstack.org/28762">https://review.openstack.org/28762</a> </div>
<div>          (Fix variable referenced before assginment in vmwareapi code.)</div><div>    --> 22 days, 20 hours, 50 minutes <a href="https://review.openstack.org/28311">https://review.openstack.org/28311</a> </div><div>
          (Update hypervisor_hostname after live migration)</div><div>    --> 24 days, 9 hours, 2 minutes <a href="https://review.openstack.org/28239">https://review.openstack.org/28239</a> </div><div>          (vmwareapi: Add supported_instances to host state)</div>
<div>    --> 27 days, 17 hours, 19 minutes <a href="https://review.openstack.org/23207">https://review.openstack.org/23207</a> </div><div>          (Shrink size of aggregate_metadata_get_by_host sql query)</div><div>    --> 29 days, 1 hours, 43 minutes <a href="https://review.openstack.org/27803">https://review.openstack.org/27803</a> </div>
<div>          (libvirt: Tolerate existing vm(s) with cdrom(s))</div><div><br></div><div style>Also an option to exclude changesets aimed at stable branches (which seem to hang around</div><div style>the longest):</div><div style>
<br></div><div style><div>$ ./openreviews.py -u cyeoh-0  -n</div><div>Projects: [u'nova']</div><div>Total Open Reviews: 159</div><div>Waiting on Submitter: 70</div><div>Waiting on Reviewer: 89</div><div> --> Average wait time: 3 days, 20 hours, 43 minutes</div>
<div> --> Median wait time: 2 days, 4 hours, 17 minutes</div><div> --> Longest waiting reviews:</div><div>    --> 12 days, 12 hours, 46 minutes <a href="https://review.openstack.org/29320">https://review.openstack.org/29320</a> </div>
<div>          (Fix dangling LUN issue under load with multipath)</div><div>    --> 12 days, 19 hours, 58 minutes <a href="https://review.openstack.org/29396">https://review.openstack.org/29396</a> </div><div>          (Added unit tests for vmware cluster driver)</div>
<div>    --> 15 days, 0 hours, 5 minutes <a href="https://review.openstack.org/29077">https://review.openstack.org/29077</a> </div><div>          (Extract live-migration scheduler logic from the scheduler driver)</div>
<div>    --> 15 days, 15 hours, 12 minutes <a href="https://review.openstack.org/29005">https://review.openstack.org/29005</a> </div><div>          (Set resized instance back to original vm_state)</div><div>    --> 16 days, 8 hours, 35 minutes <a href="https://review.openstack.org/28921">https://review.openstack.org/28921</a> </div>
<div>          (Ports image_metaadata API to v3 API)</div><div><br></div><div style>There probably should be an option to exclude WIPs but that data doesn't come back through</div><div style>the gerrit query.</div><div style>
<br></div><div style>There does appear to be a problem with some of the data returned from the gerrit query now however. For example,</div><div style>looking at  <a href="https://review.openstack.org/29005">https://review.openstack.org/29005</a> sometimes the createdOn data for a patchset is just plain wrong and</div>
<div style>reverts to the original creation date which makes it look like the it hasn't been reviewed for a long time when it has.</div><div style>I had a look at the origin json data returned from the query and it is incorrect so I guess there's a gerrit query bug.</div>
<div style><br></div><div style><div>{   'age': 1347593,</div><div>    u'branch': u'master',</div><div>    u'createdOn': 1368478580,</div><div>    u'id': u'I19fa61d467edd5a7572040d084824972569ef65a',</div>
<div>    u'lastUpdated': 1369825893,</div><div>    u'number': u'29005',</div><div>    u'open': True,</div><div>    u'owner': {   u'email': <a href="mailto:u%27mriedem@us.ibm.com">u'mriedem@us.ibm.com</a>',</div>
<div>                  u'name': u'Matt Riedemann',</div><div>                  u'username': u'mriedem'},</div><div>    u'patchSets': [   {   u'createdOn': 1368478580,</div><div>
                          u'number': u'1',</div><div>                          u'ref': u'refs/changes/05/29005/1',</div><div>                          u'revision': u'f48bf4436c37286bf02984b8d2f02a53d13ff3f1',</div>
<div>                          u'uploader': {   u'email': <a href="mailto:u%27mriedem@us.ibm.com">u'mriedem@us.ibm.com</a>',</div><div>                                           u'name': u'Matt Riedemann',</div>
<div>                                           u'username': u'mriedem'}},</div><div>                      {   u'createdOn': 1368478887,</div><div>                          u'number': u'2',</div>
<div>                          u'ref': u'refs/changes/05/29005/2',</div><div>                          u'revision': u'fdac01fc273326f1af0bf229b288cda21341dbf4',</div><div>                          u'uploader': {   u'email': <a href="mailto:u%27mriedem@us.ibm.com">u'mriedem@us.ibm.com</a>',</div>
<div>                                           u'name': u'Matt Riedemann',</div><div>                                           u'username': u'mriedem'}},</div><div>                      {   u'approvals': [   {   u'by': {   u'name': u'Jenkins',</div>
<div>                                                           u'username': u'jenkins'},</div><div>                                                u'description': u'Verified',</div><div>                                                u'grantedOn': 1368482163,</div>
<div>                                                u'type': u'VRIF',</div><div>                                                u'value': u'1'},</div><div>                                            {   u'by': {   u'name': u'SmokeStack',</div>
<div>                                                           u'username': u'smokestack'},</div><div>                                                u'description': u'Verified',</div><div>
                                                u'grantedOn': 1368481167,</div><div>                                                u'type': u'VRIF',</div><div>                                                u'value': u'1'},</div>
<div>                                            {   u'by': {   u'email': <a href="mailto:u%27dms@danplanet.com">u'dms@danplanet.com</a>',</div><div>                                                           u'name': u'Dan Smith',</div>
<div>                                                           u'username': u'danms'},</div><div>                                                u'description': u'Code Review',</div><div>                                                u'grantedOn': 1368496486,</div>
<div>                                                u'type': u'CRVW',</div><div>                                                u'value': u'-1'}],</div><div style><snip></div><div>                       {   u'approvals': [   {   u'by': {   u'name': u'Jenkins',</div>
<div>                                                           u'username': u'jenkins'},</div><div>                                                u'description': u'Verified',</div><div>                                                u'grantedOn': 1369450189,</div>
<div>                                                u'type': u'VRIF',</div><div>                                                u'value': u'1'},</div><div>                                            {   u'by': {   u'email': <a href="mailto:u%27john@johngarbutt.com">u'john@johngarbutt.com</a>',</div>
<div>                                                           u'name': u'John Garbutt',</div><div>                                                           u'username': u'johngarbutt'},</div>
<div>                                                u'description': u'Code Review',</div><div>                                                u'grantedOn': 1369825893,</div><div>                                                u'type': u'CRVW',</div>
<div>                                                u'value': u'1'},</div><div>                                            {   u'by': {   u'name': u'SmokeStack',</div><div>                                                           u'username': u'smokestack'},</div>
<div>                                                u'description': u'Verified',</div><div>                                                u'grantedOn': 1369448293,</div><div>                                                u'type': u'VRIF',</div>
<div>                                                u'value': u'1'},</div><div>                                            {   u'by': {   u'email': <a href="mailto:u%27dms@danplanet.com">u'dms@danplanet.com</a>',</div>
<div>                                                           u'name': u'Dan Smith',</div><div>                                                           u'username': u'danms'},</div><div>
                                                u'description': u'Code Review',</div><div>                                                u'grantedOn': 1369501382,</div><div>                                                u'type': u'CRVW',</div>
<div>                                                u'value': u'2'}],</div><div>                          u'createdOn': 1368478580,</div><div>                          u'number': u'17',</div>
<div>                          u'ref': u'refs/changes/05/29005/17',</div><div>                          u'revision': u'ff99601a18f89c92cda5974cd5592cd6e2762c93',</div><div>                          u'uploader': {   u'email': <a href="mailto:u%27mriedem@us.ibm.com">u'mriedem@us.ibm.com</a>',</div>
<div>                                           u'name': u'Matt Riedemann',</div><div>                                           u'username': u'mriedem'}}],</div><div>    u'project': u'openstack/nova',</div>
<div>    u'sortKey': u'002562bf0000714d',</div><div>    u'status': u'NEW',</div><div>    u'subject': u'Set resized instance back to original vm_state',</div><div>    u'topic': u'bug/1177811',</div>
<div>    u'url': u'<a href="https://review.openstack.org/29005">https://review.openstack.org/29005</a>'}</div></div><div style><br></div></div></div></div></div></div>