)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2bb41752fe7ffa032a4d4fc99577cb58f3a9f03e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-12-14 15:55:43 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"nova limits ERROR (Exception): Field names must be unique"},{"line_number":8,"context_line":"This happens when \u0027Others\u0027 field is occuring more than once which is not handled in code causing multiple columns having same name."},{"line_number":9,"context_line":"Which throws above exception and does not pretty prints absolute limit."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1d3cf707722fc71c20cf4ec517b3f4f4875480e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_8e6c359d","line":8,"updated":"2017-12-14 10:36:20.000000000","message":"Please add an empty line between the title and the rest of the message.","commit_id":"3b3390db41b1183c2769a3733d45e5ec292db2c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2bb41752fe7ffa032a4d4fc99577cb58f3a9f03e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"nova limits ERROR (Exception): Field names must be unique"},{"line_number":8,"context_line":"This happens when \u0027Others\u0027 field is occuring more than once which is not handled in code causing multiple columns having same name."},{"line_number":9,"context_line":"Which throws above exception and does not pretty prints absolute limit."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1d3cf707722fc71c20cf4ec517b3f4f4875480e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_2e13a90f","line":9,"updated":"2017-12-14 10:36:20.000000000","message":"Please split the lines at 72 char. You can fined more info about the commit message in [2]\n\n[2]https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"3b3390db41b1183c2769a3733d45e5ec292db2c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2bb41752fe7ffa032a4d4fc99577cb58f3a9f03e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"nova limits ERROR (Exception): Field names must be unique"},{"line_number":8,"context_line":"This happens when \u0027Others\u0027 field is occuring more than once which is not handled in code causing multiple columns having same name."},{"line_number":9,"context_line":"Which throws above exception and does not pretty prints absolute limit."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I1d3cf707722fc71c20cf4ec517b3f4f4875480e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_8e0195b2","line":10,"updated":"2017-12-14 10:36:20.000000000","message":"After you filed a bug for the problem, please reference the bug in the commit message in the following way:\nCloses-Bug: #\u003cbug id\u003e","commit_id":"3b3390db41b1183c2769a3733d45e5ec292db2c9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"28630f49e86505e022e2c9acc755c9109b6cfbef","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This fix should also fix any future custom limits."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Fixes LP bug #1546767"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I1d3cf707722fc71c20cf4ec517b3f4f4875480e0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"df87a7cf_b024a161","line":28,"updated":"2017-12-18 14:39:24.000000000","message":"Much better than previously, but this should be a Closes-Bug footer (documented in the wiki page on Git commit messages).","commit_id":"1c9ae5cc70e2dd3bf2c34a80d1a5f8220715fcb0"}],"novaclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4315948dffca35a5d7d8d0a2e2b8dc0894b69855","unresolved":false,"context_lines":[{"line_number":2837,"context_line":""},{"line_number":2838,"context_line":"    def test_print_absolute_limits(self):"},{"line_number":2839,"context_line":"        # To convert limit dictionary to object"},{"line_number":2840,"context_line":"        from collections import namedtuple"},{"line_number":2841,"context_line":"        limit \u003d [{\u0027name\u0027: \u0027maxTotalPrivateNetworks\u0027, \u0027value\u0027: 3},"},{"line_number":2842,"context_line":"                 {\u0027name\u0027: \u0027totalPrivateNetworksUsed\u0027, \u0027value\u0027: 0},"},{"line_number":2843,"context_line":"                 # Above two fields custom"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_b5497261","line":2840,"updated":"2017-12-20 17:17:11.000000000","message":"This import can be moved to the top of the file.","commit_id":"4b99e1fba1cc3dcb1f599f4e492bd1623766580a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4315948dffca35a5d7d8d0a2e2b8dc0894b69855","unresolved":false,"context_lines":[{"line_number":2854,"context_line":"        try:"},{"line_number":2855,"context_line":"            novaclient.v2.shell._print_absolute_limits(limits\u003dlimit_obj)"},{"line_number":2856,"context_line":"        except Exception:"},{"line_number":2857,"context_line":"            self.fail(\"Exception raised on introducing custom fields\")"},{"line_number":2858,"context_line":""},{"line_number":2859,"context_line":"    def test_evacuate(self):"},{"line_number":2860,"context_line":"        self.run_command(\u0027evacuate sample-server new_host\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_957a2e86","line":2857,"updated":"2017-12-20 17:17:11.000000000","message":"The try block is not necessary; an exception raised will cause the test to fail.  However, because there are no asserts here (and I don\u0027t think any are really needed for this test), I want to see a comment that explains that the test just validates that no exception is thrown.","commit_id":"4b99e1fba1cc3dcb1f599f4e492bd1623766580a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"020adedb3fe62c91bd4b6361a5fe8e39ce3f6679","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import datetime"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from collections import namedtuple"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import fixtures"},{"line_number":27,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_1d7ac423","line":24,"updated":"2017-12-20 19:19:03.000000000","message":"OK, \"collections\" is standard library, so it should be in the first group of imports.  \"namedtuple\" is an object in that module, so it should not be directly imported; you should reference it as \"collections.namedtuple\" where it\u0027s used below.  You can create the namedtuple at the top level, say, after line 44.  Sorry to keep going back and forth with you on this :/","commit_id":"9a262501a70daac4a14661e6020b8ed7bbb03cb6"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"020adedb3fe62c91bd4b6361a5fe8e39ce3f6679","unresolved":false,"context_lines":[{"line_number":2840,"context_line":"    def test_print_absolute_limits(self):"},{"line_number":2841,"context_line":"        # Note: This test is to validate that no exception is"},{"line_number":2842,"context_line":"        #       thrown if in case we pass multiple custom fields"},{"line_number":2843,"context_line":"        limit \u003d [{\u0027name\u0027: \u0027maxTotalPrivateNetworks\u0027, \u0027value\u0027: 3},"},{"line_number":2844,"context_line":"                 {\u0027name\u0027: \u0027totalPrivateNetworksUsed\u0027, \u0027value\u0027: 0},"},{"line_number":2845,"context_line":"                 # Above two fields are custom fields"},{"line_number":2846,"context_line":"                 {\u0027name\u0027: \u0027maxImageMeta\u0027, \u0027value\u0027: 15},"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_5db60cdc","line":2843,"updated":"2017-12-20 19:19:03.000000000","message":"By creating the AbsoluteLimits tuple at the top level, as I suggest, you can go from a list of dictionaries to a list of named tuples, and then you don\u0027t need to compute limit_obj; just pass the \"limit\" list.","commit_id":"9a262501a70daac4a14661e6020b8ed7bbb03cb6"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1e857ad44771e66599be71eab2130f6641dea8d7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"# Converting dictionary to object"},{"line_number":47,"context_line":"def add_named_tuple(dictionary):"},{"line_number":48,"context_line":"    return collections.namedtuple(\"AbsoluteLimits\","},{"line_number":49,"context_line":"                                  dictionary.keys())(*dictionary.values())"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class ShellFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf8cb3f7_c221c2a1","line":49,"updated":"2017-12-21 16:21:55.000000000","message":"You don\u0027t need add_named_tuple at all.  All you need here is:\n\n    TestAbsoluteLimits \u003d collections.namedtuple(\n        \"TestAbsoluteLimits\", [\"name\", \"value\"]\n    )\n\nSee below for how you would use this.","commit_id":"91e2ed9dcde76d42b6bfcc634279912436292a90"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"1e857ad44771e66599be71eab2130f6641dea8d7","unresolved":false,"context_lines":[{"line_number":2846,"context_line":"        # Note: This test is to validate that no exception is"},{"line_number":2847,"context_line":"        #       thrown if in case we pass multiple custom fields"},{"line_number":2848,"context_line":"        limits \u003d [add_named_tuple({\u0027name\u0027: \u0027maxTotalPrivateNetworks\u0027,"},{"line_number":2849,"context_line":"                                  \u0027value\u0027: 3}),"},{"line_number":2850,"context_line":"                  add_named_tuple({\u0027name\u0027: \u0027totalPrivateNetworksUsed\u0027,"},{"line_number":2851,"context_line":"                                  \u0027value\u0027: 0}),"},{"line_number":2852,"context_line":"                  # Above two fields are custom fields"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf8cb3f7_623236f4","line":2849,"updated":"2017-12-21 16:21:55.000000000","message":"Following on from above, this code then becomes:\n\n    limits \u003d [\n        TestAbsoluteLimits(\u0027maxTotalPrivateNetworks\u0027, 3),\n        TestAbsoluteLimits(\u0027totalPrivateNetworksUsed\u0027, 0),\n        …\n    ]","commit_id":"91e2ed9dcde76d42b6bfcc634279912436292a90"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"7249e4b9ea419591123160070930fa6420c9c1e7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"# Converting dictionary to object"},{"line_number":47,"context_line":"TestAbsoluteLimits \u003d collections.namedtuple(\"TestAbsoluteLimits\","},{"line_number":48,"context_line":"                                            [\"name\", \"value\"])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class ShellFixture(fixtures.Fixture):"},{"line_number":53,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf8cb3f7_da7d0c6f","line":50,"range":{"start_line":49,"start_character":0,"end_line":50,"end_character":0},"updated":"2017-12-23 10:00:24.000000000","message":"too many blank lines","commit_id":"65fc23775d125b51a8298685057e315f6ce49c31"}]}
