)]}'
{"keystone/common/dependency.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"23719beed567eb4e903b3b07956f9347709cd210","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        return"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    # There\u0027s no instance currently. Create it."},{"line_number":145,"context_line":"    _factories[name]()"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def _process_dependencies(obj):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_fe3abbe5","line":145,"updated":"2015-02-17 13:32:30.000000000","message":"(nit) If name is not in _factories KeyError will be thrown without any sensible explanation. I think such cases will be covered by unit-testing but for developnemt purpose it would be nice to catch KeyError here and raise something with message in it.","commit_id":"805a378733acb3405486b9383a2d65ed35b81fe2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0cf3e9525052c45338897c1ec971beb08efcffde","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        return"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    # There\u0027s no instance currently. Create it."},{"line_number":145,"context_line":"    _factories[name]()"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"def _process_dependencies(obj):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_9467a9e9","line":145,"in_reply_to":"da86d52c_fe3abbe5","updated":"2015-02-18 15:47:39.000000000","message":"Done","commit_id":"805a378733acb3405486b9383a2d65ed35b81fe2"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"039c5ab1cbcd7d2d29743afd01a369642d32aa73","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    return wrapper"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def create(name):"},{"line_number":140,"context_line":"    if name in _REGISTRY:"},{"line_number":141,"context_line":"        # We\u0027ve already got one."},{"line_number":142,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_ed4d583c","line":139,"updated":"2015-02-19 07:08:21.000000000","message":"Do we still need this if we load all the drivers in load_backends?\n\nhttps://github.com/openstack/keystone/blob/master/keystone/backends.py","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"}],"keystone/contrib/example/routers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"21f66cd3278d77307cc0840bc722584251dd8be8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone.contrib.example import controllers"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"example \u003d example  # Use the import for pep8"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"build_resource_relation \u003d functools.partial("}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_f68d6032","line":24,"updated":"2015-02-18 06:19:34.000000000","message":"i find the need to do this extremely weird and probably error prone. but i can\u0027t think of a better way","commit_id":"805a378733acb3405486b9383a2d65ed35b81fe2"}],"keystone/contrib/federation/routers.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"039c5ab1cbcd7d2d29743afd01a369642d32aa73","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.contrib.federation import controllers"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"federation \u003d federation  # Use the import for pep8"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"build_resource_relation \u003d functools.partial("}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_eae9bee3","line":22,"updated":"2015-02-19 07:08:21.000000000","message":"Why do we need to do this dance for federation but not oauth1? A more descriptive comment here would be helpful.","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f7922e1f0877e4690ef7451de3acc103223fd84","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.contrib.federation import controllers"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"federation \u003d federation  # Use the import for pep8"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"build_resource_relation \u003d functools.partial("}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_4da9048f","line":22,"in_reply_to":"da86d52c_eae9bee3","updated":"2015-02-19 07:15:54.000000000","message":"i believe this is done so the import \u0027from keystone.contrib import federation\u0027 is actually used.\n\nI think it would be better to maybe have something like this after all the imports:\n\n  # NOTE(xyz): Import federation code to register the provider\n  # but the core itself is not needed for any additional functionality.\n  from keystone.contrib import federation  # noqa","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"039c5ab1cbcd7d2d29743afd01a369642d32aa73","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return \"/OS-FEDERATION/%s\" % suffix"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def add_routes(self, mapper):"},{"line_number":89,"context_line":"        dependency.create(\u0027federation_api\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        auth_controller \u003d controllers.Auth()"},{"line_number":92,"context_line":"        idp_controller \u003d controllers.IdentityProvider()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_8dc5bc8f","line":89,"updated":"2015-02-19 07:08:21.000000000","message":"Why do we need to do this here? Why can\u0027t we just add it to load_backends like the others since all extensions are going to be enabled by default?\n\nhttps://github.com/openstack/keystone/blob/master/keystone/backends.py","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5f7922e1f0877e4690ef7451de3acc103223fd84","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return \"/OS-FEDERATION/%s\" % suffix"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def add_routes(self, mapper):"},{"line_number":89,"context_line":"        dependency.create(\u0027federation_api\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        auth_controller \u003d controllers.Auth()"},{"line_number":92,"context_line":"        idp_controller \u003d controllers.IdentityProvider()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_ede9d8e3","line":89,"in_reply_to":"da86d52c_8dc5bc8f","updated":"2015-02-19 07:15:54.000000000","message":"i think guang has a point here, seems unnecessary","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6c40e17d69f659ee633deac174fe7367ce97c122","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return \"/OS-FEDERATION/%s\" % suffix"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def add_routes(self, mapper):"},{"line_number":89,"context_line":"        dependency.create(\u0027federation_api\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        auth_controller \u003d controllers.Auth()"},{"line_number":92,"context_line":"        idp_controller \u003d controllers.IdentityProvider()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_895a031c","line":89,"in_reply_to":"da86d52c_8dc5bc8f","updated":"2015-02-19 14:01:08.000000000","message":"ok... I\u0027m wondering why this is still here since the creating federation_api is already in load backends... and https://review.openstack.org/#/c/153842/ doesn\u0027t remove the creation of oauth_api either...","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"}],"keystone/contrib/oauth1/routers.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"039c5ab1cbcd7d2d29743afd01a369642d32aa73","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def add_routes(self, mapper):"},{"line_number":69,"context_line":"        dependency.create(\u0027oauth_api\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        consumer_controller \u003d controllers.ConsumerCrudV3()"},{"line_number":72,"context_line":"        access_token_controller \u003d controllers.AccessTokenCrudV3()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_6dcb28a4","line":69,"updated":"2015-02-19 07:08:21.000000000","message":"Why do we need to do this here? Why can\u0027t we just add it to load_backends like the others since all extensions are going to be enabled by default?\n\nhttps://github.com/openstack/keystone/blob/master/keystone/backends.py","commit_id":"8dad5954a0034373be737ed0e3d4ccead938ab9b"}]}
