)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8b54adf90c90ca38d57ebff1e34c0ccd2f70615e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix the belongsTo query parameter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The belongsTo query parameter is only supported by the v2.0"},{"line_number":10,"context_line":"token validation API. It would check the ID of the tenant passed"},{"line_number":11,"context_line":"to the belongsTo parameter against the tenant a token was scoped to."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit corrects the implementation, tests, and adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a8bc5a2_aa13210c","line":10,"range":{"start_line":10,"start_character":51,"end_line":10,"end_character":57},"updated":"2016-09-23 20:15:42.000000000","message":"project","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c2a60d87960bc13ede7e57dd69a1fb9dd7f0db8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix the belongsTo query parameter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The belongsTo query parameter is only supported by the v2.0"},{"line_number":10,"context_line":"token validation API. It would check the ID of the tenant passed"},{"line_number":11,"context_line":"to the belongsTo parameter against the tenant a token was scoped to."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit corrects the implementation, tests, and adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a8bc5a2_10e9a814","line":10,"in_reply_to":"5a8bc5a2_aa13210c","updated":"2016-09-23 21:05:46.000000000","message":"Done","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8b54adf90c90ca38d57ebff1e34c0ccd2f70615e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The belongsTo query parameter is only supported by the v2.0"},{"line_number":10,"context_line":"token validation API. It would check the ID of the tenant passed"},{"line_number":11,"context_line":"to the belongsTo parameter against the tenant a token was scoped to."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit corrects the implementation, tests, and adds"},{"line_number":14,"context_line":"documentation. It also moves the check to keystone.token.controller"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a8bc5a2_eaf529cb","line":11,"range":{"start_line":11,"start_character":39,"end_line":11,"end_character":45},"updated":"2016-09-23 20:15:42.000000000","message":"project","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c2a60d87960bc13ede7e57dd69a1fb9dd7f0db8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The belongsTo query parameter is only supported by the v2.0"},{"line_number":10,"context_line":"token validation API. It would check the ID of the tenant passed"},{"line_number":11,"context_line":"to the belongsTo parameter against the tenant a token was scoped to."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit corrects the implementation, tests, and adds"},{"line_number":14,"context_line":"documentation. It also moves the check to keystone.token.controller"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a8bc5a2_50d17056","line":11,"in_reply_to":"5a8bc5a2_eaf529cb","updated":"2016-09-23 21:05:46.000000000","message":"Done","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"}],"api-ref/source/v2-admin/admin-tokens.inc":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":114,"context_line":"tokens are in the ``/tokens/{tokenId}`` path. If the token is not"},{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":118,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_ccf7aef3","line":117,"range":{"start_line":117,"start_character":36,"end_line":117,"end_character":42},"updated":"2016-09-23 18:43:03.000000000","message":"project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"tokens are in the ``/tokens/{tokenId}`` path. If the token is not"},{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":118,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_ecd2aaff","line":117,"in_reply_to":"5a8bc5a2_ccf7aef3","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":118,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_2ce9f214","line":118,"range":{"start_line":118,"start_character":18,"end_line":118,"end_character":24},"updated":"2016-09-23 18:43:03.000000000","message":"project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":118,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_0ccef659","line":118,"in_reply_to":"5a8bc5a2_2ce9f214","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Validates a token and confirms that it belongs to a tenant, for performance."},{"line_number":145,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":146,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":147,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":148,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_ecc54a8e","line":146,"range":{"start_line":146,"start_character":36,"end_line":146,"end_character":42},"updated":"2016-09-23 18:43:03.000000000","message":"project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Validates a token and confirms that it belongs to a tenant, for performance."},{"line_number":145,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":146,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":147,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":148,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":149,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_acffc265","line":146,"in_reply_to":"5a8bc5a2_ecc54a8e","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":144,"context_line":"Validates a token and confirms that it belongs to a tenant, for performance."},{"line_number":145,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":146,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":147,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":148,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Normal response codes: 200,203,204"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_accb42a4","line":147,"range":{"start_line":147,"start_character":18,"end_line":147,"end_character":24},"updated":"2016-09-23 18:43:03.000000000","message":"project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":144,"context_line":"Validates a token and confirms that it belongs to a tenant, for performance."},{"line_number":145,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":146,"context_line":"the token scope against the ID of a tenant. If the token does"},{"line_number":147,"context_line":"not belong to the tenant specified in the query string a"},{"line_number":148,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Normal response codes: 200,203,204"}],"source_content_type":"text/x-c++src","patch_set":6,"id":"5a8bc5a2_cc024e6f","line":147,"in_reply_to":"5a8bc5a2_accb42a4","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8b54adf90c90ca38d57ebff1e34c0ccd2f70615e","unresolved":false,"context_lines":[{"line_number":113,"context_line":"Returns the permissions relevant to a particular client. Valid"},{"line_number":114,"context_line":"tokens are in the ``/tokens/{tokenId}`` path. If the token is not"},{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_8ade653d","line":116,"range":{"start_line":116,"start_character":39,"end_line":116,"end_character":45},"updated":"2016-09-23 20:15:42.000000000","message":"parameter\n\nSame applies below.","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c2a60d87960bc13ede7e57dd69a1fb9dd7f0db8","unresolved":false,"context_lines":[{"line_number":113,"context_line":"Returns the permissions relevant to a particular client. Valid"},{"line_number":114,"context_line":"tokens are in the ``/tokens/{tokenId}`` path. If the token is not"},{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_1092889e","line":116,"in_reply_to":"5a8bc5a2_8ade653d","updated":"2016-09-23 21:05:46.000000000","message":"Done","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8b54adf90c90ca38d57ebff1e34c0ccd2f70615e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_4abb7de5","line":118,"range":{"start_line":118,"start_character":49,"end_line":118,"end_character":55},"updated":"2016-09-23 20:15:42.000000000","message":"parameter","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c2a60d87960bc13ede7e57dd69a1fb9dd7f0db8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"valid, this call returns the ``itemNotFound (404)`` response code."},{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_90f4d8f2","line":118,"in_reply_to":"5a8bc5a2_4abb7de5","updated":"2016-09-23 21:05:46.000000000","message":"Done","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8b54adf90c90ca38d57ebff1e34c0ccd2f70615e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"},{"line_number":122,"context_line":"Error response codes: 413,405,404,403,401,400,503"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_ca214d4f","line":119,"range":{"start_line":119,"start_character":2,"end_line":119,"end_character":20},"updated":"2016-09-23 20:15:42.000000000","message":"Suggest use ``401 Unauthorized`` since this is the HTTP status string.\n\nSame applies below.","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c2a60d87960bc13ede7e57dd69a1fb9dd7f0db8","unresolved":false,"context_lines":[{"line_number":116,"context_line":"This method supports an optional query string ``belongsTo`` to check"},{"line_number":117,"context_line":"the token scope against the ID of a project. If the token does"},{"line_number":118,"context_line":"not belong to the project specified in the query string a"},{"line_number":119,"context_line":"``unauthorized (401)`` response code will be returned."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Normal response codes: 200,203"},{"line_number":122,"context_line":"Error response codes: 413,405,404,403,401,400,503"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"5a8bc5a2_b080f447","line":119,"in_reply_to":"5a8bc5a2_ca214d4f","updated":"2016-09-23 21:05:46.000000000","message":"This was the established convention according to line 115, but I can refactor.","commit_id":"07ef69cd683bf51691959a9aecd3aa93203af78a"}],"api-ref/source/v2-admin/parameters.yaml":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"# variables in query"},{"line_number":50,"context_line":"belongsTo:"},{"line_number":51,"context_line":"  description: |"},{"line_number":52,"context_line":"    Tenant ID to check against token scope."},{"line_number":53,"context_line":"  in: query"},{"line_number":54,"context_line":"  required: false"},{"line_number":55,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5a8bc5a2_ac42620e","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":10},"updated":"2016-09-23 18:43:03.000000000","message":"Project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"# variables in query"},{"line_number":50,"context_line":"belongsTo:"},{"line_number":51,"context_line":"  description: |"},{"line_number":52,"context_line":"    Tenant ID to check against token scope."},{"line_number":53,"context_line":"  in: query"},{"line_number":54,"context_line":"  required: false"},{"line_number":55,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5a8bc5a2_0c3c362e","line":52,"in_reply_to":"5a8bc5a2_ac42620e","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"}],"keystone/tests/unit/token/test_backends.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.assertRaises("},{"line_number":502,"context_line":"            exception.TokenNotFound,"},{"line_number":503,"context_line":"            self.token_provider_api.validate_token,"},{"line_number":504,"context_line":"            self.scoped_token_id)"},{"line_number":505,"context_line":"        self.assertRaises("},{"line_number":506,"context_line":"            exception.TokenNotFound,"},{"line_number":507,"context_line":"            self.token_provider_api.validate_v2_token,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_8cbe86d2","line":504,"updated":"2016-09-23 18:43:03.000000000","message":"no need to do the same thing twice.","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.assertRaises("},{"line_number":502,"context_line":"            exception.TokenNotFound,"},{"line_number":503,"context_line":"            self.token_provider_api.validate_token,"},{"line_number":504,"context_line":"            self.scoped_token_id)"},{"line_number":505,"context_line":"        self.assertRaises("},{"line_number":506,"context_line":"            exception.TokenNotFound,"},{"line_number":507,"context_line":"            self.token_provider_api.validate_v2_token,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_cc108eab","line":504,"in_reply_to":"5a8bc5a2_8cbe86d2","updated":"2016-09-23 18:49:43.000000000","message":"That\u0027s just the way the test was written - i can refactor it out though.","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        self.assertRaises("},{"line_number":510,"context_line":"            exception.TokenNotFound,"},{"line_number":511,"context_line":"            self.token_provider_api.validate_v2_token,"},{"line_number":512,"context_line":"            self.scoped_token_id)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def _check_scoped_tokens_are_valid(self):"},{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_acb502ef","line":512,"updated":"2016-09-23 18:43:03.000000000","message":"no need to do the same thing twice.","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        self.assertRaises("},{"line_number":510,"context_line":"            exception.TokenNotFound,"},{"line_number":511,"context_line":"            self.token_provider_api.validate_v2_token,"},{"line_number":512,"context_line":"            self.scoped_token_id)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def _check_scoped_tokens_are_valid(self):"},{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_ec6e2a2e","line":512,"in_reply_to":"5a8bc5a2_acb502ef","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def _check_scoped_tokens_are_valid(self):"},{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":516,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":517,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":518,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":519,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_acdee23c","line":516,"updated":"2016-09-23 18:43:03.000000000","message":"no need to do the same thing twice.","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    def _check_scoped_tokens_are_valid(self):"},{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":516,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":517,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":518,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":519,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_0c6a761a","line":516,"in_reply_to":"5a8bc5a2_acdee23c","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":516,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":517,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":518,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def _check_unscoped_tokens_are_valid(self):"},{"line_number":521,"context_line":"        self.token_provider_api.validate_token(self.unscoped_token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_2cf3b2d7","line":518,"updated":"2016-09-23 18:43:03.000000000","message":"no need to do the same thing twice.","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":516,"context_line":"        self.token_provider_api.validate_token(self.scoped_token_id)"},{"line_number":517,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":518,"context_line":"        self.token_provider_api.validate_v2_token(self.scoped_token_id)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def _check_unscoped_tokens_are_valid(self):"},{"line_number":521,"context_line":"        self.token_provider_api.validate_token(self.unscoped_token_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_2c79f2f6","line":518,"in_reply_to":"5a8bc5a2_2cf3b2d7","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"}],"keystone/token/controllers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3623fee45a02c944f89b8630b7cac910003d3832","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def _token_belongs_to(self, token, belongs_to):"},{"line_number":420,"context_line":"        \"\"\"Check if the token belongs to the right tenant."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        This is only used on v2 tokens.  The structural validity of the token"},{"line_number":423,"context_line":"        will have already been checked before this method is called."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        :param token: token reference"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_4097f58f","line":422,"range":{"start_line":422,"start_character":8,"end_line":422,"end_character":39},"updated":"2016-09-23 13:38:04.000000000","message":"This should be removed since it\u0027s in the v2 controller already.","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a65037f1b2a60402c4d5b2beca0c2b92e020c406","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def _token_belongs_to(self, token, belongs_to):"},{"line_number":420,"context_line":"        \"\"\"Check if the token belongs to the right tenant."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        This is only used on v2 tokens.  The structural validity of the token"},{"line_number":423,"context_line":"        will have already been checked before this method is called."},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        :param token: token reference"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_ed5b912c","line":422,"in_reply_to":"5a8bc5a2_4097f58f","updated":"2016-09-23 16:41:17.000000000","message":"Done","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9cca6f6a4f0f808feda4fe0a461a84b74c7cebc9","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        the content body."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        \"\"\""},{"line_number":448,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":449,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":450,"context_line":"        if belongs_to:"},{"line_number":451,"context_line":"            self._token_belongs_to(token, belongs_to)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_4c4cb0c7","line":448,"range":{"start_line":448,"start_character":21,"end_line":448,"end_character":52},"updated":"2016-09-23 00:51:27.000000000","message":"wuttt? damn do i love undocumented APIs.\n\nI opened a bug for this: https://bugs.launchpad.net/keystone/+bug/1626794","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3623fee45a02c944f89b8630b7cac910003d3832","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        the content body."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        \"\"\""},{"line_number":448,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":449,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":450,"context_line":"        if belongs_to:"},{"line_number":451,"context_line":"            self._token_belongs_to(token, belongs_to)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_606eb197","line":448,"range":{"start_line":448,"start_character":21,"end_line":448,"end_character":52},"in_reply_to":"5a8bc5a2_4c4cb0c7","updated":"2016-09-23 13:38:04.000000000","message":"the belongs_to line should be moved down to right before it\u0027s used.","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a65037f1b2a60402c4d5b2beca0c2b92e020c406","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        the content body."},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        \"\"\""},{"line_number":448,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":449,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":450,"context_line":"        if belongs_to:"},{"line_number":451,"context_line":"            self._token_belongs_to(token, belongs_to)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_ad9fc9b2","line":448,"in_reply_to":"5a8bc5a2_606eb197","updated":"2016-09-23 16:41:17.000000000","message":"Done","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3623fee45a02c944f89b8630b7cac910003d3832","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":449,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":450,"context_line":"        if belongs_to:"},{"line_number":451,"context_line":"            self._token_belongs_to(token, belongs_to)"},{"line_number":452,"context_line":"        return token"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    @controller.v2_deprecated"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_20a909e0","line":451,"updated":"2016-09-23 13:38:04.000000000","message":"This line of code is untested, see http://logs.openstack.org/97/375097/2/check/keystone-coverage-db-ubuntu-xenial/dcae2a7/cover/keystone_token_controllers_py.html","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3623fee45a02c944f89b8630b7cac910003d3832","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        Returns metadata about the token along any associated roles."},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        \"\"\""},{"line_number":464,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":465,"context_line":"        # TODO(ayoung) validate against revocation API"},{"line_number":466,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":467,"context_line":"        if belongs_to:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_e00801dc","line":464,"updated":"2016-09-23 13:38:04.000000000","message":"the belongs_to line should be moved down to right before it\u0027s used.","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a65037f1b2a60402c4d5b2beca0c2b92e020c406","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        Returns metadata about the token along any associated roles."},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        \"\"\""},{"line_number":464,"context_line":"        belongs_to \u003d request.params.get(\u0027belongsTo\u0027)"},{"line_number":465,"context_line":"        # TODO(ayoung) validate against revocation API"},{"line_number":466,"context_line":"        token \u003d self.token_provider_api.validate_v2_token(token_id)"},{"line_number":467,"context_line":"        if belongs_to:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_0db19d47","line":464,"in_reply_to":"5a8bc5a2_e00801dc","updated":"2016-09-23 16:41:17.000000000","message":"Done","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d5619bba519a4da5a30bb04e9834748b5dc099c3","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        return token_ref"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _token_belongs_to(self, token, belongs_to):"},{"line_number":420,"context_line":"        \"\"\"Check if the token belongs to the right tenant."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        :param token: token reference"},{"line_number":423,"context_line":"        :param belongs_to: project ID that the token belongs to"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_ccafae92","line":420,"range":{"start_line":420,"start_character":51,"end_line":420,"end_character":57},"updated":"2016-09-23 18:43:03.000000000","message":"project","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79d795c8923cdf9054e85bfa96a8731441ca00d7","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        return token_ref"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _token_belongs_to(self, token, belongs_to):"},{"line_number":420,"context_line":"        \"\"\"Check if the token belongs to the right tenant."},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        :param token: token reference"},{"line_number":423,"context_line":"        :param belongs_to: project ID that the token belongs to"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_8c64c649","line":420,"in_reply_to":"5a8bc5a2_ccafae92","updated":"2016-09-23 18:49:43.000000000","message":"Done","commit_id":"67694d22036234fd5f2bd50ff6aa50bd5a39b67e"}],"keystone/token/provider.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3623fee45a02c944f89b8630b7cac910003d3832","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            v2_token_data_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":249,"context_line":"            token \u003d v2_token_data_helper.v3_to_v2_token(v3_token_ref, token_id)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        # these are common things that happen regardless of token provider"},{"line_number":252,"context_line":"        self._is_valid_token(token)"},{"line_number":253,"context_line":"        return token"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_a016f9ee","line":251,"updated":"2016-09-23 13:38:04.000000000","message":"this comment should be changed from plural \"these\" to singular \"this\". Or just remove the comment since it\u0027s obvious.","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6de0a6a7e971a6b4f02fa3156bc3f2571930e50a","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            v2_token_data_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":249,"context_line":"            token \u003d v2_token_data_helper.v3_to_v2_token(v3_token_ref, token_id)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        # these are common things that happen regardless of token provider"},{"line_number":252,"context_line":"        self._is_valid_token(token)"},{"line_number":253,"context_line":"        return token"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_c2393f43","line":251,"in_reply_to":"5a8bc5a2_a016f9ee","updated":"2016-09-23 16:41:56.000000000","message":"Done","commit_id":"d3583d33bcc5b81c9a23518064692ef42102e235"}]}
