)]}'
{"keystoneclient/v3/contrib/federation/identity_providers.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fb4e97300bdf3ed201a836c4aff5b63eb7919a42","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _store_id_in_kwargs(self, id, kwargs):"},{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BQaQ%3D","line":42,"updated":"2014-03-28 02:33:23.000000000","message":"this is essentially what the base.getid function should do for you.","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"42f93f1e7531b7a5288be4f7ffdaa65a48078be4","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _store_id_in_kwargs(self, id, kwargs):"},{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOE0%3D","line":42,"in_reply_to":"AAAAWH%2F%2BQaQ%3D","updated":"2014-03-28 10:29:47.000000000","message":"removed.","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"82558917a05656fcf4bf9dc0f89f8eb14ed5a021","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _store_id_in_kwargs(self, id, kwargs):"},{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"},{"line_number":46,"context_line":"        return self._put(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BUBQ%3D","line":43,"updated":"2014-03-27 17:47:07.000000000","message":"missing a list function","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"42f93f1e7531b7a5288be4f7ffdaa65a48078be4","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _store_id_in_kwargs(self, id, kwargs):"},{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"},{"line_number":46,"context_line":"        return self._put(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOaA%3D","line":43,"in_reply_to":"AAAAWH%2F%2BUBQ%3D","updated":"2014-03-28 10:29:47.000000000","message":"...so I think the base.CrudManager.list() will be called, and here my own implementation would just call super(IdentityProviderManager, self).list(**kwargs).\nOr it\u0027s just for readibility?","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"82558917a05656fcf4bf9dc0f89f8eb14ed5a021","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"},{"line_number":46,"context_line":"        return self._put(**kwargs)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BUBo%3D","line":44,"updated":"2014-03-27 17:47:07.000000000","message":"i think description and enabled should be required args that default to None and True","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"42f93f1e7531b7a5288be4f7ffdaa65a48078be4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        key_name \u003d \"%s_id\" % self.key"},{"line_number":42,"context_line":"        kwargs.setdefault(key_name, id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def create(self, **kwargs):"},{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"},{"line_number":46,"context_line":"        return self._put(**kwargs)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOPQ%3D","line":44,"in_reply_to":"AAAAWH%2F%2BUBo%3D","updated":"2014-03-28 10:29:47.000000000","message":"Done.\nHow about not allowing **kwargs? Then I could enforce that only \u0027identity_provider\u0027, \u0027descrption\u0027 and \u0027enabled\u0027 parameters are allowed.","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"82558917a05656fcf4bf9dc0f89f8eb14ed5a021","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        kwargs.setdefault(\u0027description\u0027, None)"},{"line_number":46,"context_line":"        return self._put(**kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get(self, id, **kwargs):"},{"line_number":49,"context_line":"        self._store_id_in_kwargs(id, kwargs)"},{"line_number":50,"context_line":"        return super(IdentityProviderManager, self).get(**kwargs)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BUBU%3D","line":48,"updated":"2014-03-27 17:47:07.000000000","message":"this will be tricky, since we\u0027re used to passing in objects for get, instead of just an id. Same goes for delete and update.","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fb4e97300bdf3ed201a836c4aff5b63eb7919a42","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def update(self, id, **kwargs):"},{"line_number":58,"context_line":"        self._store_id_in_kwargs(id, kwargs)"},{"line_number":59,"context_line":"        return super(IdentityProviderManager, self).update(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BQaE%3D","line":59,"updated":"2014-03-28 02:33:23.000000000","message":"so in general id should at least allow a IdentityProvider object to be passed. All you should have to do is pass to super with identity_provider\u003did and it will figure that out for you. \n\nIf you want to be more sure pass identity_provider_id\u003dbase.getid(id)","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"42f93f1e7531b7a5288be4f7ffdaa65a48078be4","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def update(self, id, **kwargs):"},{"line_number":58,"context_line":"        self._store_id_in_kwargs(id, kwargs)"},{"line_number":59,"context_line":"        return super(IdentityProviderManager, self).update(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BOC4%3D","line":59,"in_reply_to":"AAAAWH%2F%2BQaE%3D","updated":"2014-03-28 10:29:47.000000000","message":"Done","commit_id":"d854d8a8e784131541d270cc2ce05468ecbc1d16"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"481057ff417cb4071a360a688899c668b716bad7","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class IdentityProvider(base.Resource):"},{"line_number":17,"context_line":"    pass"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class IdentityProviderManager(base.CrudManager):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F91Is%3D","line":17,"updated":"2014-04-01 20:22:58.000000000","message":"I think it\u0027s worth listing the attributes here as a docstring, with emphasis on the fact that id\u0027s are user-defined.","commit_id":"626b36af21b641b7d7ab1fdbabdb2606390ddf44"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"481057ff417cb4071a360a688899c668b716bad7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def _put(self, **kwargs):"},{"line_number":29,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":30,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":31,"context_line":"        return self._update(url, body\u003dbody,"},{"line_number":32,"context_line":"                            response_key\u003dself.key,"},{"line_number":33,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F91IE%3D","line":31,"updated":"2014-04-01 20:22:58.000000000","message":"i don\u0027t think you\u0027re using all 80 chars of line space here","commit_id":"626b36af21b641b7d7ab1fdbabdb2606390ddf44"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a64764af40a4be26ac4e0000125053a3df51f6c3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":36,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":37,"context_line":"        return self._update(url, body\u003dbody, response_key\u003dself.key,"},{"line_number":38,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create(self, identity_provider\u003dNone,"},{"line_number":41,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9qE4%3D","line":38,"updated":"2014-04-03 01:52:15.000000000","message":"hmm, why do we do this? there is an existing _put but you don\u0027t seem to override that behaviour because it\u0027s signature is: \n\n    def _put(self, url, body\u003dNone, response_key\u003dNone):\n\nI think you can fix the Manager.put function to do what you want.\n\nPing me if you want me to do this.","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"349ebff5c0814ebffdb0c3c3eae33d11a0bd8d6d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":36,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":37,"context_line":"        return self._update(url, body\u003dbody, response_key\u003dself.key,"},{"line_number":38,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create(self, identity_provider\u003dNone,"},{"line_number":41,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9oDE%3D","line":38,"in_reply_to":"AAAAWH%2F9oqc%3D","updated":"2014-04-03 09:21:12.000000000","message":"Because it starts with _ it doesn\u0027t need to be backwards compatible. However we may as well fix what we\u0027ve got","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"46a09ca86c550b33453b81c861722ede8a8d646b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        url \u003d self.build_url(dict_args_in_out\u003dkwargs)"},{"line_number":36,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":37,"context_line":"        return self._update(url, body\u003dbody, response_key\u003dself.key,"},{"line_number":38,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create(self, identity_provider\u003dNone,"},{"line_number":41,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9oqc%3D","line":38,"in_reply_to":"AAAAWH%2F9qE4%3D","updated":"2014-04-03 07:25:25.000000000","message":"yeah, the name can be misleading. I did this to have a common method for:\na) building the url\nb) doing what CrudManager._put() does\n\nI will rename my method.\n\nBTW. Is there any good reason to keep CrudManager._put(), since CrudManager._update() can also PUT some requests? If the only reason for keeping _put() is backward compatibility I would suggest calling _update() from _put() - this would be a clear message for other coders. If that\u0027s not the case, some information in the docstring would be very much welcome.","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a64764af40a4be26ac4e0000125053a3df51f6c3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def list(self, **kwargs):"},{"line_number":52,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, identity_provider, enabled\u003dTrue, **kwargs):"},{"line_number":55,"context_line":"        return super(IdentityProviderManager, self).update("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9qQ0%3D","line":52,"updated":"2014-04-03 01:52:15.000000000","message":"nit: doesn\u0027t do anything - but that\u0027s ok because it makes it obvious we do support list","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"349ebff5c0814ebffdb0c3c3eae33d11a0bd8d6d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def list(self, **kwargs):"},{"line_number":52,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, identity_provider, enabled\u003dTrue, **kwargs):"},{"line_number":55,"context_line":"        return super(IdentityProviderManager, self).update("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9oEo%3D","line":52,"in_reply_to":"AAAAWH%2F9o20%3D","updated":"2014-04-03 09:21:12.000000000","message":"there are many many problems with the managers.","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"46a09ca86c550b33453b81c861722ede8a8d646b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            **kwargs)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def list(self, **kwargs):"},{"line_number":52,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, identity_provider, enabled\u003dTrue, **kwargs):"},{"line_number":55,"context_line":"        return super(IdentityProviderManager, self).update("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9o20%3D","line":52,"in_reply_to":"AAAAWH%2F9qQ0%3D","updated":"2014-04-03 07:25:25.000000000","message":"I did see such \u0027explicit\u0027 calling super-methods in other modules and just wanted to follow this pattern.\nIn general, to make everything more explicit I would be happy to see CrudManager CRUD methods wrapped in something like @abs.abstractmethod","commit_id":"1d7c5c1922ea5d583cea993735586dd1f52b4012"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"51d748a077ee2e38075cb0fe135452f650faefd4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":37,"context_line":"        return self._update(url, body\u003dbody, response_key\u003dself.key,"},{"line_number":38,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create(self, identity_provider\u003dNone,"},{"line_number":41,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":42,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2Bwg%3D","line":39,"updated":"2014-04-08 05:31:13.000000000","message":"please use the @positional decorator.","commit_id":"351fe67489f775e38dcf695bbff06f2b39956df3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"009771ab04ebba1c0613cba1770d7339ae295a68","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        body \u003d {self.key: kwargs}"},{"line_number":37,"context_line":"        return self._update(url, body\u003dbody, response_key\u003dself.key,"},{"line_number":38,"context_line":"                            method\u003d\u0027PUT\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create(self, identity_provider\u003dNone,"},{"line_number":41,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":42,"context_line":"        return self._build_url_and_put("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F7Ac%3D","line":39,"in_reply_to":"AAAAWn%2F%2F%2Bwg%3D","updated":"2014-04-08 13:43:01.000000000","message":"i am actualy wondering whether I should put expicit attrubutes as a arguments or just store everything in the Resource subclass.","commit_id":"351fe67489f775e38dcf695bbff06f2b39956df3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"51d748a077ee2e38075cb0fe135452f650faefd4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def list(self, **kwargs):"},{"line_number":52,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, identity_provider, enabled\u003dTrue, **kwargs):"},{"line_number":55,"context_line":"        return super(IdentityProviderManager, self).update("},{"line_number":56,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":57,"context_line":"            enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2Bv4%3D","line":54,"updated":"2014-04-08 05:31:13.000000000","message":"i think you want this to be enabled\u003dNone and therefore just another kwarg? Otherwise how do you know if you want to update something without changing the value of enabled?","commit_id":"351fe67489f775e38dcf695bbff06f2b39956df3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"009771ab04ebba1c0613cba1770d7339ae295a68","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def list(self, **kwargs):"},{"line_number":52,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, identity_provider, enabled\u003dTrue, **kwargs):"},{"line_number":55,"context_line":"        return super(IdentityProviderManager, self).update("},{"line_number":56,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":57,"context_line":"            enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F6%2B0%3D","line":54,"in_reply_to":"AAAAWn%2F%2F%2Bv4%3D","updated":"2014-04-08 13:43:01.000000000","message":"So you think keystoneclient should actually fetch current status from server (with help of GET method), compare what\u0027s and if anything is changed and only then send the request to the command?","commit_id":"351fe67489f775e38dcf695bbff06f2b39956df3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a16c28ba8644a902a388c54a82ceff165c12768","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @utils.positional.method(1)"},{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3zs%3D","line":43,"updated":"2014-04-08 20:20:17.000000000","message":"is identity_provider a real required attribute? we don\u0027t create a UUID for them if an id isn\u0027t provided?\n\nIn this case you should probably call the param id and it should be positional.method(0)","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @utils.positional.method(1)"},{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3bs%3D","line":43,"in_reply_to":"AAAAWn%2F%2F3zs%3D","updated":"2014-04-08 21:44:29.000000000","message":"I\u0027d leave it here as it\u0027s not a part of the object that is e.g. sent in the request body.","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @utils.positional.method(1)"},{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3Pg%3D","line":43,"in_reply_to":"AAAAWn%2F%2F3zs%3D","updated":"2014-04-08 21:44:29.000000000","message":"id stored behind identity_provider is not a part of the object that is sent in the request\u0027s body. It\u0027s usually used to build dynamic URL, for instance: PUT /OS-FEDERATION/identity_providers/{user-specified-idp-id}. description and enabled are parts of the object. I\u0027d also drop kwargs since I don\u0027t expect anything else to be passed.","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a16c28ba8644a902a388c54a82ceff165c12768","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @utils.positional.method(1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3xQ%3D","line":45,"updated":"2014-04-08 20:20:17.000000000","message":"this will have to be a string or int right? don\u0027t do base.getid","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @utils.positional.method(1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3cA%3D","line":45,"in_reply_to":"AAAAWn%2F%2F3xQ%3D","updated":"2014-04-08 21:44:29.000000000","message":"Done","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def create(self, identity_provider,"},{"line_number":43,"context_line":"               description\u003dNone, enabled\u003dTrue, **kwargs):"},{"line_number":44,"context_line":"        return self._build_url_and_put("},{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @utils.positional.method(1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3Pc%3D","line":45,"in_reply_to":"AAAAWn%2F%2F3xQ%3D","updated":"2014-04-08 21:44:29.000000000","message":"OK!","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a16c28ba8644a902a388c54a82ceff165c12768","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @utils.positional.method(1)"},{"line_number":49,"context_line":"    def get(self, identity_provider, **kwargs):"},{"line_number":50,"context_line":"        return super(IdentityProviderManager, self).get("},{"line_number":51,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F300%3D","line":48,"updated":"2014-04-08 20:20:17.000000000","message":"nit: this one\u0027s unecesssary","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":46,"context_line":"            description\u003ddescription, enabled\u003denabled, **kwargs)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @utils.positional.method(1)"},{"line_number":49,"context_line":"    def get(self, identity_provider, **kwargs):"},{"line_number":50,"context_line":"        return super(IdentityProviderManager, self).get("},{"line_number":51,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3fk%3D","line":48,"in_reply_to":"AAAAWn%2F%2F300%3D","updated":"2014-04-08 21:44:29.000000000","message":"Done","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a16c28ba8644a902a388c54a82ceff165c12768","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":52,"context_line":"            **kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @utils.positional.method(0)"},{"line_number":55,"context_line":"    def list(self, **kwargs):"},{"line_number":56,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3zE%3D","line":54,"updated":"2014-04-08 20:20:17.000000000","message":"nit: unnecessary, just having the **kwargs enforces the same thing.","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"94d8df381334b3a601ab95e16200461ad81aba74","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":52,"context_line":"            **kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @utils.positional.method(0)"},{"line_number":55,"context_line":"    def list(self, **kwargs):"},{"line_number":56,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F3fU%3D","line":54,"in_reply_to":"AAAAWn%2F%2F3zE%3D","updated":"2014-04-08 21:44:29.000000000","message":"Done","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a16c28ba8644a902a388c54a82ceff165c12768","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        return super(IdentityProviderManager, self).list(**kwargs)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @utils.positional.method(2)"},{"line_number":59,"context_line":"    def update(self, identity_provider, enabled, **kwargs):"},{"line_number":60,"context_line":"        return super(IdentityProviderManager, self).update("},{"line_number":61,"context_line":"            identity_provider_id\u003dbase.getid(identity_provider),"},{"line_number":62,"context_line":"            enabled\u003denabled, **kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F31s%3D","line":59,"updated":"2014-04-08 20:20:17.000000000","message":"why isn\u0027t enabled just an optional kwarg?","commit_id":"5b8e9fa87be42b8e44f1e6494536876da0ac29b3"}]}
