)]}'
{"keystone/tests/test_auth.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0088bc14f35cc70eb03d788e1156bd4cfbe6ae9f","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":304,"context_line":"            six.text_type(e))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_auth_unscoped_token_bad_project_without_debug(self):"},{"line_number":307,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":308,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":309,"context_line":"        # when the user accidentally passes a project name as an ID."}],"source_content_type":"text/x-python","patch_set":4,"id":"fabf19d9_ae10afa9","line":306,"updated":"2015-04-18 13:19:03.000000000","message":"why it\u0027s unscoped token when tenant is given?","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"67777eb8339ff374a1eee7979f7c4439a4eaa0e7","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":304,"context_line":"            six.text_type(e))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def test_auth_unscoped_token_bad_project_without_debug(self):"},{"line_number":307,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":308,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":309,"context_line":"        # when the user accidentally passes a project name as an ID."}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_a2ae3096","line":306,"in_reply_to":"fabf19d9_ae10afa9","updated":"2015-05-01 18:53:11.000000000","message":"Yes I agree, they should be test_auth_scoped_token_bad_project_with_debug and est_auth_scoped_token_bad_project_without_debug","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9dced94d22a5dec9ec4c9d3073ce88ed6ac36322","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            tenant_id\u003dself.tenant_bar[\u0027name\u0027])"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # with debug disabled, authentication failure details are suppressed."},{"line_number":317,"context_line":"        self.config_fixture.config(debug\u003dFalse)"},{"line_number":318,"context_line":"        e \u003d self.assertRaises("},{"line_number":319,"context_line":"            exception.Unauthorized,"},{"line_number":320,"context_line":"            self.controller.authenticate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_0aa045a4","line":317,"updated":"2014-12-31 18:07:25.000000000","message":"I\u0027m wondering if we could return \"Project ID not found\" even with debug\u003dFalse... if the username and password are validated first, then I don\u0027t see a problem with reporting that the project doesn\u0027t exist. For example, I could authenticate to project A as long as I provide the right password and I\u0027ve got a role on A so I know it exists. Then I try to authenticate to project B and it says 401 Unauthorized... so it either doesn\u0027t exist or I don\u0027t have a role on it... what\u0027s the danger of telling the user that project B doesn\u0027t exist or I don\u0027t have a role on it (as long as my password was validated first)?","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4e8c5a99cd6a78b96157c2492da2ff4f2ba0f58a","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            tenant_id\u003dself.tenant_bar[\u0027name\u0027])"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # with debug disabled, authentication failure details are suppressed."},{"line_number":317,"context_line":"        self.config_fixture.config(debug\u003dFalse)"},{"line_number":318,"context_line":"        e \u003d self.assertRaises("},{"line_number":319,"context_line":"            exception.Unauthorized,"},{"line_number":320,"context_line":"            self.controller.authenticate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_cf516f0f","line":317,"in_reply_to":"3a961159_0aa045a4","updated":"2015-01-08 00:59:11.000000000","message":"Also, should note that an unscoped token request can be used to validate my username and password, so if I can get an unscoped token I can already tell if the project doens\u0027t exist.\n\nThe server should respond with 403 \"project ID not found or user doesn\u0027t have a role assignment on the project\"","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"62d14c9b1bb599a12153fa67c5d165bb09731486","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            tenant_id\u003dself.tenant_bar[\u0027name\u0027])"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # with debug disabled, authentication failure details are suppressed."},{"line_number":317,"context_line":"        self.config_fixture.config(debug\u003dFalse)"},{"line_number":318,"context_line":"        e \u003d self.assertRaises("},{"line_number":319,"context_line":"            exception.Unauthorized,"},{"line_number":320,"context_line":"            self.controller.authenticate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_6a6f09fd","line":317,"in_reply_to":"3a961159_0aa045a4","updated":"2014-12-31 19:27:32.000000000","message":"This makes sense to me except if applications or information about an application is separated at the project layer. Then I could see the case were we wouldn\u0027t want to acknowledge that a project exists.","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0088bc14f35cc70eb03d788e1156bd4cfbe6ae9f","unresolved":false,"context_lines":[{"line_number":314,"context_line":"            tenant_id\u003dself.tenant_bar[\u0027name\u0027])"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        # with debug disabled, authentication failure details are suppressed."},{"line_number":317,"context_line":"        self.config_fixture.config(debug\u003dFalse)"},{"line_number":318,"context_line":"        e \u003d self.assertRaises("},{"line_number":319,"context_line":"            exception.Unauthorized,"},{"line_number":320,"context_line":"            self.controller.authenticate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fabf19d9_ce0be37c","line":317,"in_reply_to":"3a961159_cf516f0f","updated":"2015-04-18 13:19:03.000000000","message":"++\nI think we should rename the these testcases, It\u0027s should be scoped token instead of unscoped if tenant_id is given. I believe `copy and paste cause` this issue.","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"}],"keystone/tests/unit/test_auth.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"716b2fc1f00d2a55cfe2f1f4ea63e09e0383cb25","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_auth_scoped_token_bad_project_with_debug(self):"},{"line_number":286,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":287,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":288,"context_line":"        # when the user accidentally passes a project name as an ID."},{"line_number":289,"context_line":"        # This test intentionally does exactly that."},{"line_number":290,"context_line":"        body_dict \u003d _build_user_auth("}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_89cefdb2","line":287,"updated":"2015-05-14 00:12:05.000000000","message":"I\u0027d prefer it if we didn\u0027t put bug #s for every test. The commit message already has the bug #.","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"dc4c5cd627f81b9453e704c097115c957f195bb6","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_auth_scoped_token_bad_project_with_debug(self):"},{"line_number":286,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":287,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":288,"context_line":"        # when the user accidentally passes a project name as an ID."},{"line_number":289,"context_line":"        # This test intentionally does exactly that."},{"line_number":290,"context_line":"        body_dict \u003d _build_user_auth("}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_81b582ce","line":287,"in_reply_to":"7a016987_89cefdb2","updated":"2015-05-15 02:41:34.000000000","message":"++","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"716b2fc1f00d2a55cfe2f1f4ea63e09e0383cb25","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        e \u003d self.assertRaises("},{"line_number":298,"context_line":"            exception.Unauthorized,"},{"line_number":299,"context_line":"            self.controller.authenticate,"},{"line_number":300,"context_line":"            {}, body_dict)"},{"line_number":301,"context_line":"        # explicitly verify that the error message shows that a *name* is"},{"line_number":302,"context_line":"        # found where an *ID* is expected"},{"line_number":303,"context_line":"        self.assertIn("}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_299f0961","line":300,"updated":"2015-05-14 00:12:05.000000000","message":"give a name to the {} magic value so reviewers know what it is.","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"716b2fc1f00d2a55cfe2f1f4ea63e09e0383cb25","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        # found where an *ID* is expected"},{"line_number":303,"context_line":"        self.assertIn("},{"line_number":304,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":305,"context_line":"            six.text_type(e))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def test_auth_scoped_token_bad_project_without_debug(self):"},{"line_number":308,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_c993d54e","line":305,"updated":"2015-05-14 00:12:05.000000000","message":"lines 297-305 is essentially assertRaisesRegexp -- https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaisesRegexp","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"dc4c5cd627f81b9453e704c097115c957f195bb6","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        # found where an *ID* is expected"},{"line_number":303,"context_line":"        self.assertIn("},{"line_number":304,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":305,"context_line":"            six.text_type(e))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def test_auth_scoped_token_bad_project_without_debug(self):"},{"line_number":308,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_21c5ae3b","line":305,"in_reply_to":"7a016987_c993d54e","updated":"2015-05-15 02:41:34.000000000","message":"how this line work in different translations? They affect the tests?","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"716b2fc1f00d2a55cfe2f1f4ea63e09e0383cb25","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            six.text_type(e))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def test_auth_scoped_token_bad_project_without_debug(self):"},{"line_number":308,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":309,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":310,"context_line":"        # when the user accidentally passes a project name as an ID."},{"line_number":311,"context_line":"        # This test intentionally does exactly that."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a016987_69a3c19f","line":308,"updated":"2015-05-14 00:12:05.000000000","message":"we\u0027ve got 2 tests with the same docstring... suggest add some text to differentiate. (or just remove the docstring since the name makes the point of the test obvious enough)","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"82dce0856aeb693cc185a6b35a0fa9b472ce2e4d","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        \"\"\"Authenticating with an invalid project fails.\"\"\""},{"line_number":309,"context_line":"        # Bug 1379952 reports poor user feedback, even in debug mode,"},{"line_number":310,"context_line":"        # when the user accidentally passes a project name as an ID."},{"line_number":311,"context_line":"        # This test intentionally does exactly that."},{"line_number":312,"context_line":"        body_dict \u003d _build_user_auth("},{"line_number":313,"context_line":"            username\u003dself.user_foo[\u0027name\u0027],"},{"line_number":314,"context_line":"            password\u003dself.user_foo[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_2a3d892b","line":311,"updated":"2015-05-13 03:14:03.000000000","message":"Hope the docstring and the comments here could be a little bit different within the case \"test_auth_scoped_token_bad_project_with_debug\", so it will be more clean what the different purposes between those two cases.","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":16165,"name":"Chenhong Liu","email":"liuchenhong@unitedstack.com","username":"liuchenhong"},"change_message_id":"a51e9a2e7fcb588dd69e4ef7a28ede62a4df2f8f","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            {}, body_dict)"},{"line_number":323,"context_line":"        # explicitly verify that the error message details above have been"},{"line_number":324,"context_line":"        # suppressed."},{"line_number":325,"context_line":"        self.assertNotIn("},{"line_number":326,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":327,"context_line":"            six.text_type(e))"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_de00eeac","line":325,"updated":"2015-05-13 06:09:46.000000000","message":"assertNotIn?\nI think you want \u0027assertIn\u0027 as you use in test_auth_scoped_token_bad_project_with_debug fucntion.\n\nIn my option, these two test cases share most of the code, why not define a common function which accept a argument as debug switch?\n\nAnd for compare two strings, why not use assertEqual?","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":16165,"name":"Chenhong Liu","email":"liuchenhong@unitedstack.com","username":"liuchenhong"},"change_message_id":"328eb8dc954ca1408adc702ceb71fa668767980e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            {}, body_dict)"},{"line_number":323,"context_line":"        # explicitly verify that the error message details above have been"},{"line_number":324,"context_line":"        # suppressed."},{"line_number":325,"context_line":"        self.assertNotIn("},{"line_number":326,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":327,"context_line":"            six.text_type(e))"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_c7225101","line":325,"in_reply_to":"9a0c5dc1_7868e887","updated":"2015-05-13 14:42:36.000000000","message":"Done","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d0d739766dde8e2faed9e831e3f8e889bf974b3a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            {}, body_dict)"},{"line_number":323,"context_line":"        # explicitly verify that the error message details above have been"},{"line_number":324,"context_line":"        # suppressed."},{"line_number":325,"context_line":"        self.assertNotIn("},{"line_number":326,"context_line":"            \u0027Project ID not found: %s\u0027 % self.tenant_bar[\u0027name\u0027],"},{"line_number":327,"context_line":"            six.text_type(e))"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a0c5dc1_7868e887","line":325,"in_reply_to":"9a0c5dc1_de00eeac","updated":"2015-05-13 12:53:34.000000000","message":"The comment above states why assertNotIn is correct here. This is testing the debug\u003dFalse case. I would not share the code here.","commit_id":"4bb70c4f82c7890b7d9a7c61229316735ba804cd"}],"keystone/token/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"576c9b72c8929c94fc3af39d438c80e21870a2e0","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                role_list \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":384,"context_line":"                    user_id, tenant_id)"},{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_79075b82","line":386,"updated":"2014-10-28 04:05:56.000000000","message":"Call it project?","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5b67fde3c8a7989b1eb1240eced00613f5b70d04","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                role_list \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":384,"context_line":"                    user_id, tenant_id)"},{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_bc520433","line":386,"in_reply_to":"9aa7fdbe_79075b82","updated":"2014-12-02 01:30:36.000000000","message":"Done, but it\u0027s still being passed into the method as a tenant_id, so it reads a little inconsistently IMO","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"712cb088fc85d59ad72c6ca68f4ba1b1a4555bfd","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    user_id, tenant_id)"},{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            if not role_list:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_10161349","line":387,"updated":"2014-11-26 11:42:43.000000000","message":"it didn\u0027t fit in one line?","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5b67fde3c8a7989b1eb1240eced00613f5b70d04","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    user_id, tenant_id)"},{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            if not role_list:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_8b7eee68","line":387,"in_reply_to":"5a890539_10161349","updated":"2014-12-02 01:30:36.000000000","message":"Done, but this layout matches the style of the exception raised below","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"638780031d6b6d6c1c8e045d76fdc9b29bb1dfed","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            if not role_list:"},{"line_number":391,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_0820c499","line":388,"updated":"2014-10-27 20:08:23.000000000","message":"do we have a test that asserts this is raised?","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"5b67fde3c8a7989b1eb1240eced00613f5b70d04","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            if not role_list:"},{"line_number":391,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_9c054816","line":388,"in_reply_to":"5a890539_502b3b81","updated":"2014-12-02 01:30:36.000000000","message":"Done in next patchset","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"712cb088fc85d59ad72c6ca68f4ba1b1a4555bfd","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            except exception.ProjectNotFound:"},{"line_number":386,"context_line":"                msg \u003d _(\u0027Tenant ID not found: %(t_id)s\u0027)"},{"line_number":387,"context_line":"                msg \u003d msg % {\u0027t_id\u0027: tenant_id}"},{"line_number":388,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"            if not role_list:"},{"line_number":391,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_502b3b81","line":388,"in_reply_to":"9aa7fdbe_0820c499","updated":"2014-11-26 11:42:43.000000000","message":"++","commit_id":"3c6e93ac5807d650652e6fb601a3cd131520b848"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"0088bc14f35cc70eb03d788e1156bd4cfbe6ae9f","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                role_list \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":379,"context_line":"                    user_id, tenant_id)"},{"line_number":380,"context_line":"            except exception.ProjectNotFound:"},{"line_number":381,"context_line":"                msg \u003d _(\u0027Project ID not found: %(t_id)s\u0027) % {\u0027t_id\u0027: tenant_id}"},{"line_number":382,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            if not role_list:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fabf19d9_ce82c3c8","line":381,"updated":"2015-04-18 13:19:03.000000000","message":"How about \"Project ID: %(t_id)s is not found\"?","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9dced94d22a5dec9ec4c9d3073ce88ed6ac36322","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                    user_id, tenant_id)"},{"line_number":380,"context_line":"            except exception.ProjectNotFound:"},{"line_number":381,"context_line":"                msg \u003d _(\u0027Project ID not found: %(t_id)s\u0027) % {\u0027t_id\u0027: tenant_id}"},{"line_number":382,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            if not role_list:"},{"line_number":385,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_8a93555b","line":382,"updated":"2014-12-31 18:07:25.000000000","message":"why log a warning at 387 and not here?","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"62d14c9b1bb599a12153fa67c5d165bb09731486","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                    user_id, tenant_id)"},{"line_number":380,"context_line":"            except exception.ProjectNotFound:"},{"line_number":381,"context_line":"                msg \u003d _(\u0027Project ID not found: %(t_id)s\u0027) % {\u0027t_id\u0027: tenant_id}"},{"line_number":382,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            if not role_list:"},{"line_number":385,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_aa7011db","line":382,"in_reply_to":"3a961159_8a93555b","updated":"2014-12-31 19:27:32.000000000","message":"++","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e18c86f7548cdad020deb7658d4e87651a10efc1","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                    user_id, tenant_id)"},{"line_number":380,"context_line":"            except exception.ProjectNotFound:"},{"line_number":381,"context_line":"                msg \u003d _(\u0027Project ID not found: %(t_id)s\u0027) % {\u0027t_id\u0027: tenant_id}"},{"line_number":382,"context_line":"                raise exception.Unauthorized(msg)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"            if not role_list:"},{"line_number":385,"context_line":"                msg \u003d _(\u0027User %(u_id)s is unauthorized for tenant %(t_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a0c5dc1_91f95350","line":382,"in_reply_to":"3a961159_aa7011db","updated":"2015-05-12 21:42:26.000000000","message":"do you really want a warning in the logs every time someone provides bad input? :-/ i think the other one should be removed, or at least reduced in severity.","commit_id":"9fb4d0e9d2540f3d5bf7b3f2ce952d45181140f3"}]}
