)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"a0e8f2aadf78b372c602daf553e1aa5471e00c14","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dongcan Ye \u003chellochosen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-15 22:28:19 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tempest test for l2-ha extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add missing l3-ha extension under neutron tempest tests."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f013ff3_c2a3284f","line":7,"updated":"2017-05-15 14:36:02.000000000","message":"l2-ha -\u003e l3-ha","commit_id":"fa37cd3871e3ad0b0b4bb848f10bb204ce55f3fd"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"98120b010d8e732d9084a55ba05d0e620dce59aa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dongcan Ye \u003chellochosen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-15 22:28:19 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tempest test for l2-ha extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add missing l3-ha extension under neutron tempest tests."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f013ff3_850f6a2d","line":7,"in_reply_to":"1f013ff3_c2a3284f","updated":"2017-05-15 14:41:37.000000000","message":"Done","commit_id":"fa37cd3871e3ad0b0b4bb848f10bb204ce55f3fd"}],"neutron/tests/tempest/api/admin/test_routers_ha.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        name \u003d data_utils.rand_name(\u0027pretest-check\u0027)"},{"line_number":34,"context_line":"        router \u003d cls.admin_client.create_router(name)"},{"line_number":35,"context_line":"        if \u0027ha\u0027 not in router[\u0027router\u0027]:"},{"line_number":36,"context_line":"            msg \u003d \"\u0027ha\u0027 attribute not found. HA Possibly not enabled\""},{"line_number":37,"context_line":"            raise cls.skipException(msg)"},{"line_number":38,"context_line":"        cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_a9dc9418","line":36,"updated":"2017-05-14 23:48:31.000000000","message":"In the case you enter the if block, you are going to leak the created router. Would be better if you add a cleanup","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        name \u003d data_utils.rand_name(\u0027pretest-check\u0027)"},{"line_number":34,"context_line":"        router \u003d cls.admin_client.create_router(name)"},{"line_number":35,"context_line":"        if \u0027ha\u0027 not in router[\u0027router\u0027]:"},{"line_number":36,"context_line":"            msg \u003d \"\u0027ha\u0027 attribute not found. HA Possibly not enabled\""},{"line_number":37,"context_line":"            raise cls.skipException(msg)"},{"line_number":38,"context_line":"        cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_1f95e7e4","line":36,"in_reply_to":"1f013ff3_a9dc9418","updated":"2017-05-15 14:25:33.000000000","message":"Done","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278abc177d-14f1-4018-9f01-589b299cbee1\u0027)"},{"line_number":41,"context_line":"    def test_ha_router_creation(self):"},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":44,"context_line":"        HA (High Availability) router using the ha\u003dTrue."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Acceptance"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_c973604d","line":43,"range":{"start_line":43,"start_character":48,"end_line":43,"end_character":55},"updated":"2017-05-14 23:48:31.000000000","message":"create","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @decorators.idempotent_id(\u00278abc177d-14f1-4018-9f01-589b299cbee1\u0027)"},{"line_number":41,"context_line":"    def test_ha_router_creation(self):"},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":44,"context_line":"        HA (High Availability) router using the ha\u003dTrue."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Acceptance"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_df9e5f06","line":43,"range":{"start_line":43,"start_character":48,"end_line":43,"end_character":55},"in_reply_to":"1f013ff3_c973604d","updated":"2017-05-15 14:25:33.000000000","message":"Done","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    @decorators.idempotent_id(\u002797b5f7ef-2192-4fa3-901e-979cd5c1097a\u0027)"},{"line_number":56,"context_line":"    def test_legacy_router_creation(self):"},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":59,"context_line":"        SF (Single Failure) router using the ha\u003dFalse."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        Acceptance"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_a98ed424","line":58,"range":{"start_line":58,"start_character":48,"end_line":58,"end_character":55},"updated":"2017-05-14 23:48:31.000000000","message":"create","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    @decorators.idempotent_id(\u002797b5f7ef-2192-4fa3-901e-979cd5c1097a\u0027)"},{"line_number":56,"context_line":"    def test_legacy_router_creation(self):"},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":59,"context_line":"        SF (Single Failure) router using the ha\u003dFalse."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        Acceptance"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_22d2cc5d","line":58,"range":{"start_line":58,"start_character":48,"end_line":58,"end_character":55},"in_reply_to":"1f013ff3_a98ed424","updated":"2017-05-15 14:25:33.000000000","message":"Done","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @decorators.idempotent_id(\u00275a6bfe82-5b23-45a4-b027-5160997d4753\u0027)"},{"line_number":73,"context_line":"    def test_legacy_router_update_to_ha(self):"},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":76,"context_line":"        SF (Single Failure) router using the ha\u003dFalse."},{"line_number":77,"context_line":"        Then it will \"update\" the router ha attribute to True"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_89931850","line":75,"range":{"start_line":75,"start_character":48,"end_line":75,"end_character":55},"updated":"2017-05-14 23:48:31.000000000","message":"create","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @decorators.idempotent_id(\u00275a6bfe82-5b23-45a4-b027-5160997d4753\u0027)"},{"line_number":73,"context_line":"    def test_legacy_router_update_to_ha(self):"},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":76,"context_line":"        SF (Single Failure) router using the ha\u003dFalse."},{"line_number":77,"context_line":"        Then it will \"update\" the router ha attribute to True"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_02d7d04d","line":75,"range":{"start_line":75,"start_character":48,"end_line":75,"end_character":55},"in_reply_to":"1f013ff3_89931850","updated":"2017-05-15 14:25:33.000000000","message":"Done","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"}],"neutron/tests/tempest/api/test_routers.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        super(HaRoutersTest, cls).skip_checks()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @decorators.idempotent_id(\u0027d46e2dc7-0c5a-40ba-8aec-9d5bfd079618\u0027)"},{"line_number":270,"context_line":"    def test_create_ha_router(self):"},{"line_number":271,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":272,"context_line":"        create_body \u003d self.admin_client.create_router("},{"line_number":273,"context_line":"            name, ha\u003dTrue)"},{"line_number":274,"context_line":"        self.addCleanup(self._delete_router,"},{"line_number":275,"context_line":"                        create_body[\u0027router\u0027][\u0027id\u0027],"},{"line_number":276,"context_line":"                        self.admin_client)"},{"line_number":277,"context_line":"        self.assertTrue(create_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @decorators.idempotent_id(\u002777db8eae-3aa3-4e61-bf2a-e739ce042e53\u0027)"},{"line_number":280,"context_line":"    def test_convert_legacy_router(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_09cca887","line":277,"range":{"start_line":270,"start_character":0,"end_line":277,"end_character":52},"updated":"2017-05-14 23:48:31.000000000","message":"This whole test case is almost identical to https://review.openstack.org/#/c/462013/2/neutron/tests/tempest/api/admin/test_routers_ha.py@41. Why duplicate it here?","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        super(HaRoutersTest, cls).skip_checks()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    @decorators.idempotent_id(\u0027d46e2dc7-0c5a-40ba-8aec-9d5bfd079618\u0027)"},{"line_number":270,"context_line":"    def test_create_ha_router(self):"},{"line_number":271,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":272,"context_line":"        create_body \u003d self.admin_client.create_router("},{"line_number":273,"context_line":"            name, ha\u003dTrue)"},{"line_number":274,"context_line":"        self.addCleanup(self._delete_router,"},{"line_number":275,"context_line":"                        create_body[\u0027router\u0027][\u0027id\u0027],"},{"line_number":276,"context_line":"                        self.admin_client)"},{"line_number":277,"context_line":"        self.assertTrue(create_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @decorators.idempotent_id(\u002777db8eae-3aa3-4e61-bf2a-e739ce042e53\u0027)"},{"line_number":280,"context_line":"    def test_convert_legacy_router(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_9fb1f792","line":277,"range":{"start_line":270,"start_character":0,"end_line":277,"end_character":52},"in_reply_to":"1f013ff3_09cca887","updated":"2017-05-15 14:25:33.000000000","message":"Yes, I will remove these and keep in admin side.","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"3ea8bd09521c8eea1bd33b203b5be12dba51bdb9","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        self.assertTrue(create_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @decorators.idempotent_id(\u002777db8eae-3aa3-4e61-bf2a-e739ce042e53\u0027)"},{"line_number":280,"context_line":"    def test_convert_legacy_router(self):"},{"line_number":281,"context_line":"        router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":282,"context_line":"        self.assertNotIn(\u0027ha\u0027, router)"},{"line_number":283,"context_line":"        update_body \u003d self.admin_client.update_router(router[\u0027id\u0027],"},{"line_number":284,"context_line":"                                                      ha\u003dTrue)"},{"line_number":285,"context_line":"        self.assertTrue(update_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":286,"context_line":"        show_body \u003d self.admin_client.show_router(router[\u0027id\u0027])"},{"line_number":287,"context_line":"        self.assertTrue(show_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":288,"context_line":"        show_body \u003d self.client.show_router(router[\u0027id\u0027])"},{"line_number":289,"context_line":"        self.assertNotIn(\u0027ha\u0027, show_body[\u0027router\u0027])"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"class RoutersSearchCriteriaTest(base.BaseSearchCriteriaTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_4988701e","line":289,"range":{"start_line":280,"start_character":0,"end_line":289,"end_character":51},"updated":"2017-05-14 23:48:31.000000000","message":"Same here. This is very similar to what you are doing here: https://review.openstack.org/#/c/462013/2/neutron/tests/tempest/api/admin/test_routers_ha.py@73. Why do we need to duplicate this test case?","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"77608ce7dbb788469445803cb769c8464a8fdf59","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        self.assertTrue(create_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @decorators.idempotent_id(\u002777db8eae-3aa3-4e61-bf2a-e739ce042e53\u0027)"},{"line_number":280,"context_line":"    def test_convert_legacy_router(self):"},{"line_number":281,"context_line":"        router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":282,"context_line":"        self.assertNotIn(\u0027ha\u0027, router)"},{"line_number":283,"context_line":"        update_body \u003d self.admin_client.update_router(router[\u0027id\u0027],"},{"line_number":284,"context_line":"                                                      ha\u003dTrue)"},{"line_number":285,"context_line":"        self.assertTrue(update_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":286,"context_line":"        show_body \u003d self.admin_client.show_router(router[\u0027id\u0027])"},{"line_number":287,"context_line":"        self.assertTrue(show_body[\u0027router\u0027][\u0027ha\u0027])"},{"line_number":288,"context_line":"        show_body \u003d self.client.show_router(router[\u0027id\u0027])"},{"line_number":289,"context_line":"        self.assertNotIn(\u0027ha\u0027, show_body[\u0027router\u0027])"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"class RoutersSearchCriteriaTest(base.BaseSearchCriteriaTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_8294008d","line":289,"range":{"start_line":280,"start_character":0,"end_line":289,"end_character":51},"in_reply_to":"1f013ff3_4988701e","updated":"2017-05-15 14:25:33.000000000","message":"Thanks, Miguel. I think this is different with the admin side. Here we create router with regular tenant and update the ha attribute in admin.","commit_id":"799afa4c67c7d73c810ba33754450b55c2f141ca"}]}
