)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"20a5e6d2e2664b38ed3f23861c63ff7110e477c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3f1d235d_0c0befd5","line":17,"updated":"2017-07-06 02:04:00.000000000","message":"Missing Close-Bugs. Recheck.","commit_id":"da401fac259c86c3397074ed0d524c057be9a836"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0f63a69ab7eab05b1c73d5b690985db0c5973655","unresolved":false,"context_lines":[{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"    def _refresh_neutron_extensions_cache(self, context, neutron\u003dNone):"},{"line_number":1002,"context_line":"        \"\"\"Refresh the neutron extensions cache when necessary.\"\"\""},{"line_number":1003,"context_line":"        # TODO(stephenfin): Do we really need to do this? It seems unlikely"},{"line_number":1004,"context_line":"        # that operators would be enabling and disabling extensions ad hoc. If"},{"line_number":1005,"context_line":"        # this is removed, we might be able to remove \u0027context\u0027 arguments from"},{"line_number":1006,"context_line":"        # a lot of the calling functions."},{"line_number":1007,"context_line":"        if (not self.last_neutron_extension_sync or"},{"line_number":1008,"context_line":"            ((time.time() - self.last_neutron_extension_sync)"},{"line_number":1009,"context_line":"             \u003e\u003d CONF.neutron.extension_sync_interval)):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_5b7502f9","line":1006,"range":{"start_line":1003,"start_character":9,"end_line":1006,"end_character":41},"updated":"2017-07-06 14:29:13.000000000","message":"im guessing it would be needed for rolling upgrades?","commit_id":"70ae66b14c358dc8f6aae91c04bac027a8741e7a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8a38c9102c58abfa8e45783e6a734e83df0d0f9","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"            self.extensions.clear()"},{"line_number":1038,"context_line":"            self.extensions \u003d {ext[\u0027name\u0027]: ext for ext in extensions_list}"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"    def _has_auto_allocate_extension(self, context, neutron\u003dNone):"},{"line_number":1041,"context_line":"        self._refresh_neutron_extensions_cache(context, neutron\u003dneutron)"},{"line_number":1042,"context_line":"        return constants.AUTO_ALLOCATE_TOPO_EXT in self.extensions"},{"line_number":1043,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_57200d4a","line":1040,"range":{"start_line":1040,"start_character":8,"end_line":1040,"end_character":36},"updated":"2017-09-01 16:04:49.000000000","message":"This can\u0027t be disabled, or so I\u0027m told via armax, it\u0027s required and always there as long as neutron is running mitaka code. The only reason we check for it at all is to tell if neutron is new enough, but once it\u0027s there it\u0027s not going away.","commit_id":"4242575564b23764bd772956e74752bdb7e78c3b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e914b541a42865acf11260c6f0a03215b28c3cc","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"            self.extensions.clear()"},{"line_number":1038,"context_line":"            self.extensions \u003d {ext[\u0027name\u0027]: ext for ext in extensions_list}"},{"line_number":1039,"context_line":""},{"line_number":1040,"context_line":"    def _has_auto_allocate_extension(self, context, neutron\u003dNone):"},{"line_number":1041,"context_line":"        self._refresh_neutron_extensions_cache(context, neutron\u003dneutron)"},{"line_number":1042,"context_line":"        return constants.AUTO_ALLOCATE_TOPO_EXT in self.extensions"},{"line_number":1043,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f287b81_1d504a32","line":1040,"range":{"start_line":1040,"start_character":8,"end_line":1040,"end_character":36},"in_reply_to":"7f287b81_57200d4a","updated":"2017-09-04 08:57:24.000000000","message":"Does this mean we can remove this check now so? I don\u0027t imagine we support running M neutron alongside Q (M + 4?) nova?","commit_id":"4242575564b23764bd772956e74752bdb7e78c3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"057cac5945a57d13d894ecbad7be56a873fbea16","unresolved":false,"context_lines":[{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"    def _refresh_neutron_extensions_cache(self, context, neutron\u003dNone):"},{"line_number":1025,"context_line":"        \"\"\"Refresh the neutron extensions cache when necessary.\"\"\""},{"line_number":1026,"context_line":"        # TODO(stephenfin): Do we really need to do this? It seems unlikely"},{"line_number":1027,"context_line":"        # that operators would be enabling and disabling extensions ad hoc. If"},{"line_number":1028,"context_line":"        # this is removed, we might be able to remove \u0027context\u0027 arguments from"},{"line_number":1029,"context_line":"        # a lot of the calling functions."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_31daba4b","line":1026,"updated":"2017-09-14 22:13:49.000000000","message":"I wish you wouldn\u0027t throw a TODO in here for a change that\u0027s just removing some unnecessary checks now. I\u0027d prefer to debate the TODO on it\u0027s own, so that (1) it doesn\u0027t live in here forever if we don\u0027t remove this or (2) someone doesn\u0027t come along and remove the code because of the TODO if we never get back around to it. If you want to remove the checks, then do that and debate that change on it\u0027s own, but it shouldn\u0027t happen with this other change to remove the auto_allocate_topology check.","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"24db255c66d1603a6de1538ff1d18fc9ab936358","unresolved":false,"context_lines":[{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"    def _refresh_neutron_extensions_cache(self, context, neutron\u003dNone):"},{"line_number":1025,"context_line":"        \"\"\"Refresh the neutron extensions cache when necessary.\"\"\""},{"line_number":1026,"context_line":"        # TODO(stephenfin): Do we really need to do this? It seems unlikely"},{"line_number":1027,"context_line":"        # that operators would be enabling and disabling extensions ad hoc. If"},{"line_number":1028,"context_line":"        # this is removed, we might be able to remove \u0027context\u0027 arguments from"},{"line_number":1029,"context_line":"        # a lot of the calling functions."}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_c1edd6b7","line":1026,"in_reply_to":"5f2577a7_31daba4b","updated":"2017-09-15 15:19:53.000000000","message":"Fair. Done","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"057cac5945a57d13d894ecbad7be56a873fbea16","unresolved":false,"context_lines":[{"line_number":1025,"context_line":"        \"\"\"Refresh the neutron extensions cache when necessary.\"\"\""},{"line_number":1026,"context_line":"        # TODO(stephenfin): Do we really need to do this? It seems unlikely"},{"line_number":1027,"context_line":"        # that operators would be enabling and disabling extensions ad hoc. If"},{"line_number":1028,"context_line":"        # this is removed, we might be able to remove \u0027context\u0027 arguments from"},{"line_number":1029,"context_line":"        # a lot of the calling functions."},{"line_number":1030,"context_line":"        if (not self.last_neutron_extension_sync or"},{"line_number":1031,"context_line":"            ((time.time() - self.last_neutron_extension_sync)"},{"line_number":1032,"context_line":"             \u003e\u003d CONF.neutron.extension_sync_interval)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_91004ead","line":1029,"range":{"start_line":1028,"start_character":27,"end_line":1029,"end_character":41},"updated":"2017-09-14 22:13:49.000000000","message":"Why does this matter? We have context everywhere anyway so passing it around isn\u0027t a big deal.","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e2c06971a4ee3c268dfcdbeae68b48df3afeb8a","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"            LOG.debug(\u0027Network auto-allocation is available for project \u0027"},{"line_number":1533,"context_line":"                      \u0027%s\u0027, context.project_id)"},{"line_number":1534,"context_line":"        except neutron_client_exc.Conflict as ex:"},{"line_number":1535,"context_line":"            LOG.debug(\u0027Unable to auto-allocate networks. %s\u0027,"},{"line_number":1536,"context_line":"                      six.text_type(ex))"},{"line_number":1537,"context_line":"        else:"},{"line_number":1538,"context_line":"            return True"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_31c3da5f","line":1536,"range":{"start_line":1535,"start_character":12,"end_line":1536,"end_character":40},"updated":"2017-09-14 22:15:09.000000000","message":"So you\u0027re now returning None instead of False, which is a change.","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"05cd9306cd7ca9d25b96c42c6744f01677a8338f","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"            LOG.debug(\u0027Network auto-allocation is available for project \u0027"},{"line_number":1533,"context_line":"                      \u0027%s\u0027, context.project_id)"},{"line_number":1534,"context_line":"        except neutron_client_exc.Conflict as ex:"},{"line_number":1535,"context_line":"            LOG.debug(\u0027Unable to auto-allocate networks. %s\u0027,"},{"line_number":1536,"context_line":"                      six.text_type(ex))"},{"line_number":1537,"context_line":"        else:"},{"line_number":1538,"context_line":"            return True"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_511666aa","line":1536,"range":{"start_line":1535,"start_character":12,"end_line":1536,"end_character":40},"in_reply_to":"5f2577a7_31c3da5f","updated":"2017-09-14 22:23:40.000000000","message":"Yeah, the docstring says the method should return True or False. So if that\u0027s changing, the docstring should be updated at the least.\n\nIMHO it makes more sense for a method with a yes/no answer to return True or False, but I understand \"if \u003creturn\u003e\" statements with None would evaluate the same. Code checking \"if \u003creturn\u003e \u003d\u003d False\" would break, but I doubt anything is doing that.","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"24db255c66d1603a6de1538ff1d18fc9ab936358","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"            LOG.debug(\u0027Network auto-allocation is available for project \u0027"},{"line_number":1533,"context_line":"                      \u0027%s\u0027, context.project_id)"},{"line_number":1534,"context_line":"        except neutron_client_exc.Conflict as ex:"},{"line_number":1535,"context_line":"            LOG.debug(\u0027Unable to auto-allocate networks. %s\u0027,"},{"line_number":1536,"context_line":"                      six.text_type(ex))"},{"line_number":1537,"context_line":"        else:"},{"line_number":1538,"context_line":"            return True"},{"line_number":1539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f2577a7_e14572b5","line":1536,"range":{"start_line":1535,"start_character":12,"end_line":1536,"end_character":40},"in_reply_to":"5f2577a7_511666aa","updated":"2017-09-15 15:19:53.000000000","message":"Yup, that was a mistake. Fixed now","commit_id":"66a84b2ce9a9fc0bd6138d03c6ebdfc0ca154ef7"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"20a5e6d2e2664b38ed3f23861c63ff7110e477c2","unresolved":false,"context_lines":[{"line_number":6067,"context_line":"        self.api.extensions \u003d {constants.AUTO_ALLOCATE_TOPO_EXT: mock.Mock()}"},{"line_number":6068,"context_line":"        with mock.patch.object(self.api,"},{"line_number":6069,"context_line":"                               \u0027_refresh_neutron_extensions_cache\u0027) as refresh:"},{"line_number":6070,"context_line":"            self.assertTrue(self.api._has_auto_allocate_extension(self.context))"},{"line_number":6071,"context_line":"        refresh.assert_called_once_with(self.context, neutron\u003dNone)"},{"line_number":6072,"context_line":""},{"line_number":6073,"context_line":"    def test__can_auto_allocate_network_no_extension(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_8c481f2d","line":6070,"updated":"2017-07-06 02:04:00.000000000","message":"PEP8: Line too long [1]\n\nhttp://logs.openstack.org/74/480674/1/check/gate-nova-pep8-ubuntu-xenial/cc32382/console.html#_2017-07-05_17_07_48_621741","commit_id":"da401fac259c86c3397074ed0d524c057be9a836"}]}
