)]}'
{"neutron/tests/common/agents/l3_agent.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"764845095f006033aa7110ea5d352c35641e99f8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def _create_router(self, router_id, router):"},{"line_number":63,"context_line":"        router \u003d ("},{"line_number":64,"context_line":"            super(L3NATAgentForTest, self)._create_router(router_id, router))"},{"line_number":65,"context_line":"        mock.patch.object("},{"line_number":66,"context_line":"            router,"},{"line_number":67,"context_line":"            \u0027get_internal_device_name\u0027,"},{"line_number":68,"context_line":"            side_effect\u003dget_internal_device_name).start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_fbe0f82a","line":65,"updated":"2015-07-15 23:00:29.000000000","message":"we can directly do:\n\n  router.get_internal_device_name \u003d get_internal_device_name\n\nas we are mocking instances not classes","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d025c285d4042bf4f19f2981d2581844c50d277","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def _create_router(self, router_id, router):"},{"line_number":63,"context_line":"        router \u003d ("},{"line_number":64,"context_line":"            super(L3NATAgentForTest, self)._create_router(router_id, router))"},{"line_number":65,"context_line":"        mock.patch.object("},{"line_number":66,"context_line":"            router,"},{"line_number":67,"context_line":"            \u0027get_internal_device_name\u0027,"},{"line_number":68,"context_line":"            side_effect\u003dget_internal_device_name).start()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_819f8002","line":65,"in_reply_to":"9a41bdd9_fbe0f82a","updated":"2015-08-25 00:40:29.000000000","message":"Good point, thanks.","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"}],"neutron/tests/common/machine_fixtures.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"764845095f006033aa7110ea5d352c35641e99f8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def assert_no_ping(self, dst_ip):"},{"line_number":33,"context_line":"        net_helpers.assert_no_ping(self.namespace, dst_ip)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def block_until_ping(self, dst_ip):"},{"line_number":36,"context_line":"        def ping_predicate(dst_ip):"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                self.assert_ping(dst_ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_db709442","line":35,"updated":"2015-07-15 23:00:29.000000000","message":"wait_until_ping would be more consistent","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d025c285d4042bf4f19f2981d2581844c50d277","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def assert_no_ping(self, dst_ip):"},{"line_number":33,"context_line":"        net_helpers.assert_no_ping(self.namespace, dst_ip)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def block_until_ping(self, dst_ip):"},{"line_number":36,"context_line":"        def ping_predicate(dst_ip):"},{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                self.assert_ping(dst_ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_5e5aa951","line":35,"in_reply_to":"9a41bdd9_db709442","updated":"2015-08-25 00:40:29.000000000","message":"Done","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"}],"neutron/tests/fullstack/test_l3_agent.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"764845095f006033aa7110ea5d352c35641e99f8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertEqual(2, len(agents[\u0027agents\u0027]),"},{"line_number":118,"context_line":"                         \u0027HA router must be scheduled to both nodes\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        network \u003d self.client.create_network("},{"line_number":121,"context_line":"            body\u003d{\u0027network\u0027: {\u0027name\u0027: \u0027network-test\u0027,"},{"line_number":122,"context_line":"                              \u0027tenant_id\u0027: tenant_id}})"},{"line_number":123,"context_line":"        self.addCleanup(self.client.delete_network, network[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_7be068cd","line":120,"updated":"2015-07-15 23:00:29.000000000","message":"i should really work on https://review.openstack.org/193100 to improve resource create/cleanup","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d025c285d4042bf4f19f2981d2581844c50d277","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertEqual(2, len(agents[\u0027agents\u0027]),"},{"line_number":118,"context_line":"                         \u0027HA router must be scheduled to both nodes\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        network \u003d self.client.create_network("},{"line_number":121,"context_line":"            body\u003d{\u0027network\u0027: {\u0027name\u0027: \u0027network-test\u0027,"},{"line_number":122,"context_line":"                              \u0027tenant_id\u0027: tenant_id}})"},{"line_number":123,"context_line":"        self.addCleanup(self.client.delete_network, network[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_6147cc1d","line":120,"in_reply_to":"9a41bdd9_7be068cd","updated":"2015-08-25 00:40:29.000000000","message":"You should, and you did, thanks for that :)","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"764845095f006033aa7110ea5d352c35641e99f8","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            functools.partial("},{"line_number":181,"context_line":"                self._is_ha_router_active_on_one_agent,"},{"line_number":182,"context_line":"                router_id),"},{"line_number":183,"context_line":"            timeout\u003d90)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        vm.block_until_ping(external.ip)"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_dba734a5","line":183,"updated":"2015-07-15 23:00:29.000000000","message":"i would prefer we separate the test itself  L184- L190 and its setup L108-L183 for readibility","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d025c285d4042bf4f19f2981d2581844c50d277","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            functools.partial("},{"line_number":181,"context_line":"                self._is_ha_router_active_on_one_agent,"},{"line_number":182,"context_line":"                router_id),"},{"line_number":183,"context_line":"            timeout\u003d90)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        vm.block_until_ping(external.ip)"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_01bff0fb","line":183,"in_reply_to":"9a41bdd9_dba734a5","updated":"2015-08-25 00:40:29.000000000","message":"Check out the latest PS hopefully it\u0027s better.","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"764845095f006033aa7110ea5d352c35641e99f8","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        active_host \u003d self._get_host_for_active_ha_router_replica(router_id)"},{"line_number":188,"context_line":"        active_host.disconnect()"},{"line_number":189,"context_line":"        vm.assert_no_ping(external.ip)"},{"line_number":190,"context_line":"        vm.block_until_ping(external.ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_f6756f63","line":189,"updated":"2015-07-15 23:00:29.000000000","message":"Could we ensure assert_no_ping will not fail because passive host becomes active one too early?","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d025c285d4042bf4f19f2981d2581844c50d277","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        active_host \u003d self._get_host_for_active_ha_router_replica(router_id)"},{"line_number":188,"context_line":"        active_host.disconnect()"},{"line_number":189,"context_line":"        vm.assert_no_ping(external.ip)"},{"line_number":190,"context_line":"        vm.block_until_ping(external.ip)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_a144041b","line":189,"in_reply_to":"9a41bdd9_f6756f63","updated":"2015-08-25 00:40:29.000000000","message":"That\u0027s not a real worry. The minimum time for failover in the data plane is roughly 8 seconds. That\u0027s how long it takes keepalived to move over the VIPs.","commit_id":"0c97a20f6808e8b87b4d4bada0db00337ea437dc"}]}
