)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17096,"name":"Aditi Rajagopal","email":"arajagopal@us.ibm.com","username":"aditirajagopal"},"change_message_id":"a4351669d4bce005c4730f89dfecf235ae929248","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     LIU Yulong \u003cliuyulong@letv.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-06 09:52:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add method to retrieve loadbalancer stats"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add loadbalancer statistics method to python-neutronclient."},{"line_number":10,"context_line":"Command: neutron lbaas-loadbalancer-stats lbaas_id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_660889da","line":7,"updated":"2015-09-08 18:30:44.000000000","message":"If you are planning on taking Vikram\u0027s advice to change \"retrieve\" to \"show,\" make sure you make the change here too. \n\nAlso, it would be nice if you could include 1-2 sentences on why this would be a useful feature to have. Commit messages last forever, so adding such details are beneficial in the long run.","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"42ee86d8cc1314cc3f11983266b168ce072f8b7c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     LIU Yulong \u003cliuyulong@letv.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-06 09:52:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add method to retrieve loadbalancer stats"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add loadbalancer statistics method to python-neutronclient."},{"line_number":10,"context_line":"Command: neutron lbaas-loadbalancer-stats lbaas_id"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a29b11f_c18eb5cf","line":7,"in_reply_to":"da20952f_660889da","updated":"2015-10-21 05:29:34.000000000","message":"+1 for the fact that the description can be increased a bit more.","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a2853c06cb808504e39b06c4d89659adac5fb91c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Command: neutron lbaas-loadbalancer-stats lbaas_id"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I7ef1e93debae9e3332a20cb60d5995d39e8b4719"},{"line_number":15,"context_line":"Implements: blueprint lbaas-v2-loadbalancer-stats"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ba8a016a_434af6ad","line":15,"updated":"2015-11-17 15:37:12.000000000","message":"Does this blueprint need to be approved first?","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"}],"neutronclient/neutron/v2_0/lb/v2/loadbalancer.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"85edaa600129a42c08f3196f3f43399c836ca616","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.log.debug(\u0027run(%s)\u0027 % parsed_args)"},{"line_number":103,"context_line":"        neutron_client \u003d self.get_client()"},{"line_number":104,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":105,"context_line":"        loadBalancer_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":106,"context_line":"            self.get_client(), \u0027loadbalancer\u0027, parsed_args.id)"},{"line_number":107,"context_line":"        params \u003d {}"},{"line_number":108,"context_line":"        if parsed_args.fields:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_bbdf2bd5","line":105,"updated":"2015-06-23 13:34:51.000000000","message":"nit: We don\u0027t use camel case as variable name. Could you consider using: load_balancer_id, loadbalancer_id or lb_id?","commit_id":"1230f8bc4e9480403fea4af984803df04c355c84"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"b3af57bf7e1c92d1a68be1c1ba1b85a40fcaf7e0","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.log.debug(\u0027run(%s)\u0027 % parsed_args)"},{"line_number":103,"context_line":"        neutron_client \u003d self.get_client()"},{"line_number":104,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":105,"context_line":"        loadBalancer_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":106,"context_line":"            self.get_client(), \u0027loadbalancer\u0027, parsed_args.id)"},{"line_number":107,"context_line":"        params \u003d {}"},{"line_number":108,"context_line":"        if parsed_args.fields:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_31731e50","line":105,"in_reply_to":"fa32b979_bbdf2bd5","updated":"2015-06-24 01:56:08.000000000","message":"Done","commit_id":"1230f8bc4e9480403fea4af984803df04c355c84"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"5e0bcbd1d3b925b69c622eef2b328792c8a88391","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    allow_names \u003d True"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class RetrieveLoadBalancerStats(neutronV20.ShowCommand):"},{"line_number":97,"context_line":"    \"\"\"Retrieve stats for a given loadbalancer.\"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    resource \u003d \u0027loadbalancer\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_96bd06b3","line":96,"updated":"2015-09-07 12:07:55.000000000","message":"Rename it as \"ShowLoadBalancerStats\"","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"5e0bcbd1d3b925b69c622eef2b328792c8a88391","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class RetrieveLoadBalancerStats(neutronV20.ShowCommand):"},{"line_number":97,"context_line":"    \"\"\"Retrieve stats for a given loadbalancer.\"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    resource \u003d \u0027loadbalancer\u0027"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_16e816b2","line":97,"updated":"2015-09-07 12:07:55.000000000","message":"Plz change \u0027Retrieve\u0027 to \u0027Show\u0027","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7bc9114f0c20c6e79cc4586d0d3ffd7c92cd8aca","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.format_output_data(data)"},{"line_number":110,"context_line":"        stats \u003d data[\u0027stats\u0027]"},{"line_number":111,"context_line":"        if \u0027stats\u0027 in data:"},{"line_number":112,"context_line":"            return zip(*sorted(six.iteritems(stats)))"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_a3c7dd96","line":112,"updated":"2015-10-21 18:25:32.000000000","message":"I\u0027m having a little trouble figuring out what the return value is expected to look like.  A comment would help the reader know what the overall goal of this zip(sorted(items())) call is supposed to be.\n\nBTW, for python3 compatibility, you should wrap the whole thing with list() unless you\u0027re sure the callers won\u0027t be able to tell the difference between a list and \"zip object\" which is only iterated one time.\n\n  return list(zip(*sorted(six.iteritems(stats))))\n\nSpeaking of python3, Is there a good justification for using six.iteritems here?  IMO, there isn\u0027t.  The call to sorted dominates the algorithm complexity in CPU time and allocates the entire list anyway.  You\u0027re optimizing constant factors here.  Then, add the zip on top ...  The insignificant savings you get from iteritems is drowned enough by the dominating factors in this line that it is just cluttering up the code to even bother importing six.\n\n  # Comment here telling what the return value is expected to look like\n  return list(zip(*sorted(stats.items())))\n\nIf you are really concerned about the extra list allocation (which you shouldn\u0027t be) then the follow code saves it:\n\n  items \u003d list(stats.items())\n  items.sort()\n  return zip(*items)\n\nDon\u0027t do this unless you have performance numbers showing that this matters to the end-user.  And, don\u0027t do it in this patch even if you do.\n\nWe need to stop using six for this.  It doesn\u0027t make a significant difference in this case and it almost never makes a difference.  It is just clutter.  Also, the openstack guidelines talk about thsi [1]\n\n [1] https://wiki.openstack.org/wiki/Python3","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c796960c8a7e39d9e7271ddaf3bc814939dbe6c0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.format_output_data(data)"},{"line_number":110,"context_line":"        stats \u003d data[\u0027stats\u0027]"},{"line_number":111,"context_line":"        if \u0027stats\u0027 in data:"},{"line_number":112,"context_line":"            return zip(*sorted(six.iteritems(stats)))"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_3c63581c","line":112,"in_reply_to":"3a29b11f_2b6ab4ee","updated":"2015-11-14 21:01:38.000000000","message":"Sorry for late. I tend to agree with Carl.\n\n- It is better to add a comment on what the logic does. I agree.\n- on the second point, I am not fully confident, but it is worth visited.\n- on the third point of iteritems, I don\u0027t think we need to iteritmes and it seems items() enough. items() generates a new list but I don\u0027t think it decreases the performance significantly.","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"8dee2d17bbc42f04e54a10a3b3993cda86a4339e","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.format_output_data(data)"},{"line_number":110,"context_line":"        stats \u003d data[\u0027stats\u0027]"},{"line_number":111,"context_line":"        if \u0027stats\u0027 in data:"},{"line_number":112,"context_line":"            return zip(*sorted(six.iteritems(stats)))"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_2b6ab4ee","line":112,"in_reply_to":"3a29b11f_a3c7dd96","updated":"2015-10-22 02:49:57.000000000","message":"Thank you Carl, I think the code here is just fine, and this is a long story, please see commit here: https://review.openstack.org/#/c/107029/.  And some info said here https://wiki.openstack.org/wiki/Python3#Port_Python_2_code_to_Python_3:\n\"The Six: Python 2 and 3 Compatibility Library helps to write code working on both versions. \"","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cd9d6cd3da48344b0489707dda776e45cd4b0364","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.format_output_data(data)"},{"line_number":110,"context_line":"        stats \u003d data[\u0027stats\u0027]"},{"line_number":111,"context_line":"        if \u0027stats\u0027 in data:"},{"line_number":112,"context_line":"            return zip(*sorted(six.iteritems(stats)))"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_14989f1a","line":112,"in_reply_to":"da85f559_3c63581c","updated":"2015-11-16 03:29:23.000000000","message":"OK, done, maybe after this patch we could remove the inconsistent code from lb v1 pool, quota etc.","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7bc9114f0c20c6e79cc4586d0d3ffd7c92cd8aca","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        stats \u003d data[\u0027stats\u0027]"},{"line_number":111,"context_line":"        if \u0027stats\u0027 in data:"},{"line_number":112,"context_line":"            return zip(*sorted(six.iteritems(stats)))"},{"line_number":113,"context_line":"        else:"},{"line_number":114,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_88ad2086","line":113,"updated":"2015-10-21 18:25:32.000000000","message":"nit:  This is not necessary at the end of a method:\n\n  else:\n      return None\n\nThat\u0027s what happens by default.","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a2853c06cb808504e39b06c4d89659adac5fb91c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        neutron_client \u003d self.get_client()"},{"line_number":98,"context_line":"        neutron_client.format \u003d parsed_args.request_format"},{"line_number":99,"context_line":"        loadbalancer_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":100,"context_line":"            self.get_client(), \u0027loadbalancer\u0027, parsed_args.id)"},{"line_number":101,"context_line":"        params \u003d {}"},{"line_number":102,"context_line":"        if parsed_args.fields:"},{"line_number":103,"context_line":"            params \u003d {\u0027fields\u0027: parsed_args.fields}"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_a3aba288","line":100,"updated":"2015-11-17 15:37:12.000000000","message":"Can neutron_client be used here instead of getting the client again?","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a2853c06cb808504e39b06c4d89659adac5fb91c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            # +--------------------+-------+"},{"line_number":112,"context_line":"            # | Field              | Value |"},{"line_number":113,"context_line":"            # +--------------------+-------+"},{"line_number":114,"context_line":"            # | filed1             | value1|"},{"line_number":115,"context_line":"            # | filed2             | value2|"},{"line_number":116,"context_line":"            # | filed3             | value3|"},{"line_number":117,"context_line":"            # | ...                | ...   |"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_83e3fe04","line":114,"updated":"2015-11-17 15:37:12.000000000","message":"typo \u0027filed1\u0027 should be \u0027field1\u0027...  This typo is repeated throughout the comment.","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"fc0a619c9ec849dd67bed6f1207524d7266c67f2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            # +--------------------+-------+"},{"line_number":112,"context_line":"            # | Field              | Value |"},{"line_number":113,"context_line":"            # +--------------------+-------+"},{"line_number":114,"context_line":"            # | filed1             | value1|"},{"line_number":115,"context_line":"            # | filed2             | value2|"},{"line_number":116,"context_line":"            # | filed3             | value3|"},{"line_number":117,"context_line":"            # | ...                | ...   |"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_090fc888","line":114,"in_reply_to":"ba8a016a_83e3fe04","updated":"2015-11-19 10:02:23.000000000","message":"Done","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"}],"neutronclient/shell.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"42ee86d8cc1314cc3f11983266b168ce072f8b7c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \u0027lbaas-loadbalancer-create\u0027: lbaas_loadbalancer.CreateLoadBalancer,"},{"line_number":206,"context_line":"    \u0027lbaas-loadbalancer-update\u0027: lbaas_loadbalancer.UpdateLoadBalancer,"},{"line_number":207,"context_line":"    \u0027lbaas-loadbalancer-delete\u0027: lbaas_loadbalancer.DeleteLoadBalancer,"},{"line_number":208,"context_line":"    \u0027lbaas-loadbalancer-stats\u0027: lbaas_loadbalancer.RetrieveLoadBalancerStats,"},{"line_number":209,"context_line":"    \u0027lbaas-listener-list\u0027: lbaas_listener.ListListener,"},{"line_number":210,"context_line":"    \u0027lbaas-listener-show\u0027: lbaas_listener.ShowListener,"},{"line_number":211,"context_line":"    \u0027lbaas-listener-create\u0027: lbaas_listener.CreateListener,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a29b11f_417065dc","line":208,"updated":"2015-10-21 05:29:34.000000000","message":"If you are going to change Retrieve to show, make sure to change here as well. :)","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"3249124340b91806648d0e082f062d37d985fc26","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    \u0027lbaas-loadbalancer-create\u0027: lbaas_loadbalancer.CreateLoadBalancer,"},{"line_number":204,"context_line":"    \u0027lbaas-loadbalancer-update\u0027: lbaas_loadbalancer.UpdateLoadBalancer,"},{"line_number":205,"context_line":"    \u0027lbaas-loadbalancer-delete\u0027: lbaas_loadbalancer.DeleteLoadBalancer,"},{"line_number":206,"context_line":"    \u0027lbaas-loadbalancer-stats\u0027: lbaas_loadbalancer.RetrieveLoadBalancerStats,"},{"line_number":207,"context_line":"    \u0027lbaas-listener-list\u0027: lbaas_listener.ListListener,"},{"line_number":208,"context_line":"    \u0027lbaas-listener-show\u0027: lbaas_listener.ShowListener,"},{"line_number":209,"context_line":"    \u0027lbaas-listener-create\u0027: lbaas_listener.CreateListener,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_93e5370a","line":206,"updated":"2015-12-12 06:58:10.000000000","message":"IMO, \"lbaas-loadbalancer-statistics\" sounds better","commit_id":"778f01db55cfe3587818e64d5ac433f12af17f3d"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a218cf5856385905fd8e7255127d527fb62eb5ed","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    \u0027lbaas-loadbalancer-create\u0027: lbaas_loadbalancer.CreateLoadBalancer,"},{"line_number":204,"context_line":"    \u0027lbaas-loadbalancer-update\u0027: lbaas_loadbalancer.UpdateLoadBalancer,"},{"line_number":205,"context_line":"    \u0027lbaas-loadbalancer-delete\u0027: lbaas_loadbalancer.DeleteLoadBalancer,"},{"line_number":206,"context_line":"    \u0027lbaas-loadbalancer-stats\u0027: lbaas_loadbalancer.RetrieveLoadBalancerStats,"},{"line_number":207,"context_line":"    \u0027lbaas-listener-list\u0027: lbaas_listener.ListListener,"},{"line_number":208,"context_line":"    \u0027lbaas-listener-show\u0027: lbaas_listener.ShowListener,"},{"line_number":209,"context_line":"    \u0027lbaas-listener-create\u0027: lbaas_listener.CreateListener,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_aa621f3c","line":206,"in_reply_to":"7a740942_93e5370a","updated":"2015-12-14 02:14:20.000000000","message":"Thank you, it\u0027s better to be consistent with lb v1 pool statistics command \"lb-pool-stats\". What do you think?","commit_id":"778f01db55cfe3587818e64d5ac433f12af17f3d"}],"neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"7bc9114f0c20c6e79cc4586d0d3ffd7c92cd8aca","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from mox3 import mox"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient.neutron.v2_0.lb.v2 import loadbalancer as lb"},{"line_number":22,"context_line":"from neutronclient.tests.unit import test_cli20"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_00f1e000","line":19,"updated":"2015-10-21 18:25:32.000000000","message":"nit:  Should we be using more mox?  I thought we preferred mock.  But, I don\u0027t know I see mox everywhere in this repo.","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c796960c8a7e39d9e7271ddaf3bc814939dbe6c0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sys"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from mox3 import mox"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutronclient.neutron.v2_0.lb.v2 import loadbalancer as lb"},{"line_number":22,"context_line":"from neutronclient.tests.unit import test_cli20"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_bc542854","line":19,"in_reply_to":"3a29b11f_00f1e000","updated":"2015-11-14 21:01:38.000000000","message":"neutronclient repo uses mox everywhere. I am fine with mock for a new test module. I don\u0027t think it is helpful to use both mox and mock in a single module.","commit_id":"0812fcf5244b3286d2d6be34836405da261e025b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a2853c06cb808504e39b06c4d89659adac5fb91c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.mox.VerifyAll()"},{"line_number":163,"context_line":"        self.mox.UnsetStubs()"},{"line_number":164,"context_line":"        _str \u003d self.fake_stdout.make_string()"},{"line_number":165,"context_line":"        self.assertIn(\u0027bytes_in\u0027, _str)"},{"line_number":166,"context_line":"        self.assertIn(\u0027bytes_out\u0027, _str)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_03e14ed0","line":165,"updated":"2015-11-17 15:37:12.000000000","message":"Verify the value as well as the field name?","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a2853c06cb808504e39b06c4d89659adac5fb91c","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        self.mox.UnsetStubs()"},{"line_number":164,"context_line":"        _str \u003d self.fake_stdout.make_string()"},{"line_number":165,"context_line":"        self.assertIn(\u0027bytes_in\u0027, _str)"},{"line_number":166,"context_line":"        self.assertIn(\u0027bytes_out\u0027, _str)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class CLITestV20LbLoadBalancerXML(CLITestV20LbLoadBalancerJSON):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_03086e90","line":166,"updated":"2015-11-17 15:37:12.000000000","message":"Verify the value as well as the field name?","commit_id":"3c4ba924ad945f44cf567e78ffb962ffe91c5da0"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"9ae3ab18627513e5fd7fddc59c9e428fa9f6b27f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.mox.VerifyAll()"},{"line_number":163,"context_line":"        self.mox.UnsetStubs()"},{"line_number":164,"context_line":"        _str \u003d self.fake_stdout.make_string()"},{"line_number":165,"context_line":"        self.assertIn(\u0027bytes_in\u0027, _str)"},{"line_number":166,"context_line":"        self.assertIn(\u0027bytes_out\u0027, _str)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a8ffd7b_6cf9724d","line":165,"updated":"2015-11-24 14:22:24.000000000","message":"If you need to update the patch set, consider verifying that the value is sent to stdout along with the field name.","commit_id":"778f01db55cfe3587818e64d5ac433f12af17f3d"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a218cf5856385905fd8e7255127d527fb62eb5ed","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.mox.VerifyAll()"},{"line_number":163,"context_line":"        self.mox.UnsetStubs()"},{"line_number":164,"context_line":"        _str \u003d self.fake_stdout.make_string()"},{"line_number":165,"context_line":"        self.assertIn(\u0027bytes_in\u0027, _str)"},{"line_number":166,"context_line":"        self.assertIn(\u0027bytes_out\u0027, _str)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_0a1a53c6","line":165,"in_reply_to":"9a8ffd7b_6cf9724d","updated":"2015-12-14 02:14:20.000000000","message":"Done","commit_id":"778f01db55cfe3587818e64d5ac433f12af17f3d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a57b76fe0406a74bfc7c25a6cb759a805c1c7c1b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_retrieve_loadbalancer_stats(self):"},{"line_number":136,"context_line":"        \"\"\"lbaas-loadbalancer-stats test_id.\"\"\""},{"line_number":137,"context_line":"        resource \u003d \u0027loadbalancer\u0027"},{"line_number":138,"context_line":"        cmd \u003d lb.RetrieveLoadBalancerStats(test_cli20.MyApp(sys.stdout), None)"},{"line_number":139,"context_line":"        my_id \u003d self.test_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a7e1126_e66714e7","line":136,"updated":"2015-12-20 23:14:56.000000000","message":"We now use a normal comment instead of docstring for a description of a test.","commit_id":"c8daa8bc7b8852add53b40983bbdf0d87fad14fb"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"b7a47f7791d795f11ff4fdb86a24153925f24266","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                                   cmd_resource\u003dcmd_resource)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_retrieve_loadbalancer_stats(self):"},{"line_number":136,"context_line":"        \"\"\"lbaas-loadbalancer-stats test_id.\"\"\""},{"line_number":137,"context_line":"        resource \u003d \u0027loadbalancer\u0027"},{"line_number":138,"context_line":"        cmd \u003d lb.RetrieveLoadBalancerStats(test_cli20.MyApp(sys.stdout), None)"},{"line_number":139,"context_line":"        my_id \u003d self.test_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a7e1126_61da2e4e","line":136,"in_reply_to":"3a7e1126_e66714e7","updated":"2015-12-21 02:36:51.000000000","message":"Done","commit_id":"c8daa8bc7b8852add53b40983bbdf0d87fad14fb"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"5e0bcbd1d3b925b69c622eef2b328792c8a88391","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    lbaas_loadbalancers_path \u003d \"/lbaas/loadbalancers\""},{"line_number":368,"context_line":"    lbaas_loadbalancer_path \u003d \"/lbaas/loadbalancers/%s\""},{"line_number":369,"context_line":"    lbaas_loadbalancer_path_stats \u003d \"/lbaas/loadbalancers/%s/stats\""},{"line_number":370,"context_line":"    lbaas_listeners_path \u003d \"/lbaas/listeners\""},{"line_number":371,"context_line":"    lbaas_listener_path \u003d \"/lbaas/listeners/%s\""},{"line_number":372,"context_line":"    lbaas_pools_path \u003d \"/lbaas/pools\""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_f6ad6284","line":369,"updated":"2015-09-07 12:07:55.000000000","message":"plz rename it as \"lbaas_loadbalancer_stats_path\" for uniformity.","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"5e0bcbd1d3b925b69c622eef2b328792c8a88391","unresolved":false,"context_lines":[{"line_number":937,"context_line":"                           (lbaas_loadbalancer))"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"    @APIParamsCall"},{"line_number":940,"context_line":"    def retrieve_loadbalancer_stats(self, loadbalancer, **_params):"},{"line_number":941,"context_line":"        \"\"\"Retrieves stats for a certain load balancer.\"\"\""},{"line_number":942,"context_line":"        return self.get(self.lbaas_loadbalancer_path_stats % (loadbalancer),"},{"line_number":943,"context_line":"                        params\u003d_params)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_96a666a9","line":940,"updated":"2015-09-07 12:07:55.000000000","message":"Can we rename this as \"show_loadbalancer_stats\"","commit_id":"9b643d86ed4d9a4ef44181cad050819108f222a3"}]}
