)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"54f9b15f76fcf44c9545873077cf2a56b3231f32","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-02-25 01:58:58 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP - Add service provider CRUD"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I514c64d2a412d12cff922a02c575f1764a1a23ae"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a80dd14_a3379eaf","line":8,"updated":"2015-03-04 18:51:17.000000000","message":"I\u0027d expect a blueprint here, maybe a ksc version of https://blueprints.launchpad.net/keystone/+spec/k2k-service-providers","commit_id":"a1b5a940d02cf8f6ecedaca5814f1dc48a3f3d29"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f457b5918d3459e3b091178285f961eb78c349f5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-02-25 01:58:58 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP - Add service provider CRUD"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I514c64d2a412d12cff922a02c575f1764a1a23ae"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a80dd14_e30fd6df","line":8,"in_reply_to":"9a80dd14_a3379eaf","updated":"2015-03-04 18:52:56.000000000","message":"registered: https://blueprints.launchpad.net/python-keystoneclient/+spec/k2k-service-providers","commit_id":"a1b5a940d02cf8f6ecedaca5814f1dc48a3f3d29"}],"keystoneclient/tests/unit/v3/test_federation.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b35f36d118b77980d420d2ede24c10441a0116b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9a80dd14_9f6415ba","updated":"2015-03-13 16:58:19.000000000","message":"soon it will make sense to create a federation folder in tests/unit/v3/ and split this tests.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            self.assertRaises(TypeError, getattr(self.manager, f_name),"},{"line_number":458,"context_line":"                              *args)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def test_create(self, ref\u003dNone, req_ref\u003dNone):"},{"line_number":461,"context_line":"        ref \u003d ref or self.new_ref()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        # req_ref argument allows you to specify a different"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2525d25b","line":460,"updated":"2015-03-13 21:34:50.000000000","message":"Nothing calls this with ref or req_ref, so remove these arguments and simplify the test.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            self.assertRaises(TypeError, getattr(self.manager, f_name),"},{"line_number":458,"context_line":"                              *args)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def test_create(self, ref\u003dNone, req_ref\u003dNone):"},{"line_number":461,"context_line":"        ref \u003d ref or self.new_ref()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        # req_ref argument allows you to specify a different"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_70fcc2b5","line":460,"in_reply_to":"9a80dd14_2525d25b","updated":"2015-03-16 09:11:54.000000000","message":"right.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b35f36d118b77980d420d2ede24c10441a0116b","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        req_ref \u003d (req_ref or ref).copy()"},{"line_number":468,"context_line":"        req_ref.pop(\u0027id\u0027)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.stub_entity(\u0027PUT\u0027, entity\u003dref, id\u003dref[\u0027id\u0027], status_code\u003d201)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        returned \u003d self.manager.create(**ref)"},{"line_number":473,"context_line":"        self.assertIsInstance(returned, self.model)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_dfdf6d38","line":470,"updated":"2015-03-13 16:58:19.000000000","message":"the only difference from test_create() in parent class is the method, right? One possibility could be to add a argument to represent the method (default would be \u0027POST\u0027) and just call it with \u0027PUT\u0027 from here. This would avoid a lot of copied code.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"11e3dbdf14c3f8d4226b66feb291849b4d045ce3","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        req_ref \u003d (req_ref or ref).copy()"},{"line_number":468,"context_line":"        req_ref.pop(\u0027id\u0027)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.stub_entity(\u0027PUT\u0027, entity\u003dref, id\u003dref[\u0027id\u0027], status_code\u003d201)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        returned \u003d self.manager.create(**ref)"},{"line_number":473,"context_line":"        self.assertIsInstance(returned, self.model)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_dfb20de4","line":470,"in_reply_to":"9a80dd14_dfdf6d38","updated":"2015-03-13 17:00:45.000000000","message":"noticed that the url also contains the \u0027id\u0027, another difference... not sure the suggestion still applies.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"}],"keystoneclient/v3/contrib/federation/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from keystoneclient.v3.contrib.federation import service_providers"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class FederationManager(object):"},{"line_number":22,"context_line":"    def __init__(self, api):"},{"line_number":23,"context_line":"        self.identity_providers \u003d identity_providers.IdentityProviderManager("},{"line_number":24,"context_line":"            api)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_85511e64","line":21,"updated":"2015-03-13 21:34:50.000000000","message":"without and documentation this class is unusable.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from keystoneclient.v3.contrib.federation import service_providers"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class FederationManager(object):"},{"line_number":22,"context_line":"    def __init__(self, api):"},{"line_number":23,"context_line":"        self.identity_providers \u003d identity_providers.IdentityProviderManager("},{"line_number":24,"context_line":"            api)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_104d463e","line":21,"in_reply_to":"9a80dd14_85511e64","updated":"2015-03-16 09:11:54.000000000","message":"this can go in a separate patch.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"}],"keystoneclient/v3/contrib/federation/service_providers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Create Service Provider object."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        Utilize Keystone URI:"},{"line_number":48,"context_line":"        PUT /OS-FEDERATION/service_providers/$service_provider"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_a591c2f2","line":48,"updated":"2015-03-13 21:34:50.000000000","message":"suggest put this in ``.\n\nAlso, change $service_provider to {id}","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Create Service Provider object."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        Utilize Keystone URI:"},{"line_number":48,"context_line":"        PUT /OS-FEDERATION/service_providers/$service_provider"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_30932aa4","line":48,"in_reply_to":"9a80dd14_a591c2f2","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        PUT /OS-FEDERATION/service_providers/$service_provider"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."},{"line_number":52,"context_line":"        :param auth_url: auth endpoint of the service provider."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_c565d6af","line":51,"updated":"2015-03-13 21:34:50.000000000","message":"sp_url isn\u0027t a parameter.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        PUT /OS-FEDERATION/service_providers/$service_provider"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."},{"line_number":52,"context_line":"        :param auth_url: auth endpoint of the service provider."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_508ede79","line":51,"in_reply_to":"9a80dd14_c565d6af","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."},{"line_number":52,"context_line":"        :param auth_url: auth endpoint of the service provider."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        return self._build_url_and_put(service_provider_id\u003did,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_050b6ed6","line":52,"updated":"2015-03-13 21:34:50.000000000","message":"auth_url isn\u0027t a parameter","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param id: unique id of the service provider."},{"line_number":51,"context_line":"        :param sp_url: shibboleth endpoint of the service provider."},{"line_number":52,"context_line":"        :param auth_url: auth endpoint of the service provider."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        return self._build_url_and_put(service_provider_id\u003did,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_7089226e","line":52,"in_reply_to":"9a80dd14_050b6ed6","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\"Fetch Service Provider object"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        Utilize Keystone URI:"},{"line_number":62,"context_line":"        GET /OS-FEDERATION/service_providers/$service_provider"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        :param service_provider: an object with service_provider_id"},{"line_number":65,"context_line":"                                  stored inside."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_65b26a95","line":62,"updated":"2015-03-13 21:34:50.000000000","message":"suggest put this in ``.","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\"Fetch Service Provider object"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        Utilize Keystone URI:"},{"line_number":62,"context_line":"        GET /OS-FEDERATION/service_providers/$service_provider"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        :param service_provider: an object with service_provider_id"},{"line_number":65,"context_line":"                                  stored inside."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_b0ee3a20","line":62,"in_reply_to":"9a80dd14_65b26a95","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\"List all Service Providers."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        Utilize Keystone URI:"},{"line_number":75,"context_line":"        GET /OS-FEDERATION/service_providers"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        \"\"\""},{"line_number":78,"context_line":"        return super(ServiceProviderManager, self).list(**kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_e5657a1e","line":75,"updated":"2015-03-13 21:34:50.000000000","message":"suggest put this in ``","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\"List all Service Providers."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        Utilize Keystone URI:"},{"line_number":75,"context_line":"        GET /OS-FEDERATION/service_providers"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        \"\"\""},{"line_number":78,"context_line":"        return super(ServiceProviderManager, self).list(**kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_d0f1ee01","line":75,"in_reply_to":"9a80dd14_e5657a1e","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2d4edb00c1fb8005055a7b33d5b08352ef63a7dd","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        PATCH /OS-FEDERATION/service_providers/$service_provider"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param service_provider: an object with service_provider_id"},{"line_number":87,"context_line":"                                  stored inside."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        return super(ServiceProviderManager, self).update("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_0550ce30","line":87,"updated":"2015-03-13 21:34:50.000000000","message":"doesn\u0027t this update the existing service provider with the properties of the provided service provider?","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"7d5ef06aa2ddbfddaabf48683d3787dc1a67bb97","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        PATCH /OS-FEDERATION/service_providers/$service_provider"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param service_provider: an object with service_provider_id"},{"line_number":87,"context_line":"                                  stored inside."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        return super(ServiceProviderManager, self).update("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_903936a6","line":87,"in_reply_to":"9a80dd14_0550ce30","updated":"2015-03-16 09:11:54.000000000","message":"Done","commit_id":"2754cb5d410662566a9abf7cf453526c61132ef1"}]}
