)]}'
{"keystoneclient/base.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5132f21f39c7219f09453bbed247a70847be2f16","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may#    not use this file except in compliance with the License. You may obtain"},{"line_number":7,"context_line":"#    a copy of the License at"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F98bE%3D","line":6,"updated":"2014-04-01 03:01:04.000000000","message":"undo this change to make jenkins happy again.","commit_id":"a0fc78c2e487cbcc8b368055224a77048e7895d7"}],"keystoneclient/tests/v3/test_federation.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9bf9831bb1912955d7f0aea10ca84176b8ba1973","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        \"\"\""},{"line_number":189,"context_line":"        request_args \u003d self.new_ref()"},{"line_number":190,"context_line":"        response \u003d self._transform_to_response(request_args)"},{"line_number":191,"context_line":"        parts \u003d self.build_parts(request_args[\u0027identity_provider\u0027],"},{"line_number":192,"context_line":"                                 request_args[\u0027protocol_id\u0027])"},{"line_number":193,"context_line":"        self.stub_entity(httpretty.PUT, entity\u003dresponse,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_39ca724f","line":190,"updated":"2014-06-18 17:05:28.000000000","message":"I think this may be more readable if \u0027response\u0027 was named \u0027expected\u0027 and you just did an assertEqual. I was thinking:\ndiff --git i/keystoneclient/tests/v3/test_federation.py w/keystoneclient/tests/v3/test_federation.py\nindex d9e472e..0c781e2 100644\n    --- i/keystoneclient/tests/v3/test_federation.py\n    +++ w/keystoneclient/tests/v3/test_federation.py\n    @@ -187,13 +187,13 @@ class ProtocolTests(utils.TestCase, utils.CrudTests):\n\n             \"\"\"\n             request_args \u003d self.new_ref()\n    -        response \u003d self._transform_to_response(request_args)\n    +        expected \u003d self._transform_to_response(request_args)\n             parts \u003d self.build_parts(request_args[\u0027identity_provider\u0027],\n                                      request_args[\u0027protocol_id\u0027])\n    -        self.stub_entity(httpretty.PUT, entity\u003dresponse,\n    +        self.stub_entity(httpretty.PUT, entity\u003dexpected,\n                              parts\u003dparts, status\u003d201)\n             returned \u003d self.manager.create(**request_args)\n    -        self._compare_attributes(returned, response)\n    +        self.assertEqual(expected, returned.to_dict())\n             request_body \u003d {\u0027mapping_id\u0027: request_args[\u0027mapping_id\u0027]}\n             self.assertEntityRequestBodyIs(request_body)","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e99716f321ee2799f7275b66476952a3cfe8ced8","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        \"\"\""},{"line_number":189,"context_line":"        request_args \u003d self.new_ref()"},{"line_number":190,"context_line":"        response \u003d self._transform_to_response(request_args)"},{"line_number":191,"context_line":"        parts \u003d self.build_parts(request_args[\u0027identity_provider\u0027],"},{"line_number":192,"context_line":"                                 request_args[\u0027protocol_id\u0027])"},{"line_number":193,"context_line":"        self.stub_entity(httpretty.PUT, entity\u003dresponse,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_4eb2fa96","line":190,"in_reply_to":"1ae5cdf2_39ca724f","updated":"2014-06-19 08:09:34.000000000","message":"makes things more clear, thanks!","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"}],"keystoneclient/tests/v3/utils.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5132f21f39c7219f09453bbed247a70847be2f16","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        if entity:"},{"line_number":169,"context_line":"            entity \u003d self.encode(entity)"},{"line_number":170,"context_line":"            kwargs[\u0027json\u0027] \u003d entity"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if not parts:"},{"line_number":173,"context_line":"            parts \u003d [self.collection_key]"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F98a4%3D","side":"PARENT","line":171,"updated":"2014-04-01 03:01:04.000000000","message":"undo this change, too","commit_id":"626b36af21b641b7d7ab1fdbabdb2606390ddf44"}],"keystoneclient/v3/contrib/federation/protocols.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0e484cc9ec391fd250751ebf98b89dd6146113b2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, identity_provider_id, protocol_id, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXX%2F%2FsVs%3D","line":60,"updated":"2014-04-28 16:29:35.000000000","message":"should be just \u0027id\u0027 for protocol_id, and  identity_provider_id  should be  base. identity_provider , passed to super via\n\nbase.getid(identity_provider),","commit_id":"6a59dd520dcc407203296fc5a13597ca9f5ddd6c"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"627eff5012e5c4cb0f8a2b1b4f5e74220d9f0968","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, identity_provider_id, protocol_id, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7adec928_8947babb","line":60,"in_reply_to":"AAAAXX%2F%2FsVs%3D","updated":"2014-05-15 16:31:50.000000000","message":"ok for the base.getid(identity_provider), but i\u0027d rather stick to the protocol_id variable and be compilant with mappings: https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v3/contrib/federation/mappings.py#L43","commit_id":"6a59dd520dcc407203296fc5a13597ca9f5ddd6c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c03da2464b65e8fb8a1d49d68e1e5892cabd3239","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            protocol"},{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping: a base.Resource object with federation mapping id"},{"line_number":72,"context_line":"                        stored inside."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_fe0ab077","line":71,"updated":"2014-06-03 20:14:58.000000000","message":"mapping isn\u0027t in the method signature, or is it in kwargs?","commit_id":"4957d6875c9fca54c513bf3369eeff6462494f8b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9fea03711af8d2bc87f8c755a42edf87ae10b2fe","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            protocol"},{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping: a base.Resource object with federation mapping id"},{"line_number":72,"context_line":"                        stored inside."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_086eafc9","line":71,"in_reply_to":"1ae5cdf2_7e04e017","updated":"2014-06-09 03:40:27.000000000","message":"cool, thanks","commit_id":"4957d6875c9fca54c513bf3369eeff6462494f8b"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"5a6fbadf2a6c958e7466f66694c7daccc710406b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            protocol"},{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping: a base.Resource object with federation mapping id"},{"line_number":72,"context_line":"                        stored inside."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_7e04e017","line":71,"in_reply_to":"1ae5cdf2_fe0ab077","updated":"2014-06-03 20:27:32.000000000","message":"in kwargs, since mapping should be sent to the server and it\u0027s kwargs that is body of the request (more or less).","commit_id":"4957d6875c9fca54c513bf3369eeff6462494f8b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c03da2464b65e8fb8a1d49d68e1e5892cabd3239","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            Provider id stored inside"},{"line_number":119,"context_line":"        :param protocol: a base.Resource type object with federation protocol"},{"line_number":120,"context_line":"            id stored inside"},{"line_number":121,"context_line":"        :param mapping: a base.Resource type object with federation mapping"},{"line_number":122,"context_line":"            id stored inside."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_3e2898e1","line":121,"updated":"2014-06-03 20:14:58.000000000","message":"same comment here as above.","commit_id":"4957d6875c9fca54c513bf3369eeff6462494f8b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9bf9831bb1912955d7f0aea10ca84176b8ba1973","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    key \u003d \u0027protocol\u0027"},{"line_number":34,"context_line":"    base_url \u003d \u0027OS-FEDERATION/identity_providers\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def build_url(self, dict_args_in_out\u003dNone):"},{"line_number":37,"context_line":"        \"\"\"Build URL for federation protocols.\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if dict_args_in_out is None:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_b995a2e5","line":36,"updated":"2014-06-18 17:05:28.000000000","message":"Why are we looking for identity_provider_id if the key is protocol? I\u0027m not saying that this is wrong, I just don\u0027t understand.","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e99716f321ee2799f7275b66476952a3cfe8ced8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    key \u003d \u0027protocol\u0027"},{"line_number":34,"context_line":"    base_url \u003d \u0027OS-FEDERATION/identity_providers\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def build_url(self, dict_args_in_out\u003dNone):"},{"line_number":37,"context_line":"        \"\"\"Build URL for federation protocols.\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if dict_args_in_out is None:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_31042f14","line":36,"in_reply_to":"1ae5cdf2_b995a2e5","updated":"2014-06-19 08:09:34.000000000","message":"Protocol itself cannot exist without the identity_provider.\nAlmost all REST operations w/ protocols also include idp .e.g:\n\nPUT /v3/OS-FEDERATION/identity_providers/{idp}/protocols/{protocol}\nGET  /v3/OS-FEDERATION/identity_providers/{idp}/protocols/{protocol}\netc etc.\n\nMore info here: https://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3-os-federation-ext.md#protocols-os-federationidentity_providersidp_idprotocols","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9bf9831bb1912955d7f0aea10ca84176b8ba1973","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            base_url \u003d self.base_url"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        dict_args_in_out.setdefault(\u0027base_url\u0027, base_url)"},{"line_number":50,"context_line":"        return super(ProtocolManager, self).build_url(dict_args_in_out)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_url_and_put(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_994706a3","line":49,"updated":"2014-06-18 17:05:28.000000000","message":"So base_url could already exist in the dictionary at this point? And if it does we disregard the identity_provider_id?","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"92662b674d4efe97b9eb0386a06eec3b1dbe54e8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            base_url \u003d self.base_url"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        dict_args_in_out.setdefault(\u0027base_url\u0027, base_url)"},{"line_number":50,"context_line":"        return super(ProtocolManager, self).build_url(dict_args_in_out)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_url_and_put(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_c9ea6d0e","line":49,"in_reply_to":"1ae5cdf2_119bb3c9","updated":"2014-06-19 19:19:07.000000000","message":"Can you add a test here to show the expected behavior when a base_url is provided?","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e99716f321ee2799f7275b66476952a3cfe8ced8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            base_url \u003d self.base_url"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        dict_args_in_out.setdefault(\u0027base_url\u0027, base_url)"},{"line_number":50,"context_line":"        return super(ProtocolManager, self).build_url(dict_args_in_out)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_url_and_put(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_119bb3c9","line":49,"in_reply_to":"1ae5cdf2_994706a3","updated":"2014-06-19 08:09:34.000000000","message":"If somebody put the base_url already, I assume he knows what he is doing and I will simply let him use his value. Meantime, we should always try to pop identity_provider_id, otherwise it will be put in the requests body.\nThat\u0027s what I don\u0027t like w/ current design, all the variables are stored in kwargs dictionary and one can only hope all the hepler variables will be correctly popped before the kwargs is used as a request body :( Personally, I would split it somehow into two dictionaries - params and request_body or sth like that.","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"ebf1042869247e79209013029af66bcdbe519797","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            base_url \u003d self.base_url"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        dict_args_in_out.setdefault(\u0027base_url\u0027, base_url)"},{"line_number":50,"context_line":"        return super(ProtocolManager, self).build_url(dict_args_in_out)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _build_url_and_put(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_64888e6b","line":49,"in_reply_to":"1ae5cdf2_c9ea6d0e","updated":"2014-06-20 09:12:22.000000000","message":"added:\n\ntest_build_url_provide_base_url()\ntest_build_url_w_idp_id()\ntest_build_url_default_base_url()","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"31dc1ea9c65c869c2e5010855e35cf9fe83475dd","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping: a base.Resource object with federation mapping id"},{"line_number":72,"context_line":"                        stored inside."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_e0ee8e8a","line":72,"updated":"2014-06-18 17:42:57.000000000","message":":param mapping:? It is not part of the args.","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e99716f321ee2799f7275b66476952a3cfe8ced8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping: a base.Resource object with federation mapping id"},{"line_number":72,"context_line":"                        stored inside."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_6e45f66d","line":72,"in_reply_to":"1ae5cdf2_e0ee8e8a","updated":"2014-06-19 08:09:34.000000000","message":"It\u0027s not. TBH I didn\u0027t know how I should behave here - mapping should be in the kwargs dict, as kwargs represent to body of the request later sent to the server.\nBy putting mapping in the docstring I suggested it should not be ommited while calling this method.\n\nShould I remove this from the docstring?","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9bf9831bb1912955d7f0aea10ca84176b8ba1973","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        :param protocol: a base.Resource type object with federation protocol"},{"line_number":120,"context_line":"            id stored inside"},{"line_number":121,"context_line":"        :param mapping: a base.Resource type object with federation mapping"},{"line_number":122,"context_line":"            id stored inside."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        return super(ProtocolManager, self).update("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_196f76fd","line":122,"updated":"2014-06-18 17:05:28.000000000","message":"I don\u0027t see a param named mapping. Should we be getting a mapping dict instead of kwargs?","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"e99716f321ee2799f7275b66476952a3cfe8ced8","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        :param protocol: a base.Resource type object with federation protocol"},{"line_number":120,"context_line":"            id stored inside"},{"line_number":121,"context_line":"        :param mapping: a base.Resource type object with federation mapping"},{"line_number":122,"context_line":"            id stored inside."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        return super(ProtocolManager, self).update("}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_ce536a38","line":122,"in_reply_to":"1ae5cdf2_196f76fd","updated":"2014-06-19 08:09:34.000000000","message":"TBH I didn\u0027t know how I should behave here - mapping should be in the kwargs dict, as kwargs represent to body of the request later sent to the server.\nBy putting mapping in the docstring I suggested it should not be ommited while calling this method.\n\nShould I remove this from the docstring?","commit_id":"e2856631fb195a62abfe18b601f8a2e6b34a8a22"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"17c074a0b0910228d3bea62ef72f568acf3dbcdc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, protocol_id, identity_provider, mapping_id, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_cde30904","line":60,"updated":"2014-06-29 06:32:36.000000000","message":"my only issue with this is that you can and should use a mapping object instead of mapping_id\n\nso s/mapping_id/mapping","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"69eab4f0b826ed8c081fee3bb0c5dffd731770da","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, protocol_id, identity_provider, mapping_id, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_b6d618c4","line":60,"in_reply_to":"dab895d6_cde30904","updated":"2014-06-30 09:51:39.000000000","message":"Done","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"17c074a0b0910228d3bea62ef72f568acf3dbcdc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            protocol"},{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping_id: string with federation mapping id"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_edf0cdcb","line":71,"updated":"2014-06-29 06:32:36.000000000","message":"s/mapping_id/mapping","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"69eab4f0b826ed8c081fee3bb0c5dffd731770da","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            protocol"},{"line_number":69,"context_line":"        :param identity_provider: a string type parameter identifying an"},{"line_number":70,"context_line":"                                  Identity Provider"},{"line_number":71,"context_line":"        :param mapping_id: string with federation mapping id"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_d6daace8","line":71,"in_reply_to":"dab895d6_edf0cdcb","updated":"2014-06-30 09:51:39.000000000","message":"Done","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"17c074a0b0910228d3bea62ef72f568acf3dbcdc","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        return self._build_url_and_put("},{"line_number":75,"context_line":"            request_body\u003d{\u0027mapping_id\u0027: mapping_id},"},{"line_number":76,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":77,"context_line":"            protocol_id\u003dprotocol_id, **kwargs)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_0deee1ec","line":75,"updated":"2014-06-29 06:32:36.000000000","message":"request_body\u003d{\u0027mapping_id\u0027: base.getid(mapping)},","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"69eab4f0b826ed8c081fee3bb0c5dffd731770da","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        return self._build_url_and_put("},{"line_number":75,"context_line":"            request_body\u003d{\u0027mapping_id\u0027: mapping_id},"},{"line_number":76,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":77,"context_line":"            protocol_id\u003dprotocol_id, **kwargs)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_f6d7b0bd","line":75,"in_reply_to":"dab895d6_0deee1ec","updated":"2014-06-30 09:51:39.000000000","message":"Done","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6fe2e75a4dddb76c33dcbcd52385a323d848f735","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return super(ProtocolManager, self).list("},{"line_number":108,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider), **kwargs)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def update(self, identity_provider, protocol, mapping_id, **kwargs):"},{"line_number":111,"context_line":"        \"\"\"Update Protocol object tied to the Identity Provider."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_6dabdd89","line":110,"updated":"2014-06-29 06:34:59.000000000","message":"you can change these to mapping objects too","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"69eab4f0b826ed8c081fee3bb0c5dffd731770da","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return super(ProtocolManager, self).list("},{"line_number":108,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider), **kwargs)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def update(self, identity_provider, protocol, mapping_id, **kwargs):"},{"line_number":111,"context_line":"        \"\"\"Update Protocol object tied to the Identity Provider."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        Utilize Identity API operation:"}],"source_content_type":"text/x-python","patch_set":20,"id":"dab895d6_76f3a073","line":110,"in_reply_to":"dab895d6_6dabdd89","updated":"2014-06-30 09:51:39.000000000","message":"Done","commit_id":"7354f34e2d7c0251d3937c1d00aa38194a7b0d8d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f406e785af72d02bf3bd866bf087cd11a46b0a2f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                            response_key\u003dself.key,"},{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, protocol_id, identity_provider, mapping, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_8dc52a3f","line":59,"updated":"2014-07-10 20:15:17.000000000","message":"Can we change this to 3 so that we can pass in the positional args without making them keyword args?","commit_id":"995809e28923fb56384ce7e53a8363ec7364253b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2a2253862429c5220c68e7d449ff1460c4bf366a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                            response_key\u003dself.key,"},{"line_number":57,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @utils.positional.method(0)"},{"line_number":60,"context_line":"    def create(self, protocol_id, identity_provider, mapping, **kwargs):"},{"line_number":61,"context_line":"        \"\"\"Create federation protocol object and tie to the Identity Provider."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_979370f9","line":59,"in_reply_to":"baada198_8dc52a3f","updated":"2014-07-10 22:23:30.000000000","message":"Done","commit_id":"995809e28923fb56384ce7e53a8363ec7364253b"}]}
