)]}'
{"keystone/auth/controllers.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"38e6b6203b3b626517d439c9899d2c6c401621d0","unresolved":false,"context_lines":[{"line_number":280,"context_line":"class Auth(controller.V3Controller):"},{"line_number":281,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":282,"context_line":"        super(Auth, self).__init__(*args, **kw)"},{"line_number":283,"context_line":"        self.token_controllers_ref \u003d token.controllers.Auth()"},{"line_number":284,"context_line":"        config.setup_authentication()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def authenticate_for_token(self, context, auth\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2FIYM%3D","line":283,"updated":"2013-11-14 02:26:48.000000000","message":"can this be removed now?","commit_id":"85a0e2ed1e43cfb262cf8b8b429f0457e3906338"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7d520aac4a3fb76a9b76b4b6ff712355fa8cc4b4","unresolved":false,"context_lines":[{"line_number":280,"context_line":"class Auth(controller.V3Controller):"},{"line_number":281,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":282,"context_line":"        super(Auth, self).__init__(*args, **kw)"},{"line_number":283,"context_line":"        self.token_controllers_ref \u003d token.controllers.Auth()"},{"line_number":284,"context_line":"        config.setup_authentication()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def authenticate_for_token(self, context, auth\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B4nw%3D","line":283,"in_reply_to":"AAAATn%2F%2FIYM%3D","updated":"2013-11-25 16:15:40.000000000","message":"looks like this isn\u0027t used anymore so it should be removed.","commit_id":"85a0e2ed1e43cfb262cf8b8b429f0457e3906338"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self._scope_data \u003d (domain_id, project_id, trust)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"@dependency.requires(\u0027token_provider_api\u0027)"},{"line_number":279,"context_line":"class Auth(controller.V3Controller):"},{"line_number":280,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":281,"context_line":"        super(Auth, self).__init__(*args, **kw)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bcpo%3D","line":278,"updated":"2013-11-25 23:20:03.000000000","message":"token_api should be listed here since it\u0027s used.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c2a3c5ee59e9314be21c404ec4d8cda7aa39a0b8","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self._scope_data \u003d (domain_id, project_id, trust)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"@dependency.requires(\u0027token_provider_api\u0027)"},{"line_number":279,"context_line":"class Auth(controller.V3Controller):"},{"line_number":280,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":281,"context_line":"        super(Auth, self).__init__(*args, **kw)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BYXs%3D","line":278,"in_reply_to":"AAAATn%2F%2Bb%2Bc%3D","updated":"2013-11-26 17:35:41.000000000","message":"ok. I\u0027ve got a separate change to clean up dependency lists.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b019d961402fd9a1e2ae9391d4c963ef20377c4d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self._scope_data \u003d (domain_id, project_id, trust)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"@dependency.requires(\u0027token_provider_api\u0027)"},{"line_number":279,"context_line":"class Auth(controller.V3Controller):"},{"line_number":280,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":281,"context_line":"        super(Auth, self).__init__(*args, **kw)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2Bb%2Bc%3D","line":278,"in_reply_to":"AAAATn%2F%2BcDQ%3D","updated":"2013-11-26 03:41:20.000000000","message":"I wanted to break the dependency on V2 code.  I was hoping not to change the V2 code much other than to deprecated it.\n\nIt was a calculated decision not to remove the duplication.  I don\u0027t if anything will need to change in the implementation, but if it does I would not want it to break V2.  Since V2 will eventually melt away I didn\u0027t want to mess with it.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"058723a1fd5ed1d44b849144b809409fc7b40245","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        self._scope_data \u003d (domain_id, project_id, trust)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"@dependency.requires(\u0027token_provider_api\u0027)"},{"line_number":279,"context_line":"class Auth(controller.V3Controller):"},{"line_number":280,"context_line":"    def __init__(self, *args, **kw):"},{"line_number":281,"context_line":"        super(Auth, self).__init__(*args, **kw)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BcDQ%3D","line":278,"in_reply_to":"AAAATn%2F%2Bcpo%3D","updated":"2013-11-26 03:05:04.000000000","message":"token_api is available to all V3Controllers already, and dependencies are inherited","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    @controller.protected()"},{"line_number":417,"context_line":"    def revocation_list(self, context, auth\u003dNone):"},{"line_number":418,"context_line":"        tokens \u003d self.token_api.list_revoked_tokens()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        for t in tokens:"},{"line_number":421,"context_line":"            expires \u003d t[\u0027expires\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BcmE%3D","line":418,"updated":"2013-11-25 23:20:03.000000000","message":"Rather than copy and paste code, can this be put in one place? That\u0027s then called from here and keystone/token/controllers.py.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c2a3c5ee59e9314be21c404ec4d8cda7aa39a0b8","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    @controller.protected()"},{"line_number":417,"context_line":"    def revocation_list(self, context, auth\u003dNone):"},{"line_number":418,"context_line":"        tokens \u003d self.token_api.list_revoked_tokens()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        for t in tokens:"},{"line_number":421,"context_line":"            expires \u003d t[\u0027expires\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BYXo%3D","line":418,"in_reply_to":"AAAATn%2F%2BZPE%3D","updated":"2013-11-26 17:35:41.000000000","message":"I\u0027m ok with this if there\u0027s some plan to change this already. Seems like it\u0027s easy enough to make it a shared implementation now and break it when the behavior changes. We should be working with a \"canonical\" representation and have the controllers modify it for their way of representing it.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"197c86ca72c1ae0122687205ca67afa0ba41da9c","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    @controller.protected()"},{"line_number":417,"context_line":"    def revocation_list(self, context, auth\u003dNone):"},{"line_number":418,"context_line":"        tokens \u003d self.token_api.list_revoked_tokens()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        for t in tokens:"},{"line_number":421,"context_line":"            expires \u003d t[\u0027expires\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BZPE%3D","line":418,"in_reply_to":"AAAATn%2F%2BcC4%3D","updated":"2013-11-26 15:27:35.000000000","message":"\"share the same code\" -\u003e \"produce the same output\" :)","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"058723a1fd5ed1d44b849144b809409fc7b40245","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    @controller.protected()"},{"line_number":417,"context_line":"    def revocation_list(self, context, auth\u003dNone):"},{"line_number":418,"context_line":"        tokens \u003d self.token_api.list_revoked_tokens()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        for t in tokens:"},{"line_number":421,"context_line":"            expires \u003d t[\u0027expires\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BcC4%3D","line":418,"in_reply_to":"AAAATn%2F%2BcmE%3D","updated":"2013-11-26 03:05:04.000000000","message":"i actually don\u0027t mind the duplication -- they\u0027re both api-specific implementations, but unfortunately they happen to share the same code. i\u0027d like them to evolve independently as the v2 one is deprecated and will go away, eliminating the duplication to begin with","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"}],"keystone/common/controller.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from keystone import exception"},{"line_number":26,"context_line":"from keystone.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BclA%3D","line":28,"updated":"2013-11-25 23:20:03.000000000","message":"revert whitespace change.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c2a3c5ee59e9314be21c404ec4d8cda7aa39a0b8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from keystone import exception"},{"line_number":26,"context_line":"from keystone.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BYXY%3D","line":28,"in_reply_to":"AAAATn%2F%2BcCs%3D","updated":"2013-11-26 17:35:41.000000000","message":"Guidelines say to not mix whitespace changes with other changes... https://wiki.openstack.org/wiki/GitCommitMessages#Things_to_avoid_when_creating_commits","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"058723a1fd5ed1d44b849144b809409fc7b40245","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from keystone import exception"},{"line_number":26,"context_line":"from keystone.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BcCs%3D","line":28,"in_reply_to":"AAAATn%2F%2BclA%3D","updated":"2013-11-26 03:05:04.000000000","message":"double spacing between imports and global variables is actually preferred, but not yet enforced by hacking","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"}],"keystone/common/utils.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    FOLSOM \u003d \u0027F\u0027"},{"line_number":550,"context_line":"    GRIZZLY \u003d \u0027G\u0027"},{"line_number":551,"context_line":"    HAVANA \u003d \u0027H\u0027"},{"line_number":552,"context_line":"    ICEHOUSE \u003d \u0027I\u0027"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    _RELEASES \u003d {"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BeZE%3D","line":551,"updated":"2013-11-25 23:20:03.000000000","message":"seems like this should be a separate commit.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"}],"keystone/identity/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b45cb4938090c6115fb9ebbddce417129d6e9e84","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from keystone import exception"},{"line_number":27,"context_line":"from keystone.openstack.common import log as logging"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2F3rc%3D","line":29,"updated":"2013-10-25 21:50:11.000000000","message":"Extra whitespace?","commit_id":"0d11552e2333b0e6c000c2714a470cf9e11e1370"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from keystone import exception"},{"line_number":27,"context_line":"from keystone.openstack.common import log as logging"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BcpM%3D","line":29,"updated":"2013-11-25 23:20:03.000000000","message":"revert whitespace change.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"85f8c8c4a0bfb228fb82eb41da23a9efa5983461","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"class Role(controller.V2Controller):"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    # COMPAT(essex-3)"},{"line_number":344,"context_line":"    @controller.v2_deprecated"},{"line_number":345,"context_line":"    def get_user_roles(self, context, user_id, tenant_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2BeZI%3D","line":342,"updated":"2013-11-25 23:20:03.000000000","message":"revert whitespace change.","commit_id":"25fd33364cc124170623daf6daec6f37073cc345"}],"keystone/token/controllers.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"162c6e7a1e9b2cc2a8f01cf4f6e97fd941b6f9db","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    @utils.deprecate"},{"line_number":435,"context_line":"    @controller.protected()"},{"line_number":436,"context_line":"    def revocation_list(self, context, auth\u003dNone):"},{"line_number":437,"context_line":"        tokens \u003d self.token_api.list_revoked_tokens()"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        for t in tokens:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F2lM%3D","line":436,"updated":"2013-10-08 23:34:01.000000000","message":"This method is called directly by the Auth (v3) controller http://git.openstack.org/cgit/openstack/keystone/tree/keystone/auth/controllers.py#n374 which will result in a significant amount of logging claiming the method is deprecated.  This should be made to not rely on the V2 controller prior to this patchset going in (or in this patchset).\n\nThe bug referencing this issue is bug 1222696","commit_id":"e9e22d31650256002ccbef27dce5c02e37f73c40"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7d520aac4a3fb76a9b76b4b6ff712355fa8cc4b4","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ExternalAuthNotApplicable(Exception):"},{"line_number":36,"context_line":"    \"\"\"External authentication is not applicable.\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@dependency.requires(\u0027token_provider_api\u0027)"},{"line_number":40,"context_line":"class Auth(controller.V2Controller):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2B4no%3D","line":37,"updated":"2013-11-25 16:15:40.000000000","message":"revert the random cleanup on previous line. should be a separate commit.","commit_id":"85a0e2ed1e43cfb262cf8b8b429f0457e3906338"}]}
