)]}'
{"keystone/catalog/controllers.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                self.catalog_api.delete_association_by_project("},{"line_number":412,"context_line":"                    project_or_endpoint_id)"},{"line_number":413,"context_line":"            except exception.NotImplemented:"},{"line_number":414,"context_line":"                # Some catalog drivers don\u0027t support this"},{"line_number":415,"context_line":"                pass"},{"line_number":416,"context_line":"        else:"},{"line_number":417,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_e30c9644","line":414,"range":{"start_line":414,"start_character":18,"end_line":414,"end_character":57},"updated":"2016-07-04 08:59:20.000000000","message":"It\u0027s only SQL and template driver, maybe just say template driver doesn\u0027t support this?","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"}],"keystone/tests/unit/test_v3.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                name\u003du\u0027Default\u0027)"},{"line_number":306,"context_line":"            self.resource_api.create_domain(DEFAULT_DOMAIN_ID, domain)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def load_sample_data(self, create_region_and_endpoints\u003dTrue):"},{"line_number":309,"context_line":"        self._populate_default_domain()"},{"line_number":310,"context_line":"        self.domain \u003d unit.new_domain_ref()"},{"line_number":311,"context_line":"        self.domain_id \u003d self.domain[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_63bc266d","line":308,"range":{"start_line":308,"start_character":31,"end_line":308,"end_character":58},"updated":"2016-07-04 08:59:20.000000000","message":"service is not allowed as well, pls change the name of this argument.","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"}],"keystone/tests/unit/test_v3_catalog.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2c75792d44b94495eb8055b5480cc1be754fcfb","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"    def test_project_delete(self):"},{"line_number":955,"context_line":"        self.resource_api.delete_project(self.project_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_fc9f1eb2","line":955,"range":{"start_line":955,"start_character":8,"end_line":955,"end_character":57},"updated":"2016-07-04 02:04:40.000000000","message":"a comment or docstring on why this test exists would be good for future devs","commit_id":"990c5e74e047f94cf801c271755fdcb057019257"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18cf99af711f0ce7d7e2479f3d9b81e661a0707b","unresolved":false,"context_lines":[{"line_number":956,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def test_project_delete(self):"},{"line_number":959,"context_line":"        \"\"\"Delete project triggers notifications to catalog API.\"\"\""},{"line_number":960,"context_line":"        self.resource_api.delete_project(self.project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_fcba7ebf","line":959,"range":{"start_line":959,"start_character":8,"end_line":959,"end_character":67},"updated":"2016-07-04 02:28:53.000000000","message":"If I may add a bit more here....\n\n\"\"\"\nDeleting a project should not result in an 500 ISE\n\nThe EndpointFilter extension of the Catalog API will create a notification when a project is deleted (attempting to clean up project-\u003eendpoint relationships). In the case of a templated catalog, no deletions (via catalog_api.delete_association_by_project) can be performed and result in a NotImplemented exception. We catch this exception and ignore it since it is expected.","commit_id":"48d85a918098e6fec1dbf5ca234796e6c8481d10"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        self.assertEqual(entity[\u0027region_id\u0027], entity[\u0027region\u0027])"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"class TestCatalogAPITemplatedProject(test_v3.RestfulTestCase):"},{"line_number":946,"context_line":"    \"\"\"Templated Catalog doesn\u0027t support full API."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    Eg. No region/endpoint creation."},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"    \"\"\""},{"line_number":951,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_43e2cad6","line":948,"range":{"start_line":945,"start_character":0,"end_line":948,"end_character":36},"updated":"2016-07-04 08:59:20.000000000","message":"This seems okay but I prefer to test this in the existing module rather than create a new one.\n\npls see:\nhttps://github.com/openstack/keystone/blob/master/keystone/tests/unit/test_backend_templated.py","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"62565420cb93f2e0ce8c6b4b761d2657d2254ec5","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        self.assertEqual(entity[\u0027region_id\u0027], entity[\u0027region\u0027])"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"class TestCatalogAPITemplatedProject(test_v3.RestfulTestCase):"},{"line_number":946,"context_line":"    \"\"\"Templated Catalog doesn\u0027t support full API."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    Eg. No region/endpoint creation."},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"    \"\"\""},{"line_number":951,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_4558e932","line":948,"range":{"start_line":945,"start_character":0,"end_line":948,"end_character":36},"in_reply_to":"1aa78d24_43e2cad6","updated":"2016-07-05 04:19:57.000000000","message":"I don\u0027t think I can use that class because I need to be able to delete a project which needs test_v3.RestfulTestCase from my limited understanding.","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        self.config_fixture.config(group\u003d\u0027catalog\u0027, driver\u003d\u0027templated\u0027)"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":957,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_a383aecb","line":957,"range":{"start_line":957,"start_character":8,"end_line":957,"end_character":64},"updated":"2016-07-04 08:59:20.000000000","message":"I feel this change is not need if test this in test_backend_templated.py.","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1d058fd25928a946c07b6883d06008f189766f18","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        self.config_fixture.config(group\u003d\u0027catalog\u0027, driver\u003d\u0027templated\u0027)"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":957,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_8596514a","line":957,"range":{"start_line":957,"start_character":8,"end_line":957,"end_character":64},"in_reply_to":"1aa78d24_a383aecb","updated":"2016-07-05 04:32:42.000000000","message":"same reasoning as Sam said in the other comment, we need to test it here and not in the backend, since it\u0027s the notification (at the controller level) that causes the behaviour seen in the bug. If we test the backend only we won\u0027t see the exception being raised","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":956,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":957,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        The EndpointFilter extension of the Catalog API will create a"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_c33cfa31","line":959,"range":{"start_line":959,"start_character":8,"end_line":959,"end_character":27},"updated":"2016-07-04 08:59:20.000000000","message":"The name could more illustrative itself, maybe test_ignore_ise_on_delete_project or something like that?","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"62565420cb93f2e0ce8c6b4b761d2657d2254ec5","unresolved":false,"context_lines":[{"line_number":956,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":957,"context_line":"        self.load_sample_data(create_region_and_endpoints\u003dFalse)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        The EndpointFilter extension of the Catalog API will create a"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_25a95de0","line":959,"range":{"start_line":959,"start_character":8,"end_line":959,"end_character":27},"in_reply_to":"1aa78d24_c33cfa31","updated":"2016-07-05 04:19:57.000000000","message":"Yeah I\u0027m not sure the best name for this. The test is to ensure you can delete a project when using the templated catalog driver. The test name you suggested is a bit confusing too I think","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c8aea4dcbbcfa61d6f61cd5da67c13269ae95081","unresolved":false,"context_lines":[{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        The EndpointFilter extension of the Catalog API will create a"},{"line_number":963,"context_line":"        notification when a project is deleted (attempting to clean up"},{"line_number":964,"context_line":"        project-\u003eendpoint relationships). In the case of a templated catalog,"},{"line_number":965,"context_line":"        no deletions (via catalog_api.delete_association_by_project) can be"},{"line_number":966,"context_line":"        performed and result in a NotImplemented exception. We catch this"},{"line_number":967,"context_line":"        exception and ignore it since it is expected."},{"line_number":968,"context_line":"        \"\"\""},{"line_number":969,"context_line":"        self.resource_api.delete_project(self.project_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_5e373db0","line":967,"range":{"start_line":962,"start_character":0,"end_line":967,"end_character":53},"updated":"2016-07-04 08:59:20.000000000","message":"++","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"62565420cb93f2e0ce8c6b4b761d2657d2254ec5","unresolved":false,"context_lines":[{"line_number":959,"context_line":"    def test_project_delete(self):"},{"line_number":960,"context_line":"        \"\"\"Deleting a project should not result in an 500 ISE."},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"        The EndpointFilter extension of the Catalog API will create a"},{"line_number":963,"context_line":"        notification when a project is deleted (attempting to clean up"},{"line_number":964,"context_line":"        project-\u003eendpoint relationships). In the case of a templated catalog,"},{"line_number":965,"context_line":"        no deletions (via catalog_api.delete_association_by_project) can be"},{"line_number":966,"context_line":"        performed and result in a NotImplemented exception. We catch this"},{"line_number":967,"context_line":"        exception and ignore it since it is expected."},{"line_number":968,"context_line":"        \"\"\""},{"line_number":969,"context_line":"        self.resource_api.delete_project(self.project_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_85b01145","line":967,"range":{"start_line":962,"start_character":0,"end_line":967,"end_character":53},"in_reply_to":"1aa78d24_5e373db0","updated":"2016-07-05 04:19:57.000000000","message":"These are words from a keystone core","commit_id":"8232f4f23c1c33a6e45073386f40e79139d9b980"}]}
