)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"d12c195190d7d9f5579544cdc8e028aba8166a87","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Keystone returns internal server error if the the user"},{"line_number":8,"context_line":"doesn\u0027t send any token. This happens only for fernet"},{"line_number":9,"context_line":"token. This review returns 401 for fernet provider similar"},{"line_number":10,"context_line":"to other providers"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: 1526976"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a7e1126_868bc2c2","line":10,"range":{"start_line":10,"start_character":9,"end_line":10,"end_character":18},"updated":"2015-12-19 06:35:58.000000000","message":"one line summery (\u003c\u003d50 characters)\n\ndescription ... (\u003c\u003d72)","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"309c4113238c503f5356d67ea278922837ba3b8b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Keystone returns internal server error if the the user"},{"line_number":8,"context_line":"doesn\u0027t send any token. This happens only for fernet"},{"line_number":9,"context_line":"token. This review returns 401 for fernet provider similar"},{"line_number":10,"context_line":"to other providers"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: 1526976"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a7e1126_9575f432","line":10,"range":{"start_line":10,"start_character":9,"end_line":10,"end_character":18},"in_reply_to":"3a7e1126_868bc2c2","updated":"2015-12-21 16:18:22.000000000","message":"Done","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"bc82034e2b35527b57711d413be8e83e67e5eda9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix 500 error when no fernet token is passed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone returns internal server error if the the"},{"line_number":10,"context_line":"user doesn\u0027t send any token. This happens only for"},{"line_number":11,"context_line":"fernet token. This review returns 401 if the token"},{"line_number":12,"context_line":"is not passed. Logic is moved from provider to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a7e1126_d9271961","line":9,"updated":"2015-12-22 09:31:25.000000000","message":"nit: remove a \u0027the\u0027","commit_id":"27f845f53d8562d5ee09ecf0326781c0548b2fbc"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"a6d7b0a8d6463e94d2dda4df9b61c80d9b788753","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix 500 error when no fernet token is passed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone returns internal server error if the the"},{"line_number":10,"context_line":"user doesn\u0027t send any token. This happens only for"},{"line_number":11,"context_line":"fernet token. This review returns 401 if the token"},{"line_number":12,"context_line":"is not passed. Logic is moved from provider to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a7b0d38_9fdc0348","line":9,"in_reply_to":"3a7e1126_d9271961","updated":"2015-12-22 16:02:06.000000000","message":"Done","commit_id":"27f845f53d8562d5ee09ecf0326781c0548b2fbc"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"37edf25c866dfabc7e0e92f7d852e69488d8c4e2","unresolved":false,"context_lines":[{"line_number":4290,"context_line":"        self.assertEqual(1, len(tokens))"},{"line_number":4291,"context_line":"        self.assertIn(token_id5, tokens)"},{"line_number":4292,"context_line":""},{"line_number":4293,"context_line":"    def test_get_token_returns_not_found(self):"},{"line_number":4294,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4295,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4296,"context_line":"                          uuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_13e020cc","side":"PARENT","line":4293,"range":{"start_line":4293,"start_character":4,"end_line":4293,"end_character":47},"updated":"2015-12-22 08:41:52.000000000","message":"why were these tests removed? state why in the commit message","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"1ab2fec51da974c3456ae6e5474410bcadbaf826","unresolved":false,"context_lines":[{"line_number":4290,"context_line":"        self.assertEqual(1, len(tokens))"},{"line_number":4291,"context_line":"        self.assertIn(token_id5, tokens)"},{"line_number":4292,"context_line":""},{"line_number":4293,"context_line":"    def test_get_token_returns_not_found(self):"},{"line_number":4294,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4295,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4296,"context_line":"                          uuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_169ec362","side":"PARENT","line":4293,"range":{"start_line":4293,"start_character":4,"end_line":4293,"end_character":47},"in_reply_to":"3a7e1126_13e020cc","updated":"2015-12-22 12:53:56.000000000","message":"since the relevant code has been removed in this patch\nhttps://review.openstack.org/#/c/259563/6/keystone/token/persistence/core.py","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"a6d7b0a8d6463e94d2dda4df9b61c80d9b788753","unresolved":false,"context_lines":[{"line_number":4290,"context_line":"        self.assertEqual(1, len(tokens))"},{"line_number":4291,"context_line":"        self.assertIn(token_id5, tokens)"},{"line_number":4292,"context_line":""},{"line_number":4293,"context_line":"    def test_get_token_returns_not_found(self):"},{"line_number":4294,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4295,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4296,"context_line":"                          uuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_5fe77b12","side":"PARENT","line":4293,"range":{"start_line":4293,"start_character":4,"end_line":4293,"end_character":47},"in_reply_to":"3a7e1126_169ec362","updated":"2015-12-22 16:02:06.000000000","message":"Done","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"dbcbf34f3733becbcbb680b8593e9de085f47e56","unresolved":false,"context_lines":[{"line_number":4293,"context_line":"    def test_get_token_returns_not_found(self):"},{"line_number":4294,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4295,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4296,"context_line":"                          uuid.uuid4().hex)"},{"line_number":4297,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4298,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4299,"context_line":"                          None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a7b0d38_6852badf","side":"PARENT","line":4296,"range":{"start_line":4296,"start_character":42,"end_line":4296,"end_character":43},"updated":"2015-12-22 18:59:19.000000000","message":"I thought we agreed not to remove this test. Only the second one as it is redundant.","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"09d305ea2672a3ef33cd0f9ef211400bca178ff8","unresolved":false,"context_lines":[{"line_number":4293,"context_line":"    def test_get_token_returns_not_found(self):"},{"line_number":4294,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4295,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4296,"context_line":"                          uuid.uuid4().hex)"},{"line_number":4297,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":4298,"context_line":"                          self.token_provider_api._persistence.get_token,"},{"line_number":4299,"context_line":"                          None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a7b0d38_e316cd54","side":"PARENT","line":4296,"range":{"start_line":4296,"start_character":42,"end_line":4296,"end_character":43},"in_reply_to":"1a7b0d38_6852badf","updated":"2015-12-22 19:39:00.000000000","message":"OK, I will put it back","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"}],"keystone/tests/unit/test_token_provider.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"d12c195190d7d9f5579544cdc8e028aba8166a87","unresolved":false,"context_lines":[{"line_number":784,"context_line":"    def test_no_token_raises_token_not_found(self):"},{"line_number":785,"context_line":"        self.assertRaises("},{"line_number":786,"context_line":"            exception.TokenNotFound,"},{"line_number":787,"context_line":"            self.token_provider_api.validate_v3_token,"},{"line_number":788,"context_line":"            None)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"# NOTE(ayoung): renamed to avoid automatic test detection"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_46faba44","line":787,"range":{"start_line":787,"start_character":17,"end_line":787,"end_character":35},"updated":"2015-12-19 06:35:58.000000000","message":"change to:\n self.token_provider_api.validate_token\n\nwhere `_validate_token` is actually called.","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"143bbb057c2b60565fe768de2708fc767327be85","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            exception.TokenNotFound,"},{"line_number":787,"context_line":"            self.token_provider_api.validate_v3_token,"},{"line_number":788,"context_line":"            None)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"# NOTE(ayoung): renamed to avoid automatic test detection"},{"line_number":791,"context_line":"class PKIProviderTests(object):"},{"line_number":792,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_e6116605","line":789,"updated":"2015-12-19 05:43:40.000000000","message":"add another new line here to pass pep8","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"309c4113238c503f5356d67ea278922837ba3b8b","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            exception.TokenNotFound,"},{"line_number":787,"context_line":"            self.token_provider_api.validate_v3_token,"},{"line_number":788,"context_line":"            None)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"# NOTE(ayoung): renamed to avoid automatic test detection"},{"line_number":791,"context_line":"class PKIProviderTests(object):"},{"line_number":792,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_95ac148d","line":789,"in_reply_to":"3a7e1126_e6116605","updated":"2015-12-21 16:18:22.000000000","message":"Done","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"}],"keystone/tests/unit/test_v3_auth.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1781a3a2e97a548bcf9b539c92f76a3b3c08cdf1","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        self.assertValidUnscopedTokenResponse(r)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def test_validate_missing_subject_token(self):"},{"line_number":407,"context_line":"        self.get(\u0027/auth/tokens\u0027, expected_status\u003d404)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_validate_missing_auth_token(self):"},{"line_number":410,"context_line":"        self.admin_request("}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_7ffca03e","line":407,"range":{"start_line":407,"start_character":49,"end_line":407,"end_character":52},"updated":"2015-12-23 03:55:48.000000000","message":"instead of 404, use http_client.NOT_FOUND","commit_id":"0fdf06d62479808f67cf7b10bde3d580b7ed7542"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"513978a8e0cb2c1cb961e03d30825de87c45d3cc","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        self.assertValidUnscopedTokenResponse(r)"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def test_validate_missing_subject_token(self):"},{"line_number":407,"context_line":"        self.get(\u0027/auth/tokens\u0027, expected_status\u003d404)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_validate_missing_auth_token(self):"},{"line_number":410,"context_line":"        self.admin_request("}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_ba02163d","line":407,"range":{"start_line":407,"start_character":49,"end_line":407,"end_character":52},"in_reply_to":"1a7b0d38_7ffca03e","updated":"2015-12-23 04:55:42.000000000","message":"Will fix this","commit_id":"0fdf06d62479808f67cf7b10bde3d580b7ed7542"}],"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"6ec69cbaae7f073252ce2e8338d1ae26a319fca0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self.provider.validate_v2_token,"},{"line_number":61,"context_line":"            uuid.uuid4().hex)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class TestValidate(unit.TestCase):"},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestValidate, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_837f3e65","side":"PARENT","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":0},"updated":"2015-12-18 19:26:50.000000000","message":"need to back out of this change","commit_id":"25e0af566fa3952c0e0fb612fa82f9d774ab9a64"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"e5c986981b545b223aa89d1f2c1640e3f9034878","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self.provider.validate_v2_token,"},{"line_number":61,"context_line":"            uuid.uuid4().hex)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class TestValidate(unit.TestCase):"},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestValidate, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_04b83129","side":"PARENT","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":0},"in_reply_to":"3a7e1126_837f3e65","updated":"2015-12-18 22:37:21.000000000","message":"done","commit_id":"25e0af566fa3952c0e0fb612fa82f9d774ab9a64"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"143bbb057c2b60565fe768de2708fc767327be85","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            self.provider.validate_v3_token,"},{"line_number":55,"context_line":"            uuid.uuid4().hex)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_invalid_v2_token_raises_token_not_found(self):"},{"line_number":58,"context_line":"        self.assertRaises("},{"line_number":59,"context_line":"            exception.TokenNotFound,"},{"line_number":60,"context_line":"            self.provider.validate_v2_token,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_c60c6aee","side":"PARENT","line":57,"range":{"start_line":57,"start_character":3,"end_line":57,"end_character":59},"updated":"2015-12-19 05:43:40.000000000","message":"why was this removed?","commit_id":"25e0af566fa3952c0e0fb612fa82f9d774ab9a64"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"309c4113238c503f5356d67ea278922837ba3b8b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            self.provider.validate_v3_token,"},{"line_number":55,"context_line":"            uuid.uuid4().hex)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_invalid_v2_token_raises_token_not_found(self):"},{"line_number":58,"context_line":"        self.assertRaises("},{"line_number":59,"context_line":"            exception.TokenNotFound,"},{"line_number":60,"context_line":"            self.provider.validate_v2_token,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_552eacfb","side":"PARENT","line":57,"range":{"start_line":57,"start_character":3,"end_line":57,"end_character":59},"in_reply_to":"3a7e1126_0665921c","updated":"2015-12-21 16:18:22.000000000","message":"The flow always comes from controller and in the controller we are checking it. This method will never be called directly.  There are 2 options, add this check in every provider or add it in controller.  We have this bug because we forgot to add in fernet provider. Instead if move this check to controller, there is no necessity to add this check when a new provider is added","commit_id":"25e0af566fa3952c0e0fb612fa82f9d774ab9a64"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f781fe6aa2b8497220caac88957b44ec9615609f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            self.provider.validate_v3_token,"},{"line_number":55,"context_line":"            uuid.uuid4().hex)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_invalid_v2_token_raises_token_not_found(self):"},{"line_number":58,"context_line":"        self.assertRaises("},{"line_number":59,"context_line":"            exception.TokenNotFound,"},{"line_number":60,"context_line":"            self.provider.validate_v2_token,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_0665921c","side":"PARENT","line":57,"range":{"start_line":57,"start_character":3,"end_line":57,"end_character":59},"in_reply_to":"3a7e1126_c60c6aee","updated":"2015-12-19 06:41:00.000000000","message":"this testcase should be kept here.","commit_id":"25e0af566fa3952c0e0fb612fa82f9d774ab9a64"}],"keystone/token/persistence/core.py":[{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"bc82034e2b35527b57711d413be8e83e67e5eda9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_token(self, token_id):"},{"line_number":63,"context_line":"        if not token_id:"},{"line_number":64,"context_line":"            # NOTE(morganfainberg): There are cases when the"},{"line_number":65,"context_line":"            # context[\u0027token_id\u0027] will in-fact be None. This also saves"},{"line_number":66,"context_line":"            # a round-trip to the backend if we don\u0027t have a token_id."}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_f933f511","side":"PARENT","line":63,"updated":"2015-12-22 09:31:25.000000000","message":"please add the reason in commit-msg","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"a6d7b0a8d6463e94d2dda4df9b61c80d9b788753","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_token(self, token_id):"},{"line_number":63,"context_line":"        if not token_id:"},{"line_number":64,"context_line":"            # NOTE(morganfainberg): There are cases when the"},{"line_number":65,"context_line":"            # context[\u0027token_id\u0027] will in-fact be None. This also saves"},{"line_number":66,"context_line":"            # a round-trip to the backend if we don\u0027t have a token_id."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_1ff1f3cd","side":"PARENT","line":63,"in_reply_to":"3a7e1126_567f6b14","updated":"2015-12-22 16:02:06.000000000","message":"Done","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"1ab2fec51da974c3456ae6e5474410bcadbaf826","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def get_token(self, token_id):"},{"line_number":63,"context_line":"        if not token_id:"},{"line_number":64,"context_line":"            # NOTE(morganfainberg): There are cases when the"},{"line_number":65,"context_line":"            # context[\u0027token_id\u0027] will in-fact be None. This also saves"},{"line_number":66,"context_line":"            # a round-trip to the backend if we don\u0027t have a token_id."}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_567f6b14","side":"PARENT","line":63,"in_reply_to":"3a7e1126_f933f511","updated":"2015-12-22 12:53:56.000000000","message":"since the change here made these code redundant\nhttps://review.openstack.org/#/c/259563/6/keystone/token/provider.py","commit_id":"6aee4dde1056f42e8b353ca701f349beb1d3daea"}],"keystone/token/provider.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"d12c195190d7d9f5579544cdc8e028aba8166a87","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @MEMOIZE"},{"line_number":268,"context_line":"    def _validate_token(self, token_id):"},{"line_number":269,"context_line":"        if not token_id:"},{"line_number":270,"context_line":"            raise exception.TokenNotFound(token_id\u003d\u0027\u0027)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_c6da2a4b","line":270,"range":{"start_line":270,"start_character":18,"end_line":270,"end_character":27},"updated":"2015-12-19 06:35:58.000000000","message":"the message from this exception will be “Could not find token: ”.\n\ntry to make the message more accurate, maybe:\n\n  raise exception.TokenNotFound(_(\u0027empty or none token is given\u0027)) ?","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"309c4113238c503f5356d67ea278922837ba3b8b","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @MEMOIZE"},{"line_number":268,"context_line":"    def _validate_token(self, token_id):"},{"line_number":269,"context_line":"        if not token_id:"},{"line_number":270,"context_line":"            raise exception.TokenNotFound(token_id\u003d\u0027\u0027)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_3537604e","line":270,"range":{"start_line":270,"start_character":18,"end_line":270,"end_character":27},"in_reply_to":"3a7e1126_c6da2a4b","updated":"2015-12-21 16:18:22.000000000","message":"Done","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"d12c195190d7d9f5579544cdc8e028aba8166a87","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"},{"line_number":274,"context_line":"        token_ref \u003d self._persistence.get_token(token_id)"},{"line_number":275,"context_line":"        version \u003d self.driver.get_token_version(token_ref)"},{"line_number":276,"context_line":"        if version \u003d\u003d self.V3:"},{"line_number":277,"context_line":"            return self.driver.validate_v3_token(token_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_a66cbe35","line":274,"range":{"start_line":274,"start_character":25,"end_line":274,"end_character":37},"updated":"2015-12-19 06:35:58.000000000","message":"remove the code from PersistenceManager, code there is redundant and not needed anymore.\n\n\nhttps://github.com/openstack/keystone/blob/e6d8901109342b72d23ce394828827cca75b454d/keystone/token/persistence/core.py#L63-L67","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"309c4113238c503f5356d67ea278922837ba3b8b","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"},{"line_number":274,"context_line":"        token_ref \u003d self._persistence.get_token(token_id)"},{"line_number":275,"context_line":"        version \u003d self.driver.get_token_version(token_ref)"},{"line_number":276,"context_line":"        if version \u003d\u003d self.V3:"},{"line_number":277,"context_line":"            return self.driver.validate_v3_token(token_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a7e1126_d5429cad","line":274,"range":{"start_line":274,"start_character":25,"end_line":274,"end_character":37},"in_reply_to":"3a7e1126_a66cbe35","updated":"2015-12-21 16:18:22.000000000","message":"Done","commit_id":"6be57a9ec0552a2f621a9f0e6fcc72a25c62d045"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"37edf25c866dfabc7e0e92f7d852e69488d8c4e2","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @MEMOIZE"},{"line_number":268,"context_line":"    def _validate_token(self, token_id):"},{"line_number":269,"context_line":"        if not token_id:"},{"line_number":270,"context_line":"            raise exception.TokenNotFound(_(\u0027empty or none token is given\u0027))"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_1392604c","line":270,"range":{"start_line":270,"start_character":45,"end_line":270,"end_character":73},"updated":"2015-12-22 08:41:52.000000000","message":"nit: what about: \"No token in request\"  \"No token passed\"  \"Cannot identity token\"","commit_id":"27f845f53d8562d5ee09ecf0326781c0548b2fbc"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"a6d7b0a8d6463e94d2dda4df9b61c80d9b788753","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    @MEMOIZE"},{"line_number":268,"context_line":"    def _validate_token(self, token_id):"},{"line_number":269,"context_line":"        if not token_id:"},{"line_number":270,"context_line":"            raise exception.TokenNotFound(_(\u0027empty or none token is given\u0027))"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        if not self._needs_persistence:"},{"line_number":273,"context_line":"            return self.driver.validate_v3_token(token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_546d2231","line":270,"range":{"start_line":270,"start_character":45,"end_line":270,"end_character":73},"in_reply_to":"3a7e1126_1392604c","updated":"2015-12-22 16:02:06.000000000","message":"Done","commit_id":"27f845f53d8562d5ee09ecf0326781c0548b2fbc"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1781a3a2e97a548bcf9b539c92f76a3b3c08cdf1","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            return self.check_revocation_v3(token)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def validate_v3_token(self, token_id):"},{"line_number":253,"context_line":"        if not token_id:"},{"line_number":254,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        unique_id \u003d utils.generate_unique_id(token_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_3f63781c","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":24},"updated":"2015-12-23 03:55:48.000000000","message":"you probably don\u0027t need this here since _validate_token is called just before this step?","commit_id":"0fdf06d62479808f67cf7b10bde3d580b7ed7542"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"513978a8e0cb2c1cb961e03d30825de87c45d3cc","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            return self.check_revocation_v3(token)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def validate_v3_token(self, token_id):"},{"line_number":253,"context_line":"        if not token_id:"},{"line_number":254,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        unique_id \u003d utils.generate_unique_id(token_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_5af3f273","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":24},"in_reply_to":"1a7b0d38_3f63781c","updated":"2015-12-23 04:55:42.000000000","message":"No,  there are two code paths. If we are validating X-Auth-Token we are using one path and for X-Subject-Token we are using one more path.  validate_v3_token is called  when we are validating X-Auth-Token","commit_id":"0fdf06d62479808f67cf7b10bde3d580b7ed7542"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fd9537e75a8aba33df5a4db7f77afec721fbcf2f","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def validate_v3_token(self, token_id):"},{"line_number":253,"context_line":"        if not token_id:"},{"line_number":254,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        unique_id \u003d utils.generate_unique_id(token_id)"},{"line_number":257,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_dd258ac2","line":254,"range":{"start_line":254,"start_character":18,"end_line":254,"end_character":27},"updated":"2015-12-23 13:58:31.000000000","message":"i feel like this is needn\u0027t, no matter it\u0027s a authenticate an token based on the existing token (X-Subject-Token) or not.\n\ncode here is called before this method since there is a decorator there @controller.protected(). I think this apply both validate_v2_token from L223  or validate_v3_token.\n\n\nhttps://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L75-L78","commit_id":"171f0e2193f336c02646e4366764d53336b10c8b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"2c998c464b1eb51bd3e53bdcfd1eba8f841021ff","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def validate_v3_token(self, token_id):"},{"line_number":253,"context_line":"        if not token_id:"},{"line_number":254,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        unique_id \u003d utils.generate_unique_id(token_id)"},{"line_number":257,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_8c27c311","line":254,"range":{"start_line":254,"start_character":18,"end_line":254,"end_character":27},"in_reply_to":"1a7b0d38_354062a5","updated":"2015-12-24 01:22:11.000000000","message":"no, it\u0027s also handled within the decorator.\n\nsee: https://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L134-L138\n\nAnd acutally, there are duplicated code there, they are validated two times. I will try to clean it up with this in the future.","commit_id":"171f0e2193f336c02646e4366764d53336b10c8b"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"877988d7a0bcfcc3fa64a624e4efa9e09ad12e3e","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def validate_v3_token(self, token_id):"},{"line_number":253,"context_line":"        if not token_id:"},{"line_number":254,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        unique_id \u003d utils.generate_unique_id(token_id)"},{"line_number":257,"context_line":"        # NOTE(lbragstad): Only go to persistent storage if we have a token to"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a7b0d38_354062a5","line":254,"range":{"start_line":254,"start_character":18,"end_line":254,"end_character":27},"in_reply_to":"1a7b0d38_dd258ac2","updated":"2015-12-23 15:43:27.000000000","message":"please check the following 2 lines https://github.com/openstack/keystone/blob/master/keystone/auth/controllers.py#L528  and\n\nhttps://github.com/openstack/keystone/blob/master/keystone/auth/controllers.py#L544\n\nInside the method subject token is retrieved, but it is not validated for None.  @decorator will only handle X-Auth-Token case which is validate_token call","commit_id":"171f0e2193f336c02646e4366764d53336b10c8b"}],"keystone/token/providers/fernet/token_formatters.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f952aa7adf399f196a33cfa1546e77e32f9507fd","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        if not token:"},{"line_number":85,"context_line":"            raise exception.TokenNotFound(token_id\u003d\u0027\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        # TODO(lbragstad): Restore padding on token before decoding it."},{"line_number":88,"context_line":"        # Initially in Kilo, Fernet tokens were returned to the user with"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_d7542400","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":41},"updated":"2015-12-18 17:40:36.000000000","message":"this returns a 404","commit_id":"edf589fe186d5e2197a06fda5f774ca8877247f5"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"d14729baf21164270dd31031e24089f52712bfe3","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        if not token:"},{"line_number":85,"context_line":"            raise exception.TokenNotFound(token_id\u003d\u0027\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        # TODO(lbragstad): Restore padding on token before decoding it."},{"line_number":88,"context_line":"        # Initially in Kilo, Fernet tokens were returned to the user with"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_e86061d1","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":41},"in_reply_to":"3a7e1126_178cec7d","updated":"2015-12-18 18:58:26.000000000","message":"https://github.com/openstack/keystone/blob/e6d8901109342b72d23ce394828827cca75b454d/keystone/common/controller.py#L83\n\nIt is converted to 401 in build_check_credentials","commit_id":"edf589fe186d5e2197a06fda5f774ca8877247f5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"424b77e8f58a3c02211a9e2d4aa171e9ce384c40","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        if not token:"},{"line_number":85,"context_line":"            raise exception.TokenNotFound(token_id\u003d\u0027\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        # TODO(lbragstad): Restore padding on token before decoding it."},{"line_number":88,"context_line":"        # Initially in Kilo, Fernet tokens were returned to the user with"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_178cec7d","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":41},"in_reply_to":"3a7e1126_d7542400","updated":"2015-12-18 17:40:52.000000000","message":"https://github.com/openstack/keystone/blob/e6d8901109342b72d23ce394828827cca75b454d/keystone/exception.py#L309","commit_id":"edf589fe186d5e2197a06fda5f774ca8877247f5"}]}
