)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b932142ff686abb154c2b9c2ba2b0477949338dd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement Tempest client for Keystone v2 token API - v2.0/tokens/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Although some of the APIs have been implemented, many of the token related APIs are yet to be implemented such as"},{"line_number":12,"context_line":"list_revoked_token, list_endpoints_for_token, validate_token_head"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Idc351fdcce420bb42c00bab23460f32e3c66e9ce"},{"line_number":15,"context_line":"Co-Authored-By: Pramod Kumar Singh \u003cpk110e@att.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_6ba8298b","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":65},"updated":"2017-04-27 18:47:07.000000000","message":"This should be broken up into shorter lines","commit_id":"4e82689685442b7b76cab70199973e67538455f8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b3cdfa7974f3334f325141efa61425df1a6ecfbb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement Tempest client for Keystone v2 token API - v2.0/tokens/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Although some of the APIs have been implemented, many of the token related APIs are yet to be implemented such as"},{"line_number":12,"context_line":"list_revoked_token, list_endpoints_for_token, validate_token_head"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Idc351fdcce420bb42c00bab23460f32e3c66e9ce"},{"line_number":15,"context_line":"Co-Authored-By: Pramod Kumar Singh \u003cpk110e@att.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_77d7a64c","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":65},"in_reply_to":"5ff73747_6ba8298b","updated":"2017-05-01 22:03:08.000000000","message":"Could you write the URL of these Keystone APIS to verify them?\n\nThis patch doesn\u0027t add the corresponding tests and it would be nice to check the doc instead of the test result.","commit_id":"4e82689685442b7b76cab70199973e67538455f8"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Although some of the APIs have been implemented, many of the token"},{"line_number":12,"context_line":"related APIs are yet to be implemented such as"},{"line_number":13,"context_line":"list_revoked_token, list_endpoints_for_token, check_token_existence"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Here are the OpenStack docs link"},{"line_number":16,"context_line":"https://developer.openstack.org/api-ref/identity/v2-admin/index.html"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"df140735_8c68eef4","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":18},"updated":"2017-06-06 06:51:50.000000000","message":"this seems not included in the code","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"}],"releasenotes/notes/identity-token-client-8aaef74b1d61090a.yaml":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_90666fed","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":36},"updated":"2017-05-19 00:12:44.000000000","message":"This wording is strange since you\u0027re not adding a client; you\u0027re enhancing an existing client.","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"7077c1c0dc1050cf018d4a3e1f137383a77477fa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_e5f392e6","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":36},"in_reply_to":"ff0f0b1f_90666fed","updated":"2017-05-23 11:26:57.000000000","message":"But there\u0027s no releasenotes for existing token client as well. If you look down below, I have added all the APIs and not just the newly added APIs","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"671a97ed587df1fde5e59cb08813c9ddac44949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_89ced32a","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":36},"in_reply_to":"ff0f0b1f_e5f392e6","updated":"2017-05-23 17:45:17.000000000","message":"Done","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"da67688c9df15af67c7b70e2604318f11ed18c66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_da2c9303","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":36},"in_reply_to":"ff0f0b1f_e5f392e6","updated":"2017-05-23 15:19:37.000000000","message":"If the client already exists, then that means you\u0027re not adding it, just enhancing it. I understand that no release notes exist for it, because it\u0027s probably so old, but it\u0027s not true to say that you added it during the latest release, when it\u0027s been around for years.","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"},{"line_number":8,"context_line":"    -  list_endpoints_for_token"},{"line_number":9,"context_line":"    -  check_token_existence"},{"line_number":10,"context_line":"    -  delete_token"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_7063dbdd","line":10,"range":{"start_line":5,"start_character":7,"end_line":10,"end_character":19},"updated":"2017-05-19 00:12:44.000000000","message":"This list needs to be corrected.","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"671a97ed587df1fde5e59cb08813c9ddac44949e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"},{"line_number":8,"context_line":"    -  list_endpoints_for_token"},{"line_number":9,"context_line":"    -  check_token_existence"},{"line_number":10,"context_line":"    -  delete_token"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_69d37fd6","line":10,"range":{"start_line":5,"start_character":7,"end_line":10,"end_character":19},"in_reply_to":"ff0f0b1f_7063dbdd","updated":"2017-05-23 17:45:17.000000000","message":"Done","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"7077c1c0dc1050cf018d4a3e1f137383a77477fa","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_extensions"},{"line_number":6,"context_line":"    -  show_token"},{"line_number":7,"context_line":"    -  list_revoked_tokens"},{"line_number":8,"context_line":"    -  list_endpoints_for_token"},{"line_number":9,"context_line":"    -  check_token_existence"},{"line_number":10,"context_line":"    -  delete_token"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_a5fd9ab2","line":10,"range":{"start_line":5,"start_character":7,"end_line":10,"end_character":19},"in_reply_to":"ff0f0b1f_7063dbdd","updated":"2017-05-23 11:26:57.000000000","message":"Same as above","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds additional API to the client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_revoked_tokens"},{"line_number":6,"context_line":"    -  list_endpoints_for_token"},{"line_number":7,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"df140735_2af9344c","line":5,"range":{"start_line":5,"start_character":7,"end_line":5,"end_character":26},"updated":"2017-06-01 15:19:39.000000000","message":"Looks like you removed this one from the code","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds additional API to the client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_endpoints_for_token"},{"line_number":6,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"df140735_6cfeba6b","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":8},"updated":"2017-06-06 06:51:50.000000000","message":"Add","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds additional API to the client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_endpoints_for_token"},{"line_number":6,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"df140735_ac2df2fe","line":4,"range":{"start_line":4,"start_character":56,"end_line":4,"end_character":58},"updated":"2017-06-06 06:51:50.000000000","message":"this looks a bit strange","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"e13cb8690d071e367e1d54c755164a637771013a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds additional API to the client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_endpoints_for_token"},{"line_number":6,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"df140735_2a53026d","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":8},"in_reply_to":"df140735_6cfeba6b","updated":"2017-06-06 07:47:39.000000000","message":"Done","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"e13cb8690d071e367e1d54c755164a637771013a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds additional API to the client for V2 token APIs to"},{"line_number":5,"context_line":"    -  list_endpoints_for_token"},{"line_number":6,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"df140735_2ad8a2ec","line":4,"range":{"start_line":4,"start_character":56,"end_line":4,"end_character":58},"in_reply_to":"df140735_ac2df2fe","updated":"2017-06-06 07:47:39.000000000","message":"this was as per the comment received by Felipe above","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add additional API to the client for V2 token APIs"},{"line_number":5,"context_line":"    -  list_endpoints_for_token"},{"line_number":6,"context_line":"    -  check_token_existence"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf091321_3a18bd1b","line":4,"range":{"start_line":4,"start_character":19,"end_line":4,"end_character":54},"updated":"2017-06-08 15:14:19.000000000","message":"API endpoints to the identity v2 client token API:","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"}],"tempest/api/identity/admin/v2/test_tokens.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":112,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_8f7b408a","line":114,"range":{"start_line":114,"start_character":8,"end_line":114,"end_character":45},"updated":"2017-06-06 06:51:50.000000000","message":"this check looks simple, at least endpoints should not be empty?","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                         tenant[\u0027name\u0027])"},{"line_number":41,"context_line":"        # Perform GET Token"},{"line_number":42,"context_line":"        token_id \u003d body[\u0027token\u0027][\u0027id\u0027]"},{"line_number":43,"context_line":"        token_details \u003d self.client.show_token(token_id)[\u0027access\u0027]"},{"line_number":44,"context_line":"        self.assertEqual(token_id, token_details[\u0027token\u0027][\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertEqual(user[\u0027id\u0027], token_details[\u0027user\u0027][\u0027id\u0027])"},{"line_number":46,"context_line":"        self.assertEqual(user_name, token_details[\u0027user\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_77cd2e5c","line":43,"updated":"2017-06-08 15:14:19.000000000","message":"Add:\n\n    self.client.check_token_existence(token_id)\n\nto L42 to check that the token was successfully created.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                         tenant[\u0027name\u0027])"},{"line_number":41,"context_line":"        # Perform GET Token"},{"line_number":42,"context_line":"        token_id \u003d body[\u0027token\u0027][\u0027id\u0027]"},{"line_number":43,"context_line":"        token_details \u003d self.client.show_token(token_id)[\u0027access\u0027]"},{"line_number":44,"context_line":"        self.assertEqual(token_id, token_details[\u0027token\u0027][\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertEqual(user[\u0027id\u0027], token_details[\u0027user\u0027][\u0027id\u0027])"},{"line_number":46,"context_line":"        self.assertEqual(user_name, token_details[\u0027user\u0027][\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_7109d8db","line":43,"in_reply_to":"bf091321_77cd2e5c","updated":"2017-06-09 12:21:28.000000000","message":"We cannot replace show_token as we need a testcase to assert show_token as an API too.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                         token_details[\u0027token\u0027][\u0027tenant\u0027][\u0027name\u0027])"},{"line_number":49,"context_line":"        # then delete the token"},{"line_number":50,"context_line":"        self.client.delete_token(token_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @decorators.idempotent_id(\u002725ba82ee-8a32-4ceb-8f50-8b8c71e8765e\u0027)"},{"line_number":53,"context_line":"    def test_rescope_token(self):"},{"line_number":54,"context_line":"        \"\"\"An unscoped token can be requested"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_f7bc9ebc","line":51,"updated":"2017-06-08 15:14:19.000000000","message":"Add:\n\n    self.assertRaises(lib_exc.Forbidden, self.client.check_token_existence, token_id)\n\nto L51 to check that the token was successfully deleted.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                         token_details[\u0027token\u0027][\u0027tenant\u0027][\u0027name\u0027])"},{"line_number":49,"context_line":"        # then delete the token"},{"line_number":50,"context_line":"        self.client.delete_token(token_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @decorators.idempotent_id(\u002725ba82ee-8a32-4ceb-8f50-8b8c71e8765e\u0027)"},{"line_number":53,"context_line":"    def test_rescope_token(self):"},{"line_number":54,"context_line":"        \"\"\"An unscoped token can be requested"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_5127f465","line":51,"in_reply_to":"bf091321_f7bc9ebc","updated":"2017-06-09 12:21:28.000000000","message":"I can definitely add this at the end, but we still need a test_check_token_existence() to ascertain it returns 200 status as commented by Kenichi","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                            tenant\u003dtenant2_name)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @decorators.idempotent_id(\u0027ca3ea6f7-ed08-4a61-adbd-96906456ad31\u0027)"},{"line_number":106,"context_line":"    def test_list_endpoints_for_token(self):"},{"line_number":107,"context_line":"        # get a token for the user"},{"line_number":108,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":109,"context_line":"        username \u003d creds.username"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_5780ea8b","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":37},"updated":"2017-06-08 15:14:19.000000000","message":"I think you can make this test more robust.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                            tenant\u003dtenant2_name)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @decorators.idempotent_id(\u0027ca3ea6f7-ed08-4a61-adbd-96906456ad31\u0027)"},{"line_number":106,"context_line":"    def test_list_endpoints_for_token(self):"},{"line_number":107,"context_line":"        # get a token for the user"},{"line_number":108,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":109,"context_line":"        username \u003d creds.username"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_312c8046","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":37},"in_reply_to":"bf091321_5780ea8b","updated":"2017-06-09 12:21:28.000000000","message":"Done","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        username \u003d creds.username"},{"line_number":110,"context_line":"        password \u003d creds.password"},{"line_number":111,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":112,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_fa6485bb","line":114,"range":{"start_line":112,"start_character":8,"end_line":114,"end_character":45},"updated":"2017-06-08 15:14:19.000000000","message":"token \u003d self.token_client.auth(username, password, tenant_name)[\u0027token\u0027]\nendpoints \u003d self.client.list_endpoints_for_token(token[\u0027id\u0027])[\u0027endpoints\u0027]\nself.assertIsInstance(endpoints, list)","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        username \u003d creds.username"},{"line_number":110,"context_line":"        password \u003d creds.password"},{"line_number":111,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":112,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_f11de80f","line":114,"range":{"start_line":112,"start_character":8,"end_line":114,"end_character":45},"in_reply_to":"bf091321_fa6485bb","updated":"2017-06-09 12:21:28.000000000","message":"Done","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"},{"line_number":118,"context_line":"        creds \u003d self.os_primary.credentials"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_da278164","line":115,"updated":"2017-06-08 15:14:19.000000000","message":"Add this after L114:\n\n# Store list of endpoint names\nservice_names \u003d set([e[\u0027name\u0027] for e in endpoints])\n\n# Get the list of available services.\nservice_names \u003d [s[0] for s in list(CONF.service_available.items()) if s[1] is True]\n\n# Verify that all available services are present.\nfor service in services:\n    self.assertIn(service, endpoint_names)","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"},{"line_number":118,"context_line":"        creds \u003d self.os_primary.credentials"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_b11770ee","line":115,"in_reply_to":"bf091321_da278164","updated":"2017-06-09 12:21:28.000000000","message":"Done. this is a great idea","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"},{"line_number":118,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":119,"context_line":"        username \u003d creds.username"},{"line_number":120,"context_line":"        password \u003d creds.password"},{"line_number":121,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":122,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":123,"context_line":"        resp \u003d self.client.check_token_existence(body[\u0027token\u0027][\u0027id\u0027]).response"},{"line_number":124,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_172b92eb","line":124,"range":{"start_line":116,"start_character":0,"end_line":124,"end_character":47},"updated":"2017-06-08 15:14:19.000000000","message":"This test can be incorporated into ``test_create_get_delete_token`` above. No need to have a single test case just for check_token_existence. See inline comments for ``test_create_get_delete_token``.\n\nL124 also isn\u0027t needed because the assertion is already done in the client.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        resp_body \u003d self.client.list_endpoints_for_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":114,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":117,"context_line":"    def test_check_token_existence(self):"},{"line_number":118,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":119,"context_line":"        username \u003d creds.username"},{"line_number":120,"context_line":"        password \u003d creds.password"},{"line_number":121,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":122,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":123,"context_line":"        resp \u003d self.client.check_token_existence(body[\u0027token\u0027][\u0027id\u0027]).response"},{"line_number":124,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_51dc9445","line":124,"range":{"start_line":116,"start_character":0,"end_line":124,"end_character":47},"in_reply_to":"bf091321_172b92eb","updated":"2017-06-09 12:21:28.000000000","message":"We cannot replace show_token as we need a testcase to assert show_token as an API too and we need a testcase to ascertain 200 status for check_token_existence, hence we need this testcase","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f6acfe74e8a1c8e82bd162da5cd6d981f2fe9ac4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertEqual(body[\u0027token\u0027][\u0027tenant\u0027][\u0027name\u0027],"},{"line_number":44,"context_line":"                         tenant[\u0027name\u0027])"},{"line_number":45,"context_line":"        # Perform GET Token"},{"line_number":46,"context_line":"        token_id \u003d body[\u0027token\u0027][\u0027id\u0027]"},{"line_number":47,"context_line":"        token_details \u003d self.client.show_token(token_id)[\u0027access\u0027]"},{"line_number":48,"context_line":"        self.assertEqual(token_id, token_details[\u0027token\u0027][\u0027id\u0027])"},{"line_number":49,"context_line":"        self.assertEqual(user[\u0027id\u0027], token_details[\u0027user\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_1194db8a","line":46,"updated":"2017-06-10 02:56:01.000000000","message":"I believe you can add check_token_existence after L46 just to confirm that it was created (and remove the test for check_token_existence on L134 because it\u0027s not really needed). The show_token call doesn\u0027t need to be removed, it can stay.","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"120a9be081f2b9cc923b9be08cdf424cdebf2bde","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertEqual(body[\u0027token\u0027][\u0027tenant\u0027][\u0027name\u0027],"},{"line_number":44,"context_line":"                         tenant[\u0027name\u0027])"},{"line_number":45,"context_line":"        # Perform GET Token"},{"line_number":46,"context_line":"        token_id \u003d body[\u0027token\u0027][\u0027id\u0027]"},{"line_number":47,"context_line":"        token_details \u003d self.client.show_token(token_id)[\u0027access\u0027]"},{"line_number":48,"context_line":"        self.assertEqual(token_id, token_details[\u0027token\u0027][\u0027id\u0027])"},{"line_number":49,"context_line":"        self.assertEqual(user[\u0027id\u0027], token_details[\u0027user\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_7d1e2f0d","line":46,"in_reply_to":"7f231b9d_1194db8a","updated":"2017-06-12 07:34:05.000000000","message":"Done","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f6acfe74e8a1c8e82bd162da5cd6d981f2fe9ac4","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":124,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":125,"context_line":"        # Store list of endpoint names"},{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_f1b71f3a","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":22},"updated":"2017-06-10 02:56:01.000000000","message":"These are service names, so maybe a better name for this is \"service_names\".","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"120a9be081f2b9cc923b9be08cdf424cdebf2bde","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":124,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":125,"context_line":"        # Store list of endpoint names"},{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_fdd7df22","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":22},"in_reply_to":"7f231b9d_f1b71f3a","updated":"2017-06-12 07:34:05.000000000","message":"Done","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f6acfe74e8a1c8e82bd162da5cd6d981f2fe9ac4","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # Store list of endpoint names"},{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"},{"line_number":130,"context_line":"        # Verify that all available services are present."},{"line_number":131,"context_line":"        for service in service_names:"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_d1b42338","line":128,"range":{"start_line":128,"start_character":8,"end_line":128,"end_character":21},"updated":"2017-06-10 02:56:01.000000000","message":"And then this could be called available_services.","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"120a9be081f2b9cc923b9be08cdf424cdebf2bde","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # Store list of endpoint names"},{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"},{"line_number":130,"context_line":"        # Verify that all available services are present."},{"line_number":131,"context_line":"        for service in service_names:"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_dddc2348","line":128,"range":{"start_line":128,"start_character":8,"end_line":128,"end_character":21},"in_reply_to":"7f231b9d_d1b42338","updated":"2017-06-12 07:34:05.000000000","message":"Done","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f6acfe74e8a1c8e82bd162da5cd6d981f2fe9ac4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"},{"line_number":130,"context_line":"        # Verify that all available services are present."},{"line_number":131,"context_line":"        for service in service_names:"},{"line_number":132,"context_line":"            self.assertIn(service, endpoint_names)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_b183e756","line":129,"range":{"start_line":129,"start_character":43,"end_line":129,"end_character":45},"updated":"2017-06-10 02:56:01.000000000","message":"nit: need a space between parenthesis and \"if\"","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"120a9be081f2b9cc923b9be08cdf424cdebf2bde","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        endpoint_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":127,"context_line":"        # Get the list of available services."},{"line_number":128,"context_line":"        service_names \u003d [s[0] for s in list("},{"line_number":129,"context_line":"            CONF.service_available.items())if s[1] is True]"},{"line_number":130,"context_line":"        # Verify that all available services are present."},{"line_number":131,"context_line":"        for service in service_names:"},{"line_number":132,"context_line":"            self.assertIn(service, endpoint_names)"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_9de6ab16","line":129,"range":{"start_line":129,"start_character":43,"end_line":129,"end_character":45},"in_reply_to":"7f231b9d_b183e756","updated":"2017-06-12 07:34:05.000000000","message":"Done","commit_id":"0cca08c004a2405dc3f7d55f60b773008678279c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"acd9062fce1858e9ad47486df5494b54de1dd75c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":125,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":126,"context_line":"        # Store list of service names"},{"line_number":127,"context_line":"        service_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":128,"context_line":"        # Get the list of available services."},{"line_number":129,"context_line":"        available_services \u003d [s[0] for s in list("},{"line_number":130,"context_line":"            CONF.service_available.items()) if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7f231b9d_93ab1688","line":127,"range":{"start_line":127,"start_character":24,"end_line":127,"end_character":27},"updated":"2017-06-13 03:45:33.000000000","message":"why change to a set?","commit_id":"8094373a9bdee8bf25c677b9b658c2762ddffda1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"db7e849b68f6b5e2684d41dc3abbfa8cff249c3d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":125,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":126,"context_line":"        # Store list of service names"},{"line_number":127,"context_line":"        service_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":128,"context_line":"        # Get the list of available services."},{"line_number":129,"context_line":"        available_services \u003d [s[0] for s in list("},{"line_number":130,"context_line":"            CONF.service_available.items()) if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":26,"id":"7f231b9d_4f6dc702","line":127,"range":{"start_line":127,"start_character":24,"end_line":127,"end_character":27},"in_reply_to":"7f231b9d_93ab1688","updated":"2017-06-13 10:12:05.000000000","message":"although \"list\" could be used, since we are not iterating over list and just checking for \"contains/in\". Set performs slightly better in performance. Hence we used set here. Do you have any better suggestions","commit_id":"8094373a9bdee8bf25c677b9b658c2762ddffda1"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"7a28cb39119ab2b3230f113ebacbef0a2ff6d2da","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":125,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":126,"context_line":"        # Store list of service names"},{"line_number":127,"context_line":"        service_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":128,"context_line":"        # Get the list of available services."},{"line_number":129,"context_line":"        available_services \u003d [s[0] for s in list("},{"line_number":130,"context_line":"            CONF.service_available.items()) if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":29,"id":"7f231b9d_5315579b","line":127,"range":{"start_line":127,"start_character":24,"end_line":127,"end_character":27},"updated":"2017-06-14 01:56:13.000000000","message":"Because there are not so many items in the list, so I think we can ignore the performance issue here. It will look a bit simple\nto use list","commit_id":"0bfc259f7f1569ddc2dc72ec0a164322d1723edc"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"87176a8558d965ad3bbd36b1ac2cd7dcea4927d7","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":125,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":126,"context_line":"        # Store list of service names"},{"line_number":127,"context_line":"        service_names \u003d set([e[\u0027name\u0027] for e in endpoints])"},{"line_number":128,"context_line":"        # Get the list of available services."},{"line_number":129,"context_line":"        available_services \u003d [s[0] for s in list("},{"line_number":130,"context_line":"            CONF.service_available.items()) if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":29,"id":"7f231b9d_ffe0a1ce","line":127,"range":{"start_line":127,"start_character":24,"end_line":127,"end_character":27},"in_reply_to":"7f231b9d_5315579b","updated":"2017-06-14 07:33:48.000000000","message":"Done","commit_id":"0bfc259f7f1569ddc2dc72ec0a164322d1723edc"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"52e3467b7be6956fed7b40b7ffdaef5fa5932a50","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            token[\u0027id\u0027])[\u0027endpoints\u0027]"},{"line_number":125,"context_line":"        self.assertIsInstance(endpoints, list)"},{"line_number":126,"context_line":"        # Store list of service names"},{"line_number":127,"context_line":"        service_names \u003d list([e[\u0027name\u0027] for e in endpoints])"},{"line_number":128,"context_line":"        # Get the list of available services."},{"line_number":129,"context_line":"        available_services \u003d [s[0] for s in list("},{"line_number":130,"context_line":"            CONF.service_available.items()) if s[1] is True]"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_aed1b925","line":127,"range":{"start_line":127,"start_character":24,"end_line":127,"end_character":28},"updated":"2017-06-15 02:48:52.000000000","message":"nit: this is not needed?","commit_id":"c7a0ff706baaeb832cc57628d3fa3202be8c7fc4"}],"tempest/api/identity/admin/v2/test_tokens_negative.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027alt\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":28,"context_line":"    def test_check_token_existence_negative(self):"},{"line_number":29,"context_line":"        # get a token for the user"},{"line_number":30,"context_line":"        creds \u003d self.os_primary.credentials"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_0f6730eb","line":27,"updated":"2017-06-06 06:51:50.000000000","message":"need @decorators.attr(type\u003d[\u0027negative\u0027])","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"e13cb8690d071e367e1d54c755164a637771013a","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027alt\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":28,"context_line":"    def test_check_token_existence_negative(self):"},{"line_number":29,"context_line":"        # get a token for the user"},{"line_number":30,"context_line":"        creds \u003d self.os_primary.credentials"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_8a5a0e80","line":27,"in_reply_to":"df140735_0f6730eb","updated":"2017-06-06 07:47:39.000000000","message":"Done","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":28,"context_line":"    def test_check_token_existence_negative(self):"},{"line_number":29,"context_line":"        # get a token for the user"},{"line_number":30,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":31,"context_line":"        creds_alt \u003d self.os_alt.credentials"},{"line_number":32,"context_line":"        username \u003d creds.username"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_cf5c981a","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":34},"updated":"2017-06-06 06:51:50.000000000","message":"this comment is not correct","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"e13cb8690d071e367e1d54c755164a637771013a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":28,"context_line":"    def test_check_token_existence_negative(self):"},{"line_number":29,"context_line":"        # get a token for the user"},{"line_number":30,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":31,"context_line":"        creds_alt \u003d self.os_alt.credentials"},{"line_number":32,"context_line":"        username \u003d creds.username"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_aa67124d","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":34},"in_reply_to":"df140735_cf5c981a","updated":"2017-06-06 07:47:39.000000000","message":"This comment was basically for creating the token before we check if the token is valid, but I agree, it might be confusing. Hence removed the comment","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# Copyright 2017 AT\u0026T"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_f767fe24","line":1,"updated":"2017-06-08 15:14:19.000000000","message":"nit: extra newline","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# Copyright 2017 AT\u0026T"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_977682d8","line":2,"range":{"start_line":2,"start_character":17,"end_line":2,"end_character":21},"updated":"2017-06-08 15:14:19.000000000","message":"AT\u0026T Corporation.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2a0229f64bb8748b473e9f58d90b22452e52d726","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.api.identity import base"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"7f231b9d_4cce5f5a","line":18,"updated":"2017-06-19 02:51:47.000000000","message":"nit: this blank line is not needed","commit_id":"092eaa646bae582fcd874725d44d37ffac3a8024"},{"author":{"_account_id":25041,"name":"PRAMOD KUMAR SINGH","email":"pk110e@att.com","username":"spramod88"},"change_message_id":"f8a91ff269d3ec769a9b80899ef751dd22720201","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.api.identity import base"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"7f231b9d_28954887","line":18,"in_reply_to":"7f231b9d_4cce5f5a","updated":"2017-06-19 08:43:31.000000000","message":"Done","commit_id":"092eaa646bae582fcd874725d44d37ffac3a8024"}],"tempest/api/identity/v2/test_tokens.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class TokensAdminTest(base.BaseIdentityV2AdminTest):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027alt\u0027]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00270d22e80b-1387-452a-b201-11f7917b6a88\u0027)"},{"line_number":60,"context_line":"    def test_delete_token(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df140735_8adba0eb","line":57,"range":{"start_line":57,"start_character":40,"end_line":57,"end_character":43},"updated":"2017-06-01 15:19:39.000000000","message":"alt is only needed for negative testing.","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027alt\u0027]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00270d22e80b-1387-452a-b201-11f7917b6a88\u0027)"},{"line_number":60,"context_line":"    def test_delete_token(self):"},{"line_number":61,"context_line":"        # get a token for the user"},{"line_number":62,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":63,"context_line":"        username \u003d creds.username"},{"line_number":64,"context_line":"        password \u003d creds.password"},{"line_number":65,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":68,"context_line":"        self.client.delete_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":69,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_token,"},{"line_number":70,"context_line":"                          body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @decorators.idempotent_id(\u0027f8869535-4e11-4219-b7f4-fa50716bb567\u0027)"},{"line_number":73,"context_line":"    def test_show_token(self):"},{"line_number":74,"context_line":"        # get a token for the user"},{"line_number":75,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":76,"context_line":"        username \u003d creds.username"},{"line_number":77,"context_line":"        password \u003d creds.password"},{"line_number":78,"context_line":"        tenant_name \u003d creds.tenant_name"},{"line_number":79,"context_line":"        body \u003d self.token_client.auth(username, password, tenant_name)"},{"line_number":80,"context_line":"        token \u003d self.client.show_token(body[\u0027token\u0027][\u0027id\u0027])"},{"line_number":81,"context_line":"        self.assertEqual(body[\u0027token\u0027][\u0027id\u0027], token[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @decorators.idempotent_id(\u0027ca3ea6f7-ed08-4a61-adbd-96906456ad31\u0027)"},{"line_number":84,"context_line":"    def test_list_endpoints_for_token(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df140735_2a4b74b0","line":81,"range":{"start_line":59,"start_character":0,"end_line":81,"end_character":77},"updated":"2017-06-01 15:19:39.000000000","message":"You can combine this into the same test case. For example, create token, then show it, do assertions, then delete it, then do assertions.","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.assertIn(\u0027endpoints\u0027, resp_body)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027aa13eb92-548b-4e98-ba25-e7e56dca07cd\u0027)"},{"line_number":95,"context_line":"    def test_check_token_existence(self):"},{"line_number":96,"context_line":"        # get a token for the user"},{"line_number":97,"context_line":"        creds \u003d self.os_primary.credentials"},{"line_number":98,"context_line":"        creds_alt \u003d self.os_alt.credentials"}],"source_content_type":"text/x-python","patch_set":14,"id":"df140735_4a77c803","line":95,"range":{"start_line":95,"start_character":8,"end_line":95,"end_character":34},"updated":"2017-06-01 15:19:39.000000000","message":"This is technically a negative test case. I think negative tests belong in a separate file: test_tokens_negative. Or you could make this a positive test case instead.","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                          body[\u0027token\u0027][\u0027id\u0027],"},{"line_number":107,"context_line":"                          belongsTo\u003dalt_tenant_name)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @decorators.idempotent_id(\u0027be33f1a6-ebe2-4ad5-b1c6-cce3e81ba4fe\u0027)"},{"line_number":110,"context_line":"    def test_extensions(self):"},{"line_number":111,"context_line":"        body \u003d self.client.list_extensions()"},{"line_number":112,"context_line":"        self.assertIn(\u0027extensions\u0027, body)"}],"source_content_type":"text/x-python","patch_set":14,"id":"df140735_ea2e9cf8","line":112,"range":{"start_line":109,"start_character":0,"end_line":112,"end_character":41},"updated":"2017-06-01 15:19:39.000000000","message":"This doesn\u0027t require admin credentials since it\u0027s part of the non-admin identity v2 API: https://developer.openstack.org/api-ref/identity/v2/#list-extensions","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"309197e8626a1a13c9aec81d3db7c278bc984ab1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertEqual(body[\u0027user\u0027][\u0027id\u0027], creds.user_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @decorators.idempotent_id(\u0027be33f1a6-ebe2-4ad5-b1c6-cce3e81ba4fe\u0027)"},{"line_number":53,"context_line":"    def test_extensions(self):"},{"line_number":54,"context_line":"        body \u003d self.non_admin_client.list_extensions()"},{"line_number":55,"context_line":"        self.assertIn(\u0027extensions\u0027, body)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_6c123a64","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":23},"updated":"2017-06-06 06:51:50.000000000","message":"Is this relevant to the token things?","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"e13cb8690d071e367e1d54c755164a637771013a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertEqual(body[\u0027user\u0027][\u0027id\u0027], creds.user_id)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @decorators.idempotent_id(\u0027be33f1a6-ebe2-4ad5-b1c6-cce3e81ba4fe\u0027)"},{"line_number":53,"context_line":"    def test_extensions(self):"},{"line_number":54,"context_line":"        body \u003d self.non_admin_client.list_extensions()"},{"line_number":55,"context_line":"        self.assertIn(\u0027extensions\u0027, body)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_ca7b66f2","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":23},"in_reply_to":"df140735_6c123a64","updated":"2017-06-06 07:47:39.000000000","message":"removed it. I see that we already have testcase for test_extension","commit_id":"22e7bbc3494353c24c84b50a7de8a7c752798717"}],"tempest/lib/services/identity/v2/identity_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b3cdfa7974f3334f325141efa61425df1a6ecfbb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def validate_token_head(self, token_id):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        resp, body \u003d self.head(\"tokens/%s\" % token_id)"},{"line_number":66,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_97eb5211","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":27},"updated":"2017-05-01 22:03:08.000000000","message":"here should be\n\n def check_token_existence(self, token_id)","commit_id":"4e82689685442b7b76cab70199973e67538455f8"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"dc4670c7b8ef2bce594420a34099ec5a80ab1c9e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def validate_token_head(self, token_id):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        resp, body \u003d self.head(\"tokens/%s\" % token_id)"},{"line_number":66,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_7150c00b","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":27},"in_reply_to":"5ff73747_97eb5211","updated":"2017-05-02 13:07:55.000000000","message":"Done","commit_id":"4e82689685442b7b76cab70199973e67538455f8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"15fd0701a373c0081186e9c28df65d1d48ab27cf","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def list_revoked_tokens(self):"},{"line_number":50,"context_line":"        \"\"\"List revoked tokens \"\"\""},{"line_number":51,"context_line":"        resp, body \u003d self.get(\"tokens/revoked\")"},{"line_number":52,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":53,"context_line":"        body \u003d json.loads(body)"},{"line_number":54,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_9569d226","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":45},"updated":"2017-05-04 19:13:29.000000000","message":"This API is not contained in the API doc which you specify on the commit message, right?","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"29d7076826dd9e7b9b0178ca932611aab8209c29","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def list_revoked_tokens(self):"},{"line_number":50,"context_line":"        \"\"\"List revoked tokens \"\"\""},{"line_number":51,"context_line":"        resp, body \u003d self.get(\"tokens/revoked\")"},{"line_number":52,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":53,"context_line":"        body \u003d json.loads(body)"},{"line_number":54,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_972e5ef8","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":45},"in_reply_to":"3f044301_9569d226","updated":"2017-05-05 15:36:54.000000000","message":"https://developer.openstack.org/api-ref/identity/v2/\nHere is the link for this API","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"64c2b1355dd43b69b84bdb140b4d44ddb156fd78","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def list_revoked_tokens(self):"},{"line_number":50,"context_line":"        \"\"\"List revoked tokens \"\"\""},{"line_number":51,"context_line":"        resp, body \u003d self.get(\"tokens/revoked\")"},{"line_number":52,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":53,"context_line":"        body \u003d json.loads(body)"},{"line_number":54,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_193d83c3","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":45},"in_reply_to":"3f044301_972e5ef8","updated":"2017-05-11 12:45:17.000000000","message":"The API is here: https://developer.openstack.org/api-ref/identity/v2/#revocations","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"64c2b1355dd43b69b84bdb140b4d44ddb156fd78","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        body \u003d json.loads(body)"},{"line_number":54,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def list_endpoints_for_token(self, token_id):"},{"line_number":57,"context_line":"        \"\"\"List endpoints for a token \"\"\""},{"line_number":58,"context_line":"        resp, body \u003d self.get(\"tokens/%s/endpoints\" % token_id)"},{"line_number":59,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_b92faf86","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":32},"updated":"2017-05-11 12:45:17.000000000","message":"This one and the one below belong to: https://developer.openstack.org/api-ref/identity/v2-admin/#tokens","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"1e8738e41acf52eb04f1b467de18002a0a6ee599","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check_token_existence(self, token_id):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        resp, body \u003d self.head(\"tokens/%s\" % token_id)"},{"line_number":66,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_3051db37","line":63,"updated":"2017-05-16 09:41:53.000000000","message":"check_token_validity ?\n\nThe existence is confusing, because the tokens does not needs to be stored.","commit_id":"5e94b98dc4c7bd0453981f5bb593c8eeeb5ef4d6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        body \u003d json.loads(body)"},{"line_number":27,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def show_token(self, token_id):"},{"line_number":30,"context_line":"        \"\"\"Get token details.\"\"\""},{"line_number":31,"context_line":"        resp, body \u003d self.get(\"tokens/%s\" % token_id)"},{"line_number":32,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_5047b74c","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":18},"updated":"2017-05-19 00:12:44.000000000","message":"Looks like [0] also takes optional param \"belongsTo\" but I guess that can be done in a separate patch.\n\n[0] https://developer.openstack.org/api-ref/identity/v2-admin/?expanded\u003d#validate-token","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"6faa187d44d09a0c2664d433ccd35d21684cad61","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        body \u003d json.loads(body)"},{"line_number":27,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def show_token(self, token_id):"},{"line_number":30,"context_line":"        \"\"\"Get token details.\"\"\""},{"line_number":31,"context_line":"        resp, body \u003d self.get(\"tokens/%s\" % token_id)"},{"line_number":32,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_50c2ad5a","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":18},"in_reply_to":"ff0f0b1f_5047b74c","updated":"2017-05-23 11:28:12.000000000","message":"will be taking it in a separate patch","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check_token_existence(self, token_id):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        resp, body \u003d self.head(\"tokens/%s\" % token_id)"},{"line_number":66,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_503217f3","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":29},"updated":"2017-05-19 00:12:44.000000000","message":"Does this correspond to [0]? If so, according to the docs, it takes an optional param called \"belongsTo\". Also, this uses the admin identity endpoint, so that might change a few things.\n\n[0] https://developer.openstack.org/api-ref/identity/v2-admin/?expanded\u003dlist-endoints-for-token-detail#list-endoints-for-token","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"6faa187d44d09a0c2664d433ccd35d21684cad61","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check_token_existence(self, token_id):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        resp, body \u003d self.head(\"tokens/%s\" % token_id)"},{"line_number":66,"context_line":"        self.expected_success(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_90ea85d5","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":29},"in_reply_to":"ff0f0b1f_503217f3","updated":"2017-05-23 11:28:12.000000000","message":"Done","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c6993f7e89976e87ba27b6a62f89ec770af61c87","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        body \u003d json.loads(body)"},{"line_number":61,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def check_token_existence(self, token_id, belongsTo\u003dNone):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        url \u003d \"token/%s\" % token_id"},{"line_number":66,"context_line":"        if belongsTo:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_402405af","line":63,"range":{"start_line":63,"start_character":46,"end_line":63,"end_character":60},"updated":"2017-05-23 23:20:46.000000000","message":"**params","commit_id":"6370809b95963670ec75055bea5bd4d1dedd6dfa"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c6993f7e89976e87ba27b6a62f89ec770af61c87","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def check_token_existence(self, token_id, belongsTo\u003dNone):"},{"line_number":64,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":65,"context_line":"        url \u003d \"token/%s\" % token_id"},{"line_number":66,"context_line":"        if belongsTo:"},{"line_number":67,"context_line":"            url +\u003d \u0027?%s\u0027 % \u0027belongsTo\u003d\u0027 + belongsTo"},{"line_number":68,"context_line":"        resp, body \u003d self.head(\"token/%s\" % token_id)"},{"line_number":69,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":70,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_5215fce3","line":67,"range":{"start_line":66,"start_character":8,"end_line":67,"end_character":51},"updated":"2017-05-23 23:20:46.000000000","message":"See: https://github.com/openstack/tempest/blob/master/tempest/lib/services/volume/v1/services_client.py#L25","commit_id":"6370809b95963670ec75055bea5bd4d1dedd6dfa"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"adfe5921caab0da4326364d53879e2a689f07d2f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":67,"context_line":"        url \u003d \"token/%s\" % token_id"},{"line_number":68,"context_line":"        if params:"},{"line_number":69,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode()"},{"line_number":70,"context_line":"        resp, body \u003d self.head(url)"},{"line_number":71,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":72,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_a225b7ad","line":69,"range":{"start_line":69,"start_character":34,"end_line":69,"end_character":45},"updated":"2017-05-26 20:23:52.000000000","message":"urlencode(params)","commit_id":"eb33aa7f34d7282e018c3f1b0c83e7f8ce8d674c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ea943bdf9df279c57584992a69233c6faa3bafea","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def check_token_existence(self, token_id, **params):"},{"line_number":66,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":67,"context_line":"        url \u003d \"token/%s\" % token_id"},{"line_number":68,"context_line":"        if params:"},{"line_number":69,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":70,"context_line":"        resp, body \u003d self.head(url)"}],"source_content_type":"text/x-python","patch_set":13,"id":"df140735_2c9850be","line":67,"range":{"start_line":67,"start_character":15,"end_line":67,"end_character":23},"updated":"2017-05-31 17:41:04.000000000","message":"Isn\u0027t that \"tokens/%s\" according to https://developer.openstack.org/api-ref/identity/v2-admin/index.html#validate-token-admin ?\n\nIn addition, please add the corresponding tempest tests which use the above new methods into Tempest to confirm these methods are valid.","commit_id":"35e9041e686c92f3e69adc6b415d0ef31bdf2996"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def check_token_existence(self, token_id, **params):"},{"line_number":59,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":60,"context_line":"        url \u003d \"tokens/%s\" % token_id"},{"line_number":61,"context_line":"        if params:"},{"line_number":62,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_d7e99a80","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":36},"updated":"2017-06-08 15:14:19.000000000","message":"\"\"\"Validates a token and confirms that it belongs to a tenant.\n\nFor a full list of available parameters, please refer to the official API reference:\nhttps://developer.openstack.org/api-ref/identity/v2-admin/#validate-token\n\"\"\"\n\n(Include the URL on 1 line -- it\u0027s OK if it is longer than 80 chars)","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def check_token_existence(self, token_id, **params):"},{"line_number":59,"context_line":"        \"\"\"Validates a token head\"\"\""},{"line_number":60,"context_line":"        url \u003d \"tokens/%s\" % token_id"},{"line_number":61,"context_line":"        if params:"},{"line_number":62,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_d1ab0473","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":36},"in_reply_to":"bf091321_d7e99a80","updated":"2017-06-09 12:21:28.000000000","message":"Done","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7a2e2fba3ad144105c43b8b2d17de4cc190ee67b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        if params:"},{"line_number":62,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":63,"context_line":"        resp, body \u003d self.head(url)"},{"line_number":64,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":65,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf091321_d782bac8","line":64,"range":{"start_line":64,"start_character":30,"end_line":64,"end_character":33},"updated":"2017-06-08 15:14:19.000000000","message":"Assertion already done here.","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"066405cb7a12ea1bacd2d847c6e5cbe5220b228f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        if params:"},{"line_number":62,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":63,"context_line":"        resp, body \u003d self.head(url)"},{"line_number":64,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":65,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f0e0f27_b1a89077","line":64,"range":{"start_line":64,"start_character":30,"end_line":64,"end_character":33},"in_reply_to":"bf091321_d782bac8","updated":"2017-06-09 12:21:28.000000000","message":"Done","commit_id":"5cf8d6c5ae96a051e43bd18ea6bc89d7e801dd0b"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"acd9062fce1858e9ad47486df5494b54de1dd75c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import urllib"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_serialization import jsonutils as json"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7f231b9d_93dd5644","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":13},"updated":"2017-06-13 03:45:33.000000000","message":"from six.moves.urllib import parse as urllib","commit_id":"8094373a9bdee8bf25c677b9b658c2762ddffda1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"db7e849b68f6b5e2684d41dc3abbfa8cff249c3d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import urllib"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_serialization import jsonutils as json"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7f231b9d_8f951fe7","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":13},"in_reply_to":"7f231b9d_93dd5644","updated":"2017-06-13 10:12:05.000000000","message":"Done","commit_id":"8094373a9bdee8bf25c677b9b658c2762ddffda1"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"69381fb2e85113e1c6e217c1cafa6e9fdd5550b3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import urllib"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_serialization import jsonutils as json"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"7f231b9d_1700e100","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":13},"updated":"2017-06-14 08:51:51.000000000","message":"from six.moves.urllib import parse as urllib","commit_id":"26bc4043c5f1e20e0083eefdba1d3b2272edefeb"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"01f0a4b5a63f0251709b5a720233e5bbb462d015","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from oslo_serialization import jsonutils as json"},{"line_number":14,"context_line":"from six.moves.urllib import parse as urllib"},{"line_number":15,"context_line":"from tempest.lib.common import rest_client"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class IdentityClient(rest_client.RestClient):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f231b9d_8ee5dd0b","line":15,"updated":"2017-06-15 02:47:01.000000000","message":"nit: There should be a blank line before line #15","commit_id":"c7a0ff706baaeb832cc57628d3fa3202be8c7fc4"}],"tempest/tests/lib/services/identity/v2/test_identity_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"15fd0701a373c0081186e9c28df65d1d48ab27cf","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.check_service_client_function("},{"line_number":160,"context_line":"            self.client.list_endpoints_for_token,"},{"line_number":161,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"},{"line_number":162,"context_line":"            self.FAKE_TOKEN,"},{"line_number":163,"context_line":"            bytes_body,"},{"line_number":164,"context_line":"            token_id\u003d\"cbc36478b0bd8e67e89\")"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_b555ee52","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":28},"updated":"2017-05-04 19:13:29.000000000","message":"This is wrong response body. Please see the \"Response Example\" on https://developer.openstack.org/api-ref/identity/v2-admin/index.html?expanded\u003dlist-endoints-for-token-detail#list-endoints-for-token","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"29d7076826dd9e7b9b0178ca932611aab8209c29","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.check_service_client_function("},{"line_number":160,"context_line":"            self.client.list_endpoints_for_token,"},{"line_number":161,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"},{"line_number":162,"context_line":"            self.FAKE_TOKEN,"},{"line_number":163,"context_line":"            bytes_body,"},{"line_number":164,"context_line":"            token_id\u003d\"cbc36478b0bd8e67e89\")"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_fa6349db","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":28},"in_reply_to":"3f044301_b555ee52","updated":"2017-05-05 15:36:54.000000000","message":"Done","commit_id":"9cd853232628cb51c51479bdebcb937472a1871f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    FAKE_ENDPOINTS_FOR_TOKEN \u003d {"},{"line_number":30,"context_line":"        \"endpoints_links\": [],"},{"line_number":31,"context_line":"        \"endpoints\": ["},{"line_number":32,"context_line":"            {"},{"line_number":33,"context_line":"                \"name\": \"nova\","},{"line_number":34,"context_line":"                \"adminURL\": \"https://nova.region-one.internal.com/\" +"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_552b2993","line":31,"range":{"start_line":31,"start_character":9,"end_line":31,"end_character":18},"updated":"2017-05-19 00:12:44.000000000","message":"Maybe adding more than 1 entry here is better (because it\u0027s a list): https://developer.openstack.org/api-ref/identity/v2-admin/?expanded\u003dlist-endoints-for-token-detail#list-endoints-for-token","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"7077c1c0dc1050cf018d4a3e1f137383a77477fa","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    FAKE_ENDPOINTS_FOR_TOKEN \u003d {"},{"line_number":30,"context_line":"        \"endpoints_links\": [],"},{"line_number":31,"context_line":"        \"endpoints\": ["},{"line_number":32,"context_line":"            {"},{"line_number":33,"context_line":"                \"name\": \"nova\","},{"line_number":34,"context_line":"                \"adminURL\": \"https://nova.region-one.internal.com/\" +"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_f0022fb4","line":31,"range":{"start_line":31,"start_character":9,"end_line":31,"end_character":18},"in_reply_to":"ff0f0b1f_552b2993","updated":"2017-05-23 11:26:57.000000000","message":"Done","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91e9b21d6f0a6197b8ec52a80d7789a9dda33f76","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.check_service_client_function("},{"line_number":171,"context_line":"            self.client.list_revoked_tokens,"},{"line_number":172,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"},{"line_number":173,"context_line":"            self.FAKE_TOKEN,"},{"line_number":174,"context_line":"            bytes_body)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def _test_list_endpoints_for_token(self, bytes_body\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_f53a3de5","line":173,"range":{"start_line":173,"start_character":17,"end_line":173,"end_character":27},"updated":"2017-05-19 00:12:44.000000000","message":"According to the v2 API docs [0] the response body is completely different than self.FAKE_TOKEN.\n\n[0] https://developer.openstack.org/api-ref/identity/v2/?expanded\u003dlist-revoked-tokens-v2-detail#list-revoked-tokens-v2","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23363,"name":"Pradeep Kumar","email":"pk5294@att.com","username":"pradeepkumarks"},"change_message_id":"7077c1c0dc1050cf018d4a3e1f137383a77477fa","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.check_service_client_function("},{"line_number":171,"context_line":"            self.client.list_revoked_tokens,"},{"line_number":172,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"},{"line_number":173,"context_line":"            self.FAKE_TOKEN,"},{"line_number":174,"context_line":"            bytes_body)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def _test_list_endpoints_for_token(self, bytes_body\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_10f483ce","line":173,"range":{"start_line":173,"start_character":17,"end_line":173,"end_character":27},"in_reply_to":"ff0f0b1f_f53a3de5","updated":"2017-05-23 11:26:57.000000000","message":"Done","commit_id":"a1aa3c152fec07a699865652ed758eee522e97f1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f50dd4c595ebe0aa581b895215452c7493e49ce7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \"type\": \"network\","},{"line_number":50,"context_line":"                \"id\": \"cdbfa3c416d741a9b5c968f2dc628acb\","},{"line_number":51,"context_line":"                \"publicURL\": \"https://neutron.region-one.public.com/\""},{"line_number":52,"context_line":"            } "},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"    }"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_7a37c74e","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":14},"updated":"2017-05-23 15:19:26.000000000","message":"nit: extra space","commit_id":"c91b8655612bd21a0e38fede2ffe4c676dbef51b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9ba8dec22b02b49dab79caa8e9b1d9f4797939b8","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            bytes_body,"},{"line_number":180,"context_line":"            token_id\u003d\"cbc36478b0bd8e67e89\")"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_revoked_tokens(self, bytes_body\u003dFalse):"},{"line_number":183,"context_line":"        self.check_service_client_function("},{"line_number":184,"context_line":"            self.client.list_revoked_tokens,"},{"line_number":185,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"df140735_4a5a284f","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":33},"updated":"2017-06-01 15:19:39.000000000","message":"Looks like you removed the API for this from your code","commit_id":"0d23fb8f2bff01388db093197072455c7a2f0d4d"}]}
