)]}'
{"nova/network/linux_net.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d816d0e9bd0c428be9ab79db4f6a4cd7a6b1dc9","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        self.remove_chains \u003d set()"},{"line_number":192,"context_line":"        self.dirty \u003d True"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def has_chain(self, name, wrap\u003dTrue):"},{"line_number":195,"context_line":"        if wrap:"},{"line_number":196,"context_line":"            return name in self.chains"},{"line_number":197,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_afa55b48","line":194,"updated":"2014-07-03 19:42:52.000000000","message":"Would be good to have a direct unit test on this if possible somewhere since it\u0027s mocked out completely in test_driver.py, but it\u0027s so simple that I wouldn\u0027t hold this up for it.","commit_id":"2cba11d6c86ce248b8af042a4bf8cebaf9ad2ae3"}],"nova/tests/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d816d0e9bd0c428be9ab79db4f6a4cd7a6b1dc9","unresolved":false,"context_lines":[{"line_number":7762,"context_line":"            # NOTE(danms): Make sure that it is checking has_chain each time,"},{"line_number":7763,"context_line":"            # continuing to process all the instances, and never adding the"},{"line_number":7764,"context_line":"            # new chains back if has_chain() is False"},{"line_number":7765,"context_line":"            mock_filter.has_chain.assert_any_call(\u0027inst-1\u0027)"},{"line_number":7766,"context_line":"            mock_filter.has_chain.assert_any_call(\u0027inst-2\u0027)"},{"line_number":7767,"context_line":"            self.assertEqual(0, mock_filter.add_chain.call_count)"},{"line_number":7768,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_6f88a3c5","line":7765,"updated":"2014-07-03 19:42:52.000000000","message":"I think you should use mock_filter.has_chain.assert_has_calls with any_order\u003dFalse (to avoid non-deterministic ordering of the keys in the instance_info dict), since that will assert the exact number of calls and how they are called.","commit_id":"2cba11d6c86ce248b8af042a4bf8cebaf9ad2ae3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7c0d8814a728dbec236fa30091ba7ec8ebe4721","unresolved":false,"context_lines":[{"line_number":7762,"context_line":"            # NOTE(danms): Make sure that it is checking has_chain each time,"},{"line_number":7763,"context_line":"            # continuing to process all the instances, and never adding the"},{"line_number":7764,"context_line":"            # new chains back if has_chain() is False"},{"line_number":7765,"context_line":"            mock_filter.has_chain.assert_has_calls([mock.call(\u0027inst-1\u0027),"},{"line_number":7766,"context_line":"                                                    mock.call(\u0027inst-2\u0027)])"},{"line_number":7767,"context_line":"            self.assertEqual(0, mock_filter.add_chain.call_count)"},{"line_number":7768,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_4f275fca","line":7765,"updated":"2014-07-03 19:44:56.000000000","message":"You forgot to pass any_order\u003dFalse to assert_has_calls.","commit_id":"de31f4677e0075e9ad6d7c81bb6f62987e49a7df"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1a819b3fcfa87a63c73590644cbf6848b37cc68a","unresolved":false,"context_lines":[{"line_number":7762,"context_line":"            # NOTE(danms): Make sure that it is checking has_chain each time,"},{"line_number":7763,"context_line":"            # continuing to process all the instances, and never adding the"},{"line_number":7764,"context_line":"            # new chains back if has_chain() is False"},{"line_number":7765,"context_line":"            mock_filter.has_chain.assert_has_calls([mock.call(\u0027inst-1\u0027),"},{"line_number":7766,"context_line":"                                                    mock.call(\u0027inst-2\u0027)])"},{"line_number":7767,"context_line":"            self.assertEqual(0, mock_filter.add_chain.call_count)"},{"line_number":7768,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_af01db07","line":7765,"in_reply_to":"baada198_4f275fca","updated":"2014-07-03 19:46:23.000000000","message":"oops I meant any_order\u003dTrue, False is the default.","commit_id":"de31f4677e0075e9ad6d7c81bb6f62987e49a7df"}],"nova/virt/firewall.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b6ac18a3cdc7f146d496bbfde41b097fe60afee5","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        chain_name \u003d self._instance_chain_name(instance)"},{"line_number":446,"context_line":"        if not self.iptables.ipv4[\u0027filter\u0027].has_chain(chain_name):"},{"line_number":447,"context_line":"            LOG.info("},{"line_number":448,"context_line":"                _(\u0027instance chain %s disappeared during refresh, \u0027"},{"line_number":449,"context_line":"                  \u0027skipping\u0027) % chain_name,"},{"line_number":450,"context_line":"                instance\u003dinstance)"},{"line_number":451,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_3d5c29ed","line":448,"updated":"2014-07-03 16:25:32.000000000","message":"Should really be a DEBUG level message, IMO, not INFO, which should be reserved mostly for describing successful units of work...\n\nIf you change it, don\u0027t forget to remove the i18n on the DEBUG level message.","commit_id":"e1c870da312e602ce281a3c0f9b20bc6c5ac59e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3d816d0e9bd0c428be9ab79db4f6a4cd7a6b1dc9","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        chain_name \u003d self._instance_chain_name(instance)"},{"line_number":446,"context_line":"        if not self.iptables.ipv4[\u0027filter\u0027].has_chain(chain_name):"},{"line_number":447,"context_line":"            LOG.info("},{"line_number":448,"context_line":"                _(\u0027instance chain %s disappeared during refresh, \u0027"},{"line_number":449,"context_line":"                  \u0027skipping\u0027) % chain_name,"},{"line_number":450,"context_line":"                instance\u003dinstance)"},{"line_number":451,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ef8f5328","line":448,"updated":"2014-07-03 19:42:52.000000000","message":"nit: should be using _LI for the log translation.","commit_id":"2cba11d6c86ce248b8af042a4bf8cebaf9ad2ae3"}]}
