)]}'
{"bin/keystone-all":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def create_server(conf, name, host, port, workers):"},{"line_number":76,"context_line":"    app \u003d keystone_service.loadapp(\u0027config:%s\u0027 % conf, name\u003dname)"},{"line_number":77,"context_line":"    server \u003d environment.Server(app, host\u003dhost, port\u003dport,"},{"line_number":78,"context_line":"                                keepalive\u003dCONF.tcp_keepalive,"},{"line_number":79,"context_line":"                                keepidle\u003dCONF.tcp_keepidle)"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"fa98f980_0d2bf7eb","line":76,"updated":"2014-09-09 21:51:19.000000000","message":"name is not keyword arg","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac43753a69c44ed600ac6b60bb6b396748b22f73","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def create_server(conf, name, host, port, workers):"},{"line_number":76,"context_line":"    app \u003d keystone_service.loadapp(\u0027config:%s\u0027 % conf, name\u003dname)"},{"line_number":77,"context_line":"    server \u003d environment.Server(app, host\u003dhost, port\u003dport,"},{"line_number":78,"context_line":"                                keepalive\u003dCONF.tcp_keepalive,"},{"line_number":79,"context_line":"                                keepidle\u003dCONF.tcp_keepidle)"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"fa98f980_6f461451","line":76,"in_reply_to":"fa98f980_0d2bf7eb","updated":"2014-09-10 21:52:28.000000000","message":"Done","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"}],"httpd/keystone.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":56,"context_line":"# The following is a reference to Python Paste Deploy documentation"},{"line_number":57,"context_line":"# http://pythonpaste.org/deploy/"},{"line_number":58,"context_line":"application \u003d service.loadapp(\u0027config:%s\u0027 % config.find_paste_config(),"},{"line_number":59,"context_line":"                              name\u003dname)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"dependency.resolve_future_dependencies()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_ed4313ad","line":59,"updated":"2014-09-09 21:51:19.000000000","message":"name is not keyword arg?","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac43753a69c44ed600ac6b60bb6b396748b22f73","unresolved":false,"context_lines":[{"line_number":56,"context_line":"# The following is a reference to Python Paste Deploy documentation"},{"line_number":57,"context_line":"# http://pythonpaste.org/deploy/"},{"line_number":58,"context_line":"application \u003d service.loadapp(\u0027config:%s\u0027 % config.find_paste_config(),"},{"line_number":59,"context_line":"                              name\u003dname)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"dependency.resolve_future_dependencies()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_2f632cde","line":59,"in_reply_to":"fa98f980_ed4313ad","updated":"2014-09-10 21:52:28.000000000","message":"Done","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4d50ef1d15ba9414aca729e88f653844c2303d4e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"# The following is a reference to Python Paste Deploy documentation"},{"line_number":57,"context_line":"# http://pythonpaste.org/deploy/"},{"line_number":58,"context_line":"application \u003d service.loadapp(\u0027config:%s\u0027 % config.find_paste_config(),"},{"line_number":59,"context_line":"                              name\u003dname)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"dependency.resolve_future_dependencies()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_e398711d","line":59,"in_reply_to":"fa98f980_ed4313ad","updated":"2014-09-10 13:41:12.000000000","message":"out of scope for this patch though","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"}],"keystone/common/json_home.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ec549d543d646878ee8803caa3c0d95e9a6dc78e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"def translate_urls(json_home, new_prefix):"},{"line_number":58,"context_line":"    \"\"\"Given a JSON Home document, sticks new_prefix on each of the urls.\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    for item in six.iteritems(json_home[\u0027resources\u0027]):"},{"line_number":61,"context_line":"        resource \u003d item[1]"},{"line_number":62,"context_line":"        if \u0027href\u0027 in resource:"},{"line_number":63,"context_line":"            resource[\u0027href\u0027] \u003d new_prefix + resource[\u0027href\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_278b2c69","line":60,"updated":"2014-09-03 17:26:10.000000000","message":"i\u0027d prefer a tuple so it\u0027s clear what item[1] is vs what you\u0027re ignoring","commit_id":"ff91cfa038423ab13badfadf566e61fa5d7597fd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"063068355d7c752fc31f12583da348da1865e30b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"def translate_urls(json_home, new_prefix):"},{"line_number":58,"context_line":"    \"\"\"Given a JSON Home document, sticks new_prefix on each of the urls.\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    for item in six.iteritems(json_home[\u0027resources\u0027]):"},{"line_number":61,"context_line":"        resource \u003d item[1]"},{"line_number":62,"context_line":"        if \u0027href\u0027 in resource:"},{"line_number":63,"context_line":"            resource[\u0027href\u0027] \u003d new_prefix + resource[\u0027href\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_ed1b5e1a","line":60,"in_reply_to":"fa98f980_278b2c69","updated":"2014-09-07 18:32:22.000000000","message":"Done","commit_id":"ff91cfa038423ab13badfadf566e61fa5d7597fd"}],"keystone/controllers.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ec549d543d646878ee8803caa3c0d95e9a6dc78e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def request_v3_json_home(new_prefix):"},{"line_number":36,"context_line":"    if \u0027v3\u0027 not in _VERSIONS:"},{"line_number":37,"context_line":"        # No V3 support, so return an empty JSON Home document."},{"line_number":38,"context_line":"        return {\u0027resources\u0027: {}}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    req \u003d webob.Request.blank("},{"line_number":41,"context_line":"        \u0027/v3\u0027, headers\u003d{\u0027Accept\u0027: \u0027application/json-home\u0027})"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_27b96c15","line":38,"updated":"2014-09-03 17:26:10.000000000","message":"cool","commit_id":"ff91cfa038423ab13badfadf566e61fa5d7597fd"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_VERSIONS \u003d []"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"latest_app \u003d None  # will get set by keystone.service.loadapp()."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def request_v3_json_home(new_prefix):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_ad202bf9","line":32,"updated":"2014-09-09 21:51:19.000000000","message":"why called latest_app? can this be more than one app?","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac43753a69c44ed600ac6b60bb6b396748b22f73","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"_VERSIONS \u003d []"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"latest_app \u003d None  # will get set by keystone.service.loadapp()."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def request_v3_json_home(new_prefix):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_0f4bc82b","line":32,"in_reply_to":"fa98f980_ad202bf9","updated":"2014-09-10 21:52:28.000000000","message":"Done. Added some more docs.","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return {\u0027resources\u0027: {}}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    req \u003d webob.Request.blank("},{"line_number":41,"context_line":"        \u0027/v3\u0027, headers\u003d{\u0027Accept\u0027: \u0027application/json-home\u0027})"},{"line_number":42,"context_line":"    v3_json_home_str \u003d req.get_response(latest_app).body"},{"line_number":43,"context_line":"    v3_json_home \u003d jsonutils.loads(v3_json_home_str)"},{"line_number":44,"context_line":"    json_home.translate_urls(v3_json_home, new_prefix)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_2d7c3beb","line":41,"updated":"2014-09-09 21:51:19.000000000","message":"clever","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if req_mime_type \u003d\u003d MimeTypes.JSON_HOME:"},{"line_number":170,"context_line":"            v3_json_home \u003d request_v3_json_home(\u0027/v3\u0027)"},{"line_number":171,"context_line":"            return wsgi.render_response("},{"line_number":172,"context_line":"                body\u003dv3_json_home,"},{"line_number":173,"context_line":"                headers\u003d((\u0027Content-Type\u0027, MimeTypes.JSON_HOME),))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        versions \u003d self._get_versions_list(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_ad674b50","line":172,"updated":"2014-09-09 21:51:19.000000000","message":"so for JSON home this is 200, as oppose to 300 for version discovery?","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4d50ef1d15ba9414aca729e88f653844c2303d4e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if req_mime_type \u003d\u003d MimeTypes.JSON_HOME:"},{"line_number":170,"context_line":"            v3_json_home \u003d request_v3_json_home(\u0027/v3\u0027)"},{"line_number":171,"context_line":"            return wsgi.render_response("},{"line_number":172,"context_line":"                body\u003dv3_json_home,"},{"line_number":173,"context_line":"                headers\u003d((\u0027Content-Type\u0027, MimeTypes.JSON_HOME),))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        versions \u003d self._get_versions_list(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_661baf1c","line":172,"in_reply_to":"fa98f980_ad674b50","updated":"2014-09-10 13:41:12.000000000","message":"yep! per the json home spec","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"}],"keystone/service.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4d1188387d281db9b7cc111c4b23196cac41db89","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    # NOTE(blk-u): Save the application being loaded in the controllers module."},{"line_number":42,"context_line":"    # This is similar to how public_app_factory() and v3_app_factory()"},{"line_number":43,"context_line":"    # register the version with the controllers module."},{"line_number":44,"context_line":"    controllers.latest_app \u003d deploy.loadapp(conf, name\u003dname)"},{"line_number":45,"context_line":"    return controllers.latest_app"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_cd4d6fc6","line":44,"updated":"2014-09-09 21:51:19.000000000","message":"what happen if latest_app is already set?","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ac43753a69c44ed600ac6b60bb6b396748b22f73","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    # NOTE(blk-u): Save the application being loaded in the controllers module."},{"line_number":42,"context_line":"    # This is similar to how public_app_factory() and v3_app_factory()"},{"line_number":43,"context_line":"    # register the version with the controllers module."},{"line_number":44,"context_line":"    controllers.latest_app \u003d deploy.loadapp(conf, name\u003dname)"},{"line_number":45,"context_line":"    return controllers.latest_app"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_2f9ecc54","line":44,"in_reply_to":"fa98f980_cd4d6fc6","updated":"2014-09-10 21:52:28.000000000","message":"Added more docs in controllers.","commit_id":"0fb28041883b9ca226989b61970316d9b9ae560b"}],"keystone/tests/test_versions.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ec549d543d646878ee8803caa3c0d95e9a6dc78e","unresolved":false,"context_lines":[{"line_number":575,"context_line":"            \u0027resources\u0027: V3_JSON_HOME_RESOURCES_INHERIT_DISABLED})"},{"line_number":576,"context_line":"        json_home.translate_urls(exp_json_home_data, \u0027/v3\u0027)"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        self._test_json_home(\u0027/\u0027, exp_json_home_data)"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    def test_accept_type_handling(self):"},{"line_number":581,"context_line":"        # Accept headers with multiple types and qvalues are handled."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_875698cc","line":578,"updated":"2014-09-03 17:26:10.000000000","message":"awesome","commit_id":"ff91cfa038423ab13badfadf566e61fa5d7597fd"}]}
