)]}'
{"HACKING.rst":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"42d26278372fc6b0b627bb8dd6f136130a463844","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- [N330] Use assertEqual(*empty*, observed) instead of"},{"line_number":23,"context_line":"         assertEqual(observed, *empty*)"},{"line_number":24,"context_line":"- [N331] Detect wrong usage with assertTrue(isinstance())."},{"line_number":25,"context_line":"- [N340] Check usage of \u003cmodule\u003e.i18n (and neutron.i18n)"},{"line_number":26,"context_line":"- [N341] Check usage of _ from python builtins"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Creating Unit Tests"},{"line_number":29,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a68dd71_47f7ae8c","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":46},"updated":"2016-01-26 06:05:10.000000000","message":"Just question: Why not 332, 333?","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5f3ad85bbf27191f6cc7043cf421e3137563508","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- [N330] Use assertEqual(*empty*, observed) instead of"},{"line_number":23,"context_line":"         assertEqual(observed, *empty*)"},{"line_number":24,"context_line":"- [N331] Detect wrong usage with assertTrue(isinstance())."},{"line_number":25,"context_line":"- [N340] Check usage of \u003cmodule\u003e.i18n (and neutron.i18n)"},{"line_number":26,"context_line":"- [N341] Check usage of _ from python builtins"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Creating Unit Tests"},{"line_number":29,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a68dd71_90807af9","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":46},"in_reply_to":"9a68dd71_47f7ae8c","updated":"2016-01-26 08:00:21.000000000","message":"Okay, I just wanted to avoid the numbering conflict.\nI wonder why the number starts N319. I think Nxxx are all neutron-specific, so we can use any number.","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"}],"neutron/agent/l3/dvr_local_router.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"42d26278372fc6b0b627bb8dd6f136130a463844","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        if self.rtr_fip_subnet is None:"},{"line_number":87,"context_line":"            self.rtr_fip_subnet \u003d self.fip_ns.local_subnets.allocate("},{"line_number":88,"context_line":"                self.router_id)"},{"line_number":89,"context_line":"        rtr_2_fip, _ \u003d self.rtr_fip_subnet.get_pair()  # noqa"},{"line_number":90,"context_line":"        device \u003d ip_lib.IPDevice(fip_2_rtr_name, namespace\u003dfip_ns_name)"},{"line_number":91,"context_line":"        device.route.add_route(fip_cidr, str(rtr_2_fip.ip))"},{"line_number":92,"context_line":"        interface_name \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_473ece2a","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":61},"updated":"2016-01-26 06:05:10.000000000","message":"nit: There was a discussion[1] about i18n and \"throwaway\". I prefer i18n only over coexistence. Can we remove \"throwaway\" case itself?\n\n[1]: http://stackoverflow.com/questions/5893163/what-is-the-purpose-of-the-single-underscore-variable-in-python","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"6b59dbe53f7368b3151fe0803e9a1efa2c608801","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        if self.rtr_fip_subnet is None:"},{"line_number":87,"context_line":"            self.rtr_fip_subnet \u003d self.fip_ns.local_subnets.allocate("},{"line_number":88,"context_line":"                self.router_id)"},{"line_number":89,"context_line":"        rtr_2_fip, _ \u003d self.rtr_fip_subnet.get_pair()  # noqa"},{"line_number":90,"context_line":"        device \u003d ip_lib.IPDevice(fip_2_rtr_name, namespace\u003dfip_ns_name)"},{"line_number":91,"context_line":"        device.route.add_route(fip_cidr, str(rtr_2_fip.ip))"},{"line_number":92,"context_line":"        interface_name \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_e2fc7e74","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":61},"in_reply_to":"9a68dd71_473ece2a","updated":"2016-01-26 13:33:57.000000000","message":"+1. I suggest changing to double-underscore for the throwaway here.","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bc7087802b8966e731f1d28fef979aa80447c07a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        if self.rtr_fip_subnet is None:"},{"line_number":87,"context_line":"            self.rtr_fip_subnet \u003d self.fip_ns.local_subnets.allocate("},{"line_number":88,"context_line":"                self.router_id)"},{"line_number":89,"context_line":"        rtr_2_fip, _ \u003d self.rtr_fip_subnet.get_pair()  # noqa"},{"line_number":90,"context_line":"        device \u003d ip_lib.IPDevice(fip_2_rtr_name, namespace\u003dfip_ns_name)"},{"line_number":91,"context_line":"        device.route.add_route(fip_cidr, str(rtr_2_fip.ip))"},{"line_number":92,"context_line":"        interface_name \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_f15521fa","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":61},"in_reply_to":"9a68dd71_e2fc7e74","updated":"2016-01-26 15:40:04.000000000","message":"Good idea! double-underscore sounds good for \"throwaway\".\n\nI will update the hacking message accordingly.","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"}],"neutron/pecan_wsgi/controllers/quota.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"6b59dbe53f7368b3151fe0803e9a1efa2c608801","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from pecan import request"},{"line_number":20,"context_line":"from pecan import response"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":"from neutron.api.v2 import attributes"},{"line_number":24,"context_line":"from neutron.common import constants"},{"line_number":25,"context_line":"from neutron.common import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_6d4abfae","line":22,"updated":"2016-01-26 13:33:57.000000000","message":"How did this work before??????!","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"791ab9a147baa55ecdcc9899dee214c2fce3e837","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from pecan import request"},{"line_number":20,"context_line":"from pecan import response"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":"from neutron.api.v2 import attributes"},{"line_number":24,"context_line":"from neutron.common import constants"},{"line_number":25,"context_line":"from neutron.common import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_15719be0","line":22,"in_reply_to":"7a5de9d1_1856cb29","updated":"2016-01-28 14:00:28.000000000","message":"Got it, thanks!","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a22cb24592fc6ed714d8d6fb853fceb987e539f6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from pecan import request"},{"line_number":20,"context_line":"from pecan import response"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":"from neutron.api.v2 import attributes"},{"line_number":24,"context_line":"from neutron.common import constants"},{"line_number":25,"context_line":"from neutron.common import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_1856cb29","line":22,"in_reply_to":"9a68dd71_278e1b28","updated":"2016-01-28 04:47:34.000000000","message":"I think we mark this deprecated in Mitaka and drop it at the beginning of Newton.\n\nhttps://github.com/openstack/neutron/blob/master/neutron/__init__.py#L28-L30\n\nMy hacking rule is to detect it in advance.","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bc7087802b8966e731f1d28fef979aa80447c07a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from pecan import request"},{"line_number":20,"context_line":"from pecan import response"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":"from neutron.api.v2 import attributes"},{"line_number":24,"context_line":"from neutron.common import constants"},{"line_number":25,"context_line":"from neutron.common import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_f658b78c","line":22,"in_reply_to":"9a68dd71_6d4abfae","updated":"2016-01-26 15:40:04.000000000","message":"gettext.install in neutron/__init__.py [1] does the magic.\n[2] is a short story.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/__init__.py\n[2] http://paste.openstack.org/show/485021/","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b2afa5d0d5e14be8f38a975e215635c3e75df060","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from pecan import request"},{"line_number":20,"context_line":"from pecan import response"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":"from neutron.api.v2 import attributes"},{"line_number":24,"context_line":"from neutron.common import constants"},{"line_number":25,"context_line":"from neutron.common import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_278e1b28","line":22,"in_reply_to":"9a68dd71_f658b78c","updated":"2016-01-26 16:04:51.000000000","message":"Oh, I thought we had got rid of gettext.install\n\nWhen can we do that?","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"}],"neutron/plugins/ml2/drivers/l2pop/mech_driver.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"6b59dbe53f7368b3151fe0803e9a1efa2c608801","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def _get_tunnels(self, tunnel_network_ports, exclude_host):"},{"line_number":191,"context_line":"        agents \u003d {}"},{"line_number":192,"context_line":"        for _, agent in tunnel_network_ports:  # noqa"},{"line_number":193,"context_line":"            if agent.host \u003d\u003d exclude_host:"},{"line_number":194,"context_line":"                continue"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_cde64bb0","line":192,"updated":"2016-01-26 13:33:57.000000000","message":"Suggest use __ for throwaway.","commit_id":"e344175c79b8036e677a3c821d66e69f2e41c399"}],"tox.ini":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"912462ef9c714dcc337b65dbe9dbf923d8c94e0e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"exclude \u003d ./.*,build,dist,neutron/openstack/common/*,neutron/tests/tempest"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"[hacking]"},{"line_number":197,"context_line":"import_exceptions \u003d neutron.i18n, neutron._i18n"},{"line_number":198,"context_line":"local-check-factory \u003d neutron.hacking.checks.factory"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"[testenv:genconfig]"}],"source_content_type":"text/x-properties","patch_set":4,"id":"7a5de9d1_71c2c6ea","line":197,"range":{"start_line":197,"start_character":20,"end_line":197,"end_character":32},"updated":"2016-02-01 19:37:15.000000000","message":"Is this in there for backwards compatibility?","commit_id":"951a1ca9a367daa2aff19f03800a107fef22f095"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ca0abcf8d42a01c81f22a0ddd2c576cb8909927d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"exclude \u003d ./.*,build,dist,neutron/openstack/common/*,neutron/tests/tempest"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"[hacking]"},{"line_number":197,"context_line":"import_exceptions \u003d neutron.i18n, neutron._i18n"},{"line_number":198,"context_line":"local-check-factory \u003d neutron.hacking.checks.factory"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"[testenv:genconfig]"}],"source_content_type":"text/x-properties","patch_set":4,"id":"5a5ae5dd_664795bc","line":197,"range":{"start_line":197,"start_character":20,"end_line":197,"end_character":32},"in_reply_to":"7a5de9d1_71c2c6ea","updated":"2016-02-12 08:50:02.000000000","message":"Yes. it was original kept for migration. we no longer need it. I will drop it.","commit_id":"951a1ca9a367daa2aff19f03800a107fef22f095"}]}
