)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"446f27faf57e60d2ffec3ef127299e86b1fb468c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add return-request-id-to-caller function to"},{"line_number":10,"context_line":"resources and resource managers in the following files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* keystoneclient/v3/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The methods in the resource class and resource manager return"},{"line_number":15,"context_line":"a wrapper class that has \u0027request_ids\u0027 property."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_7aa9bcde","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":20},"updated":"2016-02-04 15:45:03.000000000","message":"the description looks wrong. The patches does much much more.","commit_id":"be94c8ff2d13568e8ba1cfe02f5aad7295c7a85d"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"1359850166ff11256298bc53674aed34f37b3b39","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add return-request-id-to-caller function to"},{"line_number":10,"context_line":"resources and resource managers in the following files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* keystoneclient/v3/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The methods in the resource class and resource manager return"},{"line_number":15,"context_line":"a wrapper class that has \u0027request_ids\u0027 property."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a57f1b5_acb0ae8c","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":20},"in_reply_to":"5a5ae5dd_7aa9bcde","updated":"2016-02-10 07:25:01.000000000","message":"Done","commit_id":"be94c8ff2d13568e8ba1cfe02f5aad7295c7a85d"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"88b38a3200efdf79a0e14fa265c9ff2cb6072b3e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add return-request-id-to-caller function to"},{"line_number":10,"context_line":"resources and resource managers in the following files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"* keystoneclient/v3/auth.py"},{"line_number":13,"context_line":"* keystoneclient/v3/ec2.py"},{"line_number":14,"context_line":"* keystoneclient/v3/endpoints.py"},{"line_number":15,"context_line":"* keystoneclient/v3/groups.py"},{"line_number":16,"context_line":"* keystoneclient/v3/projects.py"},{"line_number":17,"context_line":"* keystoneclient/v3/regions.py"},{"line_number":18,"context_line":"* keystoneclient/v3/services.py"},{"line_number":19,"context_line":"* keystoneclient/v3/roles.py"},{"line_number":20,"context_line":"* keystoneclient/v3/tokens.py"},{"line_number":21,"context_line":"* keystoneclient/v3/users.py"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The methods in the resource class and resource manager return"},{"line_number":24,"context_line":"a wrapper class that has \u0027request_ids\u0027 property."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7f96bb07_f0024f3e","line":21,"range":{"start_line":12,"start_character":0,"end_line":21,"end_character":28},"updated":"2018-01-23 13:13:39.000000000","message":"This patch affects only two of these files.","commit_id":"f2a40bd55936f16f28b19e7d4b4cea868b4de183"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"7e4895fbb1e155a1fb336467297793a41bd9c8de","unresolved":false,"context_lines":[{"line_number":23,"context_line":"* keystoneclient/v3/regions.py"},{"line_number":24,"context_line":"* keystoneclient/v3/services.py"},{"line_number":25,"context_line":"* keystoneclient/v3/roles.py"},{"line_number":26,"context_line":"* keystoneclient/v3/users.py"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The methods in the resource class and resource manager return"},{"line_number":29,"context_line":"a wrapper class that has \u0027request_ids\u0027 property."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"df7087c5_05e6f517","line":26,"updated":"2018-03-07 09:15:10.000000000","message":"1) If the functional changes happened in another patch, the tests should go in that patch. We shouldn\u0027t add tests for unrelated changes to this patch.\n2) I don\u0027t think it\u0027s really necessary to test each child class individually anyway, since the base class is tested. The only reason to test the child classes would be if you expect them to override the behavior somehow.","commit_id":"9ee14ec9b65603721ea335dd876fc688c723394b"}],"keystoneclient/tests/unit/v3/utils.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"446f27faf57e60d2ffec3ef127299e86b1fb468c","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                ref[attr],"},{"line_number":267,"context_line":"                \u0027Expected different %s\u0027 % attr)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return returned"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _get_expected_path(self, expected_path\u003dNone):"},{"line_number":272,"context_line":"        if not expected_path:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a5ae5dd_3a3ee4b8","line":269,"range":{"start_line":269,"start_character":8,"end_line":269,"end_character":23},"updated":"2016-02-04 15:45:03.000000000","message":"it\u0027s a test, why do you want to return something in a test?","commit_id":"be94c8ff2d13568e8ba1cfe02f5aad7295c7a85d"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"1359850166ff11256298bc53674aed34f37b3b39","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                ref[attr],"},{"line_number":267,"context_line":"                \u0027Expected different %s\u0027 % attr)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        return returned"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _get_expected_path(self, expected_path\u003dNone):"},{"line_number":272,"context_line":"        if not expected_path:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_e77b1f7a","line":269,"range":{"start_line":269,"start_character":8,"end_line":269,"end_character":23},"in_reply_to":"5a5ae5dd_3a3ee4b8","updated":"2016-02-10 07:25:01.000000000","message":"I added return to the tests of this code, because the some v3 tests use it.\n\nThe return already exists at test_create.\n(https://review.openstack.org/#/c/267456/4/keystoneclient/tests/unit/v3/utils.py@254)\n\nThe return object is used for the v3 tests to check request_ids. ( e.g.\nhttps://review.openstack.org/#/c/267456/4/keystoneclient/tests/unit/v3/test_endpoints.py@39 )","commit_id":"be94c8ff2d13568e8ba1cfe02f5aad7295c7a85d"}],"keystoneclient/v3/projects.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"7e4895fbb1e155a1fb336467297793a41bd9c8de","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        return self.manager.check_tag(self, tag)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class ProjectManager(base.CrudManager):"},{"line_number":77,"context_line":"    \"\"\"Manager class for manipulating Identity projects.\"\"\""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    resource_class \u003d Project"}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_c549dd60","line":76,"updated":"2018-03-07 09:15:10.000000000","message":"This inherits from the base CrudManager, why not just add this in the list method there, in the first change? https://review.openstack.org/#/c/329913/9/keystoneclient/base.py@423","commit_id":"9ee14ec9b65603721ea335dd876fc688c723394b"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1a1e7c5f154a55bebb061f90413b5554347451bc","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        if self.client.include_metadata:"},{"line_number":151,"context_line":"            base_response.data \u003d list_data"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        return base_response if self.client.include_metadata else list_data"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _check_not_parents_as_ids_and_parents_as_list(self, parents_as_ids,"},{"line_number":156,"context_line":"                                                      parents_as_list):"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf659307_aa75919a","line":153,"updated":"2018-03-24 12:38:01.000000000","message":"Why is this not just part of the CrudManager class?","commit_id":"63a14f9713129403bc7bce63134dba0757494017"}],"keystoneclient/v3/tokens.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"f0e4b6ebfe53718f8b30f38840be14b530e6d1aa","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        token_id \u003d _calc_id(token)"},{"line_number":89,"context_line":"        body \u003d self.get_token_data(token_id, include_catalog\u003dinclude_catalog)"},{"line_number":90,"context_line":"        return access.AccessInfo.factory(auth_token\u003dtoken_id, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_2cde0edd","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":40},"updated":"2016-02-25 01:22:54.000000000","message":"Same comment as this[1].\n[1]: https://review.openstack.org/#/c/267449/7/keystoneclient/v2_0/tokens.py@116","commit_id":"61a5b4e879a37d892549a9166e72be125d08ae6b"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fee5617230cc296ade81df20441d0f8c4cf74479","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        token_id \u003d _calc_id(token)"},{"line_number":89,"context_line":"        body \u003d self.get_token_data(token_id, include_catalog\u003dinclude_catalog)"},{"line_number":90,"context_line":"        return access.AccessInfo.factory(auth_token\u003dtoken_id, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_faa60552","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":40},"in_reply_to":"ba0121b8_e74957d2","updated":"2016-04-04 05:43:25.000000000","message":"I fixed it in access.py.","commit_id":"61a5b4e879a37d892549a9166e72be125d08ae6b"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"529d320d62d7b0904094107edddc7e3504d41897","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        token_id \u003d _calc_id(token)"},{"line_number":89,"context_line":"        body \u003d self.get_token_data(token_id, include_catalog\u003dinclude_catalog)"},{"line_number":90,"context_line":"        return access.AccessInfo.factory(auth_token\u003dtoken_id, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_e74957d2","line":90,"range":{"start_line":90,"start_character":15,"end_line":90,"end_character":40},"in_reply_to":"bae84128_2cde0edd","updated":"2016-03-29 04:33:34.000000000","message":"Same reply as the above[1]. Please check it.","commit_id":"61a5b4e879a37d892549a9166e72be125d08ae6b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6587ba4a34e71d9133479f233e273f7272d097ed","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        token_id \u003d _calc_id(token)"},{"line_number":41,"context_line":"        headers \u003d {\u0027X-Subject-Token\u0027: token_id}"},{"line_number":42,"context_line":"        resp, body \u003d self._client.delete(\u0027/auth/tokens\u0027, headers\u003dheaders)"},{"line_number":43,"context_line":"        return utils.add_request_ids(body, resp)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @positional.method(0)"},{"line_number":46,"context_line":"    def get_revoked(self, audit_id_only\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_3ee31535","line":43,"updated":"2016-06-10 20:01:07.000000000","message":"Reversing the order of arguments doesn\u0027t seem unnecessary, BTW.","commit_id":"b6813ced9ee86759c8f38eded39db94209f82514"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"7e4895fbb1e155a1fb336467297793a41bd9c8de","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, client):"},{"line_number":28,"context_line":"        self._client \u003d client"},{"line_number":29,"context_line":"        self.mgr \u003d base.Manager(self._client)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def revoke_token(self, token):"},{"line_number":32,"context_line":"        \"\"\"Revoke a token."}],"source_content_type":"text/x-python","patch_set":17,"id":"df7087c5_8505257d","line":29,"updated":"2018-03-07 09:15:10.000000000","message":"This is a bit awkward, especially using the private _prepare_return_value method on this object. It feels like a way to work around using inheritance. I wonder if maybe _prepare_return_value could be extracted into a mixin class that both tokens.TokenManager and base.Manager could inherit from?","commit_id":"9ee14ec9b65603721ea335dd876fc688c723394b"}]}
