)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b1f2d797351fdee3a157593a1dbf7f43f99226d9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the test assumes delete_ports_by_device_id deletes ports in"},{"line_number":10,"context_line":"the order they were created but nothing ensures it. This change"},{"line_number":11,"context_line":"updates _test_delete_ports_by_device_id_second_call_failure to avoid"},{"line_number":12,"context_line":"such (incorrect) assumption."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I387354eb8c02b614321ace5a105253d7504d5119"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_4e405a5f","line":11,"updated":"2015-01-15 03:22:34.000000000","message":"it\u0027d be nice if you said gave us an overview about the how.","commit_id":"ecee1c5e969141d555d096d3da7673fcec5899f4"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"02ed6284d51f15d5f56077a22fa6da395efe4672","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the test assumes delete_ports_by_device_id deletes ports in"},{"line_number":10,"context_line":"the order they were created but nothing ensures it. This change"},{"line_number":11,"context_line":"updates _test_delete_ports_by_device_id_second_call_failure to avoid"},{"line_number":12,"context_line":"such (incorrect) assumption."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I387354eb8c02b614321ace5a105253d7504d5119"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_1549f2b7","line":11,"in_reply_to":"3a961159_4e405a5f","updated":"2015-01-15 10:49:18.000000000","message":"Done","commit_id":"ecee1c5e969141d555d096d3da7673fcec5899f4"}],"neutron/tests/unit/test_db_plugin.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"eb12fff40d20636a99e97217b9558c617a2104ce","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        res \u003d req.get_response(self._api_for_resource(collection))"},{"line_number":452,"context_line":"        self.assertEqual(res.status_int, expected_code)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def _show0(self, resource, id, neutron_context\u003dNone):"},{"line_number":455,"context_line":"        req \u003d self.new_show_request(resource, id)"},{"line_number":456,"context_line":"        if neutron_context:"},{"line_number":457,"context_line":"            # create a specific auth context for this request"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_82b6ae23","line":454,"updated":"2015-01-14 14:35:42.000000000","message":"i\u0027d name it more meaningfuly: \u0027_show_response\u0027","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2686c54bdc659908068fce2dc3817025f12eba6c","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        res \u003d req.get_response(self._api_for_resource(collection))"},{"line_number":452,"context_line":"        self.assertEqual(res.status_int, expected_code)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def _show0(self, resource, id, neutron_context\u003dNone):"},{"line_number":455,"context_line":"        req \u003d self.new_show_request(resource, id)"},{"line_number":456,"context_line":"        if neutron_context:"},{"line_number":457,"context_line":"            # create a specific auth context for this request"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f921e04f","line":454,"in_reply_to":"3a961159_266ee700","updated":"2015-01-14 17:41:26.000000000","message":"Done","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"2ea68339392df417899010937c02dd5b7e429cde","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        res \u003d req.get_response(self._api_for_resource(collection))"},{"line_number":452,"context_line":"        self.assertEqual(res.status_int, expected_code)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def _show0(self, resource, id, neutron_context\u003dNone):"},{"line_number":455,"context_line":"        req \u003d self.new_show_request(resource, id)"},{"line_number":456,"context_line":"        if neutron_context:"},{"line_number":457,"context_line":"            # create a specific auth context for this request"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_266ee700","line":454,"in_reply_to":"3a961159_82b6ae23","updated":"2015-01-14 17:29:41.000000000","message":"+1","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"eb12fff40d20636a99e97217b9558c617a2104ce","unresolved":false,"context_lines":[{"line_number":462,"context_line":"              expected_code\u003dwebob.exc.HTTPOk.code,"},{"line_number":463,"context_line":"              neutron_context\u003dNone):"},{"line_number":464,"context_line":"        res \u003d self._show0(resource, id, neutron_context\u003dneutron_context)"},{"line_number":465,"context_line":"        self.assertEqual(res.status_int, expected_code)"},{"line_number":466,"context_line":"        return self.deserialize(self.fmt, res)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def _update(self, resource, id, new_data,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_224a5a27","line":465,"updated":"2015-01-14 14:35:42.000000000","message":"nit: might change the order to (expected_code, res.status_int) since you modify the method anyway","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2686c54bdc659908068fce2dc3817025f12eba6c","unresolved":false,"context_lines":[{"line_number":462,"context_line":"              expected_code\u003dwebob.exc.HTTPOk.code,"},{"line_number":463,"context_line":"              neutron_context\u003dNone):"},{"line_number":464,"context_line":"        res \u003d self._show0(resource, id, neutron_context\u003dneutron_context)"},{"line_number":465,"context_line":"        self.assertEqual(res.status_int, expected_code)"},{"line_number":466,"context_line":"        return self.deserialize(self.fmt, res)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def _update(self, resource, id, new_data,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f9a640bf","line":465,"in_reply_to":"3a961159_224a5a27","updated":"2015-01-14 17:41:26.000000000","message":"Done","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"2ea68339392df417899010937c02dd5b7e429cde","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"                                      ctx, \u0027owner1\u0027, network_id)"},{"line_number":1787,"context_line":"                statuses \u003d [self._show0(\u0027ports\u0027, p[\u0027port\u0027][\u0027id\u0027]).status_int"},{"line_number":1788,"context_line":"                            for p in [p1, p2, p3]]"},{"line_number":1789,"context_line":"                delete_successes \u003d statuses.count(webob.exc.HTTPNotFound.code)"},{"line_number":1790,"context_line":"                delete_fails \u003d statuses.count(webob.exc.HTTPOk.code)"},{"line_number":1791,"context_line":"                self.assertEqual(1, delete_successes)"},{"line_number":1792,"context_line":"                self.assertEqual(2, delete_fails)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_0669ebf7","line":1789,"updated":"2015-01-14 17:29:41.000000000","message":"the naming is confusing here. Only one port deletion fails. Line 1785 should have as result the deletion of p1 and p2 but one deletion fails. We never try to delete p3. So as a result we have 2 port still existing (webob.exc.HTTPOk.code) and one port that was deleted (webob.exc.HTTPNotFound.code) .\nConsider remaning:\n\ndelete_successes -\u003e deleted_ports\ndelete_fails -\u003e existing_ports","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"2686c54bdc659908068fce2dc3817025f12eba6c","unresolved":false,"context_lines":[{"line_number":1786,"context_line":"                                      ctx, \u0027owner1\u0027, network_id)"},{"line_number":1787,"context_line":"                statuses \u003d [self._show0(\u0027ports\u0027, p[\u0027port\u0027][\u0027id\u0027]).status_int"},{"line_number":1788,"context_line":"                            for p in [p1, p2, p3]]"},{"line_number":1789,"context_line":"                delete_successes \u003d statuses.count(webob.exc.HTTPNotFound.code)"},{"line_number":1790,"context_line":"                delete_fails \u003d statuses.count(webob.exc.HTTPOk.code)"},{"line_number":1791,"context_line":"                self.assertEqual(1, delete_successes)"},{"line_number":1792,"context_line":"                self.assertEqual(2, delete_fails)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_19a6ac0f","line":1789,"in_reply_to":"3a961159_0669ebf7","updated":"2015-01-14 17:41:26.000000000","message":"Done (differently)","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"2ce55cbc0b756c11d5b149b6d6eb625c781656fb","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"                delete_successes \u003d statuses.count(webob.exc.HTTPNotFound.code)"},{"line_number":1790,"context_line":"                delete_fails \u003d statuses.count(webob.exc.HTTPOk.code)"},{"line_number":1791,"context_line":"                self.assertEqual(1, delete_successes)"},{"line_number":1792,"context_line":"                self.assertEqual(2, delete_fails)"},{"line_number":1793,"context_line":""},{"line_number":1794,"context_line":"    def test_delete_ports_by_device_id_second_call_failure(self):"},{"line_number":1795,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_ee812dc4","line":1792,"updated":"2015-01-14 07:05:25.000000000","message":"it isn\u0027t necessary to loosen the check for p3.","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"55a1dd8a386271d81169953a37fa60f308736ea7","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"                delete_successes \u003d statuses.count(webob.exc.HTTPNotFound.code)"},{"line_number":1790,"context_line":"                delete_fails \u003d statuses.count(webob.exc.HTTPOk.code)"},{"line_number":1791,"context_line":"                self.assertEqual(1, delete_successes)"},{"line_number":1792,"context_line":"                self.assertEqual(2, delete_fails)"},{"line_number":1793,"context_line":""},{"line_number":1794,"context_line":"    def test_delete_ports_by_device_id_second_call_failure(self):"},{"line_number":1795,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_2bd86052","line":1792,"in_reply_to":"3a961159_c427edb3","updated":"2015-01-15 02:24:18.000000000","message":"i meant what PS3 does.  thank you.","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f825ee08e42ca47c1228dff61edcee64ee91d183","unresolved":false,"context_lines":[{"line_number":1789,"context_line":"                delete_successes \u003d statuses.count(webob.exc.HTTPNotFound.code)"},{"line_number":1790,"context_line":"                delete_fails \u003d statuses.count(webob.exc.HTTPOk.code)"},{"line_number":1791,"context_line":"                self.assertEqual(1, delete_successes)"},{"line_number":1792,"context_line":"                self.assertEqual(2, delete_fails)"},{"line_number":1793,"context_line":""},{"line_number":1794,"context_line":"    def test_delete_ports_by_device_id_second_call_failure(self):"},{"line_number":1795,"context_line":"        plugin \u003d manager.NeutronManager.get_plugin()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_c427edb3","line":1792,"in_reply_to":"3a961159_ee812dc4","updated":"2015-01-14 10:01:08.000000000","message":"@yamamoto: could you clarify?","commit_id":"cb58464d18e6e9345c7d40a8728efbc426776d5e"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b1f2d797351fdee3a157593a1dbf7f43f99226d9","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"                                      ctx, \u0027owner1\u0027, network_id)"},{"line_number":1788,"context_line":"                statuses \u003d {"},{"line_number":1789,"context_line":"                    self._show_response(\u0027ports\u0027, p[\u0027port\u0027][\u0027id\u0027]).status_int"},{"line_number":1790,"context_line":"                    for p in [p1, p2]}"},{"line_number":1791,"context_line":"                expected \u003d {webob.exc.HTTPNotFound.code, webob.exc.HTTPOk.code}"},{"line_number":1792,"context_line":"                self.assertEqual(expected, statuses)"},{"line_number":1793,"context_line":"                self._show(\u0027ports\u0027, p3[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_8e76c2d6","line":1790,"updated":"2015-01-15 03:22:34.000000000","message":"is removing p3 here accidental, or done on purpose?","commit_id":"ecee1c5e969141d555d096d3da7673fcec5899f4"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"02ed6284d51f15d5f56077a22fa6da395efe4672","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"                                      ctx, \u0027owner1\u0027, network_id)"},{"line_number":1788,"context_line":"                statuses \u003d {"},{"line_number":1789,"context_line":"                    self._show_response(\u0027ports\u0027, p[\u0027port\u0027][\u0027id\u0027]).status_int"},{"line_number":1790,"context_line":"                    for p in [p1, p2]}"},{"line_number":1791,"context_line":"                expected \u003d {webob.exc.HTTPNotFound.code, webob.exc.HTTPOk.code}"},{"line_number":1792,"context_line":"                self.assertEqual(expected, statuses)"},{"line_number":1793,"context_line":"                self._show(\u0027ports\u0027, p3[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_15bf32ac","line":1790,"in_reply_to":"3a961159_8e76c2d6","updated":"2015-01-15 10:49:18.000000000","message":"On purpose, after Rossella highlighted that p3 belongs to a different tenant","commit_id":"ecee1c5e969141d555d096d3da7673fcec5899f4"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"4d036320d1613b31c17d717de570ed29cd61953b","unresolved":false,"context_lines":[{"line_number":1788,"context_line":"                statuses \u003d {"},{"line_number":1789,"context_line":"                    self._show_response(\u0027ports\u0027, p[\u0027port\u0027][\u0027id\u0027]).status_int"},{"line_number":1790,"context_line":"                    for p in [p1, p2]}"},{"line_number":1791,"context_line":"                expected \u003d {webob.exc.HTTPNotFound.code, webob.exc.HTTPOk.code}"},{"line_number":1792,"context_line":"                self.assertEqual(expected, statuses)"},{"line_number":1793,"context_line":"                self._show(\u0027ports\u0027, p3[\u0027port\u0027][\u0027id\u0027],"},{"line_number":1794,"context_line":"                           expected_code\u003dwebob.exc.HTTPOk.code)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_67e36da0","line":1791,"updated":"2015-01-15 11:13:59.000000000","message":"nice :) ...if you have to respin this patch maybe it could be useful to add a comment explaining why p3 is treated differently, I don\u0027t think it\u0027s obvious looking at the code for the first time","commit_id":"58c624fad3485e7604f1fb4a6616d2b09c03d8af"}]}
