)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a0c0bed825b4e9cd2c1e3071393ba838437846dc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Abhishek \u003cAbhishek.Srivastav@maplelabs.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-07 10:46:36 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added extra-route api test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I6f2c2ebdce227705f073a43ff04c8bddc4ca5fd4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"5aef4532_ba2f78a0","line":7,"updated":"2016-03-07 11:36:37.000000000","message":"A body is missing in the commit message providing a bit more context.","commit_id":"ab7f80a2a1ac0ad47449bbc198adf5ec34bc9b2f"}],"tempest/api/network/test_routers.py":[{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"2a71c6e21c29e1b41dcca7879490616a31d547d9","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    def _delete_extra_routes(self, router_id):"},{"line_number":326,"context_line":"        self.client.delete_extra_routes(router_id)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":329,"context_line":"    def test_delete_extra_routes(self):"},{"line_number":330,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"},{"line_number":331,"context_line":"        # The cidr starts from tenant_cidr"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_4dc5938c","line":328,"updated":"2016-02-16 10:47:10.000000000","message":"Do not delete idempotent_id","commit_id":"a24d13a60bff41c5a0f6384bf5e02687baa7bebb"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"2a71c6e21c29e1b41dcca7879490616a31d547d9","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            data_utils.rand_name(\u0027router-\u0027), True)"},{"line_number":336,"context_line":"        self.addCleanup("},{"line_number":337,"context_line":"            self._delete_extra_routes,"},{"line_number":338,"context_line":"            router[\u0027id\u0027])"},{"line_number":339,"context_line":"        network \u003d self.create_network()"},{"line_number":340,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003dnext_cidr)"},{"line_number":341,"context_line":"        # Add router interface with subnet id"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_cdffe3ff","line":338,"updated":"2016-02-16 10:47:10.000000000","message":"this can be made into a single line or two","commit_id":"a24d13a60bff41c5a0f6384bf5e02687baa7bebb"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"2a71c6e21c29e1b41dcca7879490616a31d547d9","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        test_routes \u003d []"},{"line_number":347,"context_line":"        test_routes.append("},{"line_number":348,"context_line":"            {\u0027nexthop\u0027: next_hop, \u0027destination\u0027: destination}"},{"line_number":349,"context_line":"            )"},{"line_number":350,"context_line":"        self.client.update_extra_routes(router[\u0027id\u0027], test_routes)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        show_body_before_deletion \u003d self.client.show_router(router[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0d58ab31","line":349,"updated":"2016-02-16 10:47:10.000000000","message":"test_routes.append({\u0027nexthop\u0027: next_hop,\n                               \u0027destination\u0027: destination})","commit_id":"a24d13a60bff41c5a0f6384bf5e02687baa7bebb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"75ba481b3113b100cd195418684c793fb8527a63","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        self.client.delete_extra_routes(router_id)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @test.idempotent_id(\u00274d536f4b-9540-4945-b82d-688ed04bf252\u0027)"},{"line_number":329,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":330,"context_line":"    def test_delete_extra_routes(self):"},{"line_number":331,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"},{"line_number":332,"context_line":"        # The cidr starts from tenant_cidr"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_1ac223e9","line":329,"range":{"start_line":329,"start_character":63,"end_line":329,"end_character":65},"updated":"2016-02-18 09:17:32.000000000","message":"This is already covered in test_update_extra_route","commit_id":"34d7edbdbf48f5c8f339f3118c6dac8a42a277df"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"3de88acf791451ff9c70e1dc9ddfda8c50179c8a","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            data_utils.rand_name(\u0027router-\u0027), True)"},{"line_number":337,"context_line":"        self.addCleanup("},{"line_number":338,"context_line":"            self._delete_extra_routes,"},{"line_number":339,"context_line":"            router[\u0027id\u0027])"},{"line_number":340,"context_line":"        network \u003d self.create_network()"},{"line_number":341,"context_line":"        subnet \u003d self.create_subnet(network, cidr\u003dnext_cidr)"},{"line_number":342,"context_line":"        # Add router interface with subnet id"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_b69590e5","line":339,"updated":"2016-02-16 11:59:38.000000000","message":"I guess this can be made into a single line.","commit_id":"34d7edbdbf48f5c8f339f3118c6dac8a42a277df"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"3de88acf791451ff9c70e1dc9ddfda8c50179c8a","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        test_routes \u003d []"},{"line_number":348,"context_line":"        test_routes.append("},{"line_number":349,"context_line":"            {\u0027nexthop\u0027: next_hop, \u0027destination\u0027: destination}"},{"line_number":350,"context_line":"            )"},{"line_number":351,"context_line":"        self.client.update_extra_routes(router[\u0027id\u0027], test_routes)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        show_body_before_deletion \u003d self.client.show_router(router[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_16855cac","line":350,"updated":"2016-02-16 11:59:38.000000000","message":"ditto","commit_id":"34d7edbdbf48f5c8f339f3118c6dac8a42a277df"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"1c06e73ec9ff0d26442687732ba518e9a19e6d9f","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    @test.idempotent_id(\u0027c86ac3a8-50bd-4b00-a6b8-62af84a0765c\u0027)"},{"line_number":271,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":272,"context_line":"    def test_update_extra_route(self):"},{"line_number":273,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"},{"line_number":274,"context_line":"        # The cidr starts from tenant_cidr"},{"line_number":275,"context_line":"        next_cidr \u003d netaddr.IPNetwork(self.tenant_cidr)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_6d512836","line":272,"updated":"2016-03-03 09:49:16.000000000","message":"Merge your test into this one. I.e rename this test test_update_delete_extra_route and perform your check at the end of this test.","commit_id":"b7075fa78df0e8d504ba9b06137c287e71dbcd6a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"febeda300637743c5a244069d748dc48a5b87e3f","unresolved":false,"context_lines":[{"line_number":267,"context_line":"             \u0027enable_snat\u0027: False})"},{"line_number":268,"context_line":"        self._verify_gateway_port(router[\u0027id\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    @test.idempotent_id(\u0027ad8ffd8d-1e5c-44b6-9584-14ec75c50c17\u0027)"},{"line_number":271,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":272,"context_line":"    def test_update_delete_extra_route(self):"},{"line_number":273,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"}],"source_content_type":"text/x-python","patch_set":10,"id":"7af24918_a3c05151","line":270,"updated":"2016-03-03 13:41:30.000000000","message":"I am not sure you should update the id here. Maybe, but I am not sure.","commit_id":"8d8eca8ff77378947b01a9abb2b7fd8fe0b4d715"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"014c3790c30999f9977e15a54cbae9bcbb5565f9","unresolved":false,"context_lines":[{"line_number":267,"context_line":"             \u0027enable_snat\u0027: False})"},{"line_number":268,"context_line":"        self._verify_gateway_port(router[\u0027id\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    @test.idempotent_id(\u0027ad8ffd8d-1e5c-44b6-9584-14ec75c50c17\u0027)"},{"line_number":271,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":272,"context_line":"    def test_update_delete_extra_route(self):"},{"line_number":273,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"}],"source_content_type":"text/x-python","patch_set":10,"id":"7af24918_0f4fa36b","line":270,"in_reply_to":"7af24918_a3c05151","updated":"2016-03-03 15:11:30.000000000","message":"IMHO, Better retain the older id unless it is a new testcase entirely.","commit_id":"8d8eca8ff77378947b01a9abb2b7fd8fe0b4d715"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"febeda300637743c5a244069d748dc48a5b87e3f","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        self.client.delete_extra_routes(router[\u0027id\u0027])"},{"line_number":326,"context_line":"        show_body_after_deletion \u003d self.client.show_router(router[\u0027id\u0027])"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self.assertNotEqual(len(show_body[\u0027router\u0027][\u0027routes\u0027]),"},{"line_number":329,"context_line":"                            len(show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027]))"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _delete_extra_routes(self, router_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7af24918_c32d9d47","line":328,"updated":"2016-03-03 13:41:30.000000000","message":"You should also assert that show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027] is empty using seld.assertEmpty(...) because client.delete_extra_routes(..) should remove every routes, so check that it is the case.","commit_id":"8d8eca8ff77378947b01a9abb2b7fd8fe0b4d715"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"014c3790c30999f9977e15a54cbae9bcbb5565f9","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        self.client.delete_extra_routes(router[\u0027id\u0027])"},{"line_number":326,"context_line":"        show_body_after_deletion \u003d self.client.show_router(router[\u0027id\u0027])"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self.assertNotEqual(len(show_body[\u0027router\u0027][\u0027routes\u0027]),"},{"line_number":329,"context_line":"                            len(show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027]))"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _delete_extra_routes(self, router_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7af24918_2f237fa8","line":328,"in_reply_to":"7af24918_c32d9d47","updated":"2016-03-03 15:11:30.000000000","message":"Agreed. Asserting with null is more appropriate.","commit_id":"8d8eca8ff77378947b01a9abb2b7fd8fe0b4d715"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"dfa725ddffd248cafd510f6f995b6ab7dc098e99","unresolved":false,"context_lines":[{"line_number":267,"context_line":"             \u0027enable_snat\u0027: False})"},{"line_number":268,"context_line":"        self._verify_gateway_port(router[\u0027id\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    @test.idempotent_id(\u0027ad8ffd8d-1e5c-44b6-9584-14ec75c50c17\u0027)"},{"line_number":271,"context_line":"    @test.requires_ext(extension\u003d\u0027extraroute\u0027, service\u003d\u0027network\u0027)"},{"line_number":272,"context_line":"    def test_update_delete_extra_route(self):"},{"line_number":273,"context_line":"        # Create different cidr for each subnet to avoid cidr duplicate"}],"source_content_type":"text/x-python","patch_set":11,"id":"7af24918_e42eaaa3","line":270,"updated":"2016-03-04 10:10:31.000000000","message":"Please do not change the test id.","commit_id":"f8a043b2a53c87ae0569add95b76ed7a20b1d66c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"dfa725ddffd248cafd510f6f995b6ab7dc098e99","unresolved":false,"context_lines":[{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        self.client.delete_extra_routes(router[\u0027id\u0027])"},{"line_number":326,"context_line":"        show_body_after_deletion \u003d self.client.show_router(router[\u0027id\u0027])"},{"line_number":327,"context_line":"        for route in test_routes:"},{"line_number":328,"context_line":"            self.assertNotIn(route,"},{"line_number":329,"context_line":"                             show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027])"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7af24918_842366bc","line":327,"updated":"2016-03-04 10:10:31.000000000","message":"Nope. What we want to assert exactly, and I suggested it that way, is to check that show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027] is empty.\n\nYou make a call to \"delete_extra_routes\", that is, we want all the routes to be removed. Here, you assert that some routes are not here anymore. That\u0027s suboptimal.","commit_id":"f8a043b2a53c87ae0569add95b76ed7a20b1d66c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b9ba9a8ed6fdc058d93cbb905782ae61741c6bd1","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        for route in test_routes:"},{"line_number":328,"context_line":"            self.assertNotIn(route,"},{"line_number":329,"context_line":"                             show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027])"},{"line_number":330,"context_line":"        self.assertEmpty(show_body_after_deletion[\u0027router\u0027][\u0027routes\u0027])"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _delete_extra_routes(self, router_id):"},{"line_number":333,"context_line":"        self.client.delete_extra_routes(router_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7af24918_e7d4d0be","line":330,"updated":"2016-03-04 18:15:05.000000000","message":"This makes no sense. Please reread my comment on previous patch sets.","commit_id":"78c924ef7bfc6452f8e6e80feaa18a828d5c3608"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a0c0bed825b4e9cd2c1e3071393ba838437846dc","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        # Create a router"},{"line_number":280,"context_line":"        router \u003d self._create_router("},{"line_number":281,"context_line":"            data_utils.rand_name(\u0027router-\u0027), True)"},{"line_number":282,"context_line":"        self.addCleanup("},{"line_number":283,"context_line":"            self._delete_extra_routes,"},{"line_number":284,"context_line":"            router[\u0027id\u0027])"},{"line_number":285,"context_line":"        # Update router extra route, second ip of the range is"}],"source_content_type":"text/x-python","patch_set":14,"id":"5aef4532_9a7efcac","line":282,"updated":"2016-03-07 11:36:37.000000000","message":"I think this should be removed - the original _create_router already schedules a cleanup of the router itself. Why do we need cleanup of the extra routes additionally? At least it should be only scheduled after the routes are created, i.e. after L303 - but since you are now testing deletion, this becomes redundant.","commit_id":"ab7f80a2a1ac0ad47449bbc198adf5ec34bc9b2f"}]}
