)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a396efcf432f17e7e7579cdd076ea45894a2b9b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Limited use trusts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts now have a \"remaining_uses\" field that track how many times"},{"line_number":10,"context_line":"a trust can still issue a token. It is decremented by 1 each time a"},{"line_number":11,"context_line":"trust related authentication occurs (call to /auth/tokens), until it"},{"line_number":12,"context_line":"reaches 0 and no token can be issued through this trust anymore. If"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAVn%2F%2FGFk%3D","line":9,"updated":"2014-03-09 22:10:16.000000000","message":"change \"track\" to \"tracks\"","commit_id":"95e14de7a9996cedad3bedb7e9f36b6bce0f08f0"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"33dc290ac22fcbfc98abdbda7f48bd52c26458c9","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This is the client side of the implementation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1250617"},{"line_number":18,"context_line":"Implements: bp trusts-chained-delegation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ib035a9772b7f035c3a9af102e8e15a860a96a96d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAVn%2F%2FbFU%3D","line":18,"updated":"2014-03-06 06:23:32.000000000","message":"isn\u0027t found?","commit_id":"95e14de7a9996cedad3bedb7e9f36b6bce0f08f0"},{"author":{"_account_id":10765,"name":"Andre Aranha","email":"afaranha@lsd.ufcg.edu.br","username":"afaranha"},"change_message_id":"f421fc43621fa2ff7a20d0a5fbceb2a464dbf37a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This is the client side of the implementation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1250617"},{"line_number":18,"context_line":"Implements: bp trusts-chained-delegation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ib035a9772b7f035c3a9af102e8e15a860a96a96d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXH%2F%2FU8Y%3D","line":18,"updated":"2014-04-22 13:56:08.000000000","message":"Blueprint was not find. Does this really has a blueprint, since it\u0027s already a bug?","commit_id":"149ed91a5f6cfba788e57b106efcfcc9cac16215"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3eaaa648291a205378106af0b7a04ad21768b440","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This is the client side of the implementation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1250617"},{"line_number":18,"context_line":"Implements: bp trusts-chained-delegation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ib035a9772b7f035c3a9af102e8e15a860a96a96d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAXH%2F%2FT5Y%3D","line":18,"in_reply_to":"AAAAXH%2F%2FU8Y%3D","updated":"2014-04-22 15:30:38.000000000","message":"A bp was created for the server side of the feature, it was set as \"Complete\" when the patch for keystone was merged : https://blueprints.launchpad.net/keystone/+spec/trusts-chained-delegation\nMaybe it needs to be reopened ?","commit_id":"149ed91a5f6cfba788e57b106efcfcc9cac16215"}],"keystoneclient/tests/v3/test_trusts.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5f46c5941ae40b7bdded30408125d92f7e1c897a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":41,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":42,"context_line":"        ref[\u0027impersonation\u0027] \u003d False"},{"line_number":43,"context_line":"        ref[\u0027remaining_uses\u0027] \u003d -1"},{"line_number":44,"context_line":"        super(TrustTests, self).test_create(ref\u003dref)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_create_roles(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FvW8%3D","line":43,"updated":"2014-02-11 04:59:12.000000000","message":"what is -1 through here? Should set to something valid.\n\nIt doesn\u0027t appear to get tested for being passed through. You shouldn\u0027t need a default value for the other tests.","commit_id":"5409177ef7f669da4961589bd18a7a36b1a5fb54"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a396efcf432f17e7e7579cdd076ea45894a2b9b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":39,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":40,"context_line":"        ref[\u0027impersonation\u0027] \u003d False"},{"line_number":41,"context_line":"        ref[\u0027remaining_uses\u0027] \u003d 1"},{"line_number":42,"context_line":"        super(TrustTests, self).test_create(ref\u003dref)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_create_roles(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FGFM%3D","line":41,"updated":"2014-03-09 22:10:16.000000000","message":"since remaining_uses is optional I don\u0027t see why we need to add this. These tests should continue to work as they did before.","commit_id":"95e14de7a9996cedad3bedb7e9f36b6bce0f08f0"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"eff5a359c188605f34b665400f44d8b6d6b41267","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        ref[\u0027impersonation\u0027] \u003d False"},{"line_number":41,"context_line":"        super(TrustTests, self).test_create(ref\u003dref)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create_limited_uses(self):"},{"line_number":44,"context_line":"        ref \u003d self.new_ref()"},{"line_number":45,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Bk4U%3D","line":43,"updated":"2014-03-25 19:31:33.000000000","message":"i don\u0027t see that you use this new function anywhere?\n\nall you need for a test is a function that calls trust.create with remaining_uses and asserts that remaining_uses correctly appears in the request.","commit_id":"664175bbea1dfbbb3b232782aca99c2f32c50e46"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3276cc45914c0bf691078a6681f98fe0daf58e49","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        ref[\u0027impersonation\u0027] \u003d False"},{"line_number":41,"context_line":"        super(TrustTests, self).test_create(ref\u003dref)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create_limited_uses(self):"},{"line_number":44,"context_line":"        ref \u003d self.new_ref()"},{"line_number":45,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FVXY%3D","line":43,"in_reply_to":"AAAAWH%2F%2Bk4U%3D","updated":"2014-04-22 13:11:11.000000000","message":"I think that\u0027s what it does already ? the method test_create checks for the presence of attributes in what the manager returns.","commit_id":"664175bbea1dfbbb3b232782aca99c2f32c50e46"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d692420de9240f3fbc93da54c87d2deca5f605fb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":89,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":90,"context_line":"        ref[\u0027impersonation\u0027] \u003d True"},{"line_number":91,"context_line":"        ref[\u0027remaining_uses\u0027] \u003d 1"},{"line_number":92,"context_line":"        req_ref \u003d ref.copy()"},{"line_number":93,"context_line":"        ref[\u0027role_names\u0027] \u003d [\u0027atestrole\u0027]"},{"line_number":94,"context_line":"        req_ref[\u0027roles\u0027] \u003d [{\u0027name\u0027: \u0027atestrole\u0027}]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FQc4%3D","line":91,"updated":"2014-04-22 23:47:24.000000000","message":"this should be able to work as it did before, without changes. If a new test is needed, add it.","commit_id":"149ed91a5f6cfba788e57b106efcfcc9cac16215"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"a9766dc0b90530f019dc570011a08b0282ae1d32","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        ref[\u0027trustor_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":89,"context_line":"        ref[\u0027trustee_user_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":90,"context_line":"        ref[\u0027impersonation\u0027] \u003d True"},{"line_number":91,"context_line":"        ref[\u0027remaining_uses\u0027] \u003d 1"},{"line_number":92,"context_line":"        req_ref \u003d ref.copy()"},{"line_number":93,"context_line":"        ref[\u0027role_names\u0027] \u003d [\u0027atestrole\u0027]"},{"line_number":94,"context_line":"        req_ref[\u0027roles\u0027] \u003d [{\u0027name\u0027: \u0027atestrole\u0027}]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXH%2F%2FOQs%3D","line":91,"in_reply_to":"AAAAXH%2F%2FQc4%3D","updated":"2014-04-23 08:43:46.000000000","message":"Done","commit_id":"149ed91a5f6cfba788e57b106efcfcc9cac16215"}],"keystoneclient/v3/contrib/trusts.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5f46c5941ae40b7bdded30408125d92f7e1c897a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        :param boolean impersonation: enable explicit impersonation"},{"line_number":49,"context_line":"        :param datetime.datetime expires_at: expiry time"},{"line_number":50,"context_line":"        :param integer remaining_uses: how many times this trust can be used"},{"line_number":51,"context_line":"        to generate a token. None means unlimited tokens."},{"line_number":52,"context_line":"        \"\"\""},{"line_number":53,"context_line":"        # Convert role_names list into list-of-dict API format"},{"line_number":54,"context_line":"        if role_names:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FvXU%3D","line":51,"updated":"2014-02-11 04:59:12.000000000","message":"indent the second line to the :\n\nit\u0027s a crappy scheme but we use it elsewhere","commit_id":"5409177ef7f669da4961589bd18a7a36b1a5fb54"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"33dc290ac22fcbfc98abdbda7f48bd52c26458c9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        :param boolean impersonation: enable explicit impersonation"},{"line_number":47,"context_line":"        :param datetime.datetime expires_at: expiry time"},{"line_number":48,"context_line":"        :param integer remaining_uses: how many times this trust can be used"},{"line_number":49,"context_line":"        to generate a token. None means unlimited tokens."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        # Convert role_names list into list-of-dict API format"},{"line_number":52,"context_line":"        if role_names:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FbFc%3D","line":49,"updated":"2014-03-06 06:23:32.000000000","message":"should probably be indented to the :","commit_id":"95e14de7a9996cedad3bedb7e9f36b6bce0f08f0"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"eff5a359c188605f34b665400f44d8b6d6b41267","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        :param boolean impersonation: enable explicit impersonation"},{"line_number":47,"context_line":"        :param datetime.datetime expires_at: expiry time"},{"line_number":48,"context_line":"        :param integer remaining_uses: how many times this trust can be used"},{"line_number":49,"context_line":"         to generate a token. None means unlimited tokens."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        # Convert role_names list into list-of-dict API format"},{"line_number":52,"context_line":"        if role_names:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Bk6A%3D","line":49,"updated":"2014-03-25 19:31:33.000000000","message":"sorry, i meant the second :","commit_id":"664175bbea1dfbbb3b232782aca99c2f32c50e46"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3276cc45914c0bf691078a6681f98fe0daf58e49","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        :param boolean impersonation: enable explicit impersonation"},{"line_number":47,"context_line":"        :param datetime.datetime expires_at: expiry time"},{"line_number":48,"context_line":"        :param integer remaining_uses: how many times this trust can be used"},{"line_number":49,"context_line":"         to generate a token. None means unlimited tokens."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        # Convert role_names list into list-of-dict API format"},{"line_number":52,"context_line":"        if role_names:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FVeA%3D","line":49,"in_reply_to":"AAAAWH%2F%2Bk6A%3D","updated":"2014-04-22 13:11:11.000000000","message":"Done","commit_id":"664175bbea1dfbbb3b232782aca99c2f32c50e46"}]}
