)]}'
{"keystone/middleware/core.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"6aed0ef5230e4c0e60951a1703e864859ef0fc56","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The xml response namespaces for diffrent api versions"},{"line_number":48,"context_line":"VERSION_XMLNS \u003d {"},{"line_number":49,"context_line":"    \"v3\": \"http://docs.openstack.org/identity/api/v3\","},{"line_number":50,"context_line":"}"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F5Mk%3D","line":48,"updated":"2013-12-27 18:03:18.000000000","message":"Might be worth mentioning in a comment that an entry for v2 is not needed since that is the default namespace value used by keystone.common.serializer","commit_id":"7b0193e6f5b8b315811f46d7225541cd19bb34a4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ba461ea636a762a8973ecd8a25dcf98a4a995391","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The xml response namespaces for diffrent api versions"},{"line_number":48,"context_line":"VERSION_XMLNS \u003d {"},{"line_number":49,"context_line":"    \"v3\": \"http://docs.openstack.org/identity/api/v3\","},{"line_number":50,"context_line":"}"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F2%2F4%3D","line":48,"in_reply_to":"AAAAT3%2F%2F5Mk%3D","updated":"2013-12-30 01:34:46.000000000","message":"There shouldn\u0027t be a default, since either v2 or v3 are equally valid.","commit_id":"7b0193e6f5b8b315811f46d7225541cd19bb34a4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a6e9766b4a01f0f529157fbfc445225b83417a88","unresolved":false,"context_lines":[{"line_number":44,"context_line":"PARAMS_ENV \u003d wsgi.PARAMS_ENV"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The xml response namespaces for diffrent api versions"},{"line_number":48,"context_line":"VERSION_XMLNS \u003d {"},{"line_number":49,"context_line":"    \"v2.0\": \"http://docs.openstack.org/identity/api/v2.0\","},{"line_number":50,"context_line":"    \"v3\": \"http://docs.openstack.org/identity/api/v3\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F0Js%3D","line":47,"updated":"2013-12-30 23:24:05.000000000","message":"change \"diffrent\" to \"different\"","commit_id":"371119b58c2e528f8377a7fbe7421c8807a63b5a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a6e9766b4a01f0f529157fbfc445225b83417a88","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# The xml response namespaces for diffrent api versions"},{"line_number":48,"context_line":"VERSION_XMLNS \u003d {"},{"line_number":49,"context_line":"    \"v2.0\": \"http://docs.openstack.org/identity/api/v2.0\","},{"line_number":50,"context_line":"    \"v3\": \"http://docs.openstack.org/identity/api/v3\","},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F0Jw%3D","line":49,"updated":"2013-12-30 23:24:05.000000000","message":"use \u0027 for strings, see https://github.com/openstack/keystone/blob/master/HACKING.rst#keystone-specific-commandments","commit_id":"371119b58c2e528f8377a7fbe7421c8807a63b5a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a6e9766b4a01f0f529157fbfc445225b83417a88","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                api_version \u003d request.path.split(\"/\")[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns)"},{"line_number":177,"context_line":"            except Exception:"},{"line_number":178,"context_line":"                LOG.exception(\u0027Serializer failed\u0027)"},{"line_number":179,"context_line":"                raise exception.Error(message\u003dresponse.body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F0Jk%3D","line":176,"updated":"2013-12-30 23:24:05.000000000","message":"use a named argument for a named parameter -- change \"xmlns\" to \"xmlns\u003dxmlns\"","commit_id":"371119b58c2e528f8377a7fbe7421c8807a63b5a"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"bc388fe52214320ffeb00b92cc44ba7e3cdfd5b4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                api_version \u003d request.path.split(\"/\")[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns)"},{"line_number":177,"context_line":"            except Exception:"},{"line_number":178,"context_line":"                LOG.exception(\u0027Serializer failed\u0027)"},{"line_number":179,"context_line":"                raise exception.Error(message\u003dresponse.body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2Fz8k%3D","line":176,"in_reply_to":"AAAAT3%2F%2F0Jk%3D","updated":"2013-12-31 01:17:45.000000000","message":"Hi Brant, why should I do this change? Is it a standard?","commit_id":"371119b58c2e528f8377a7fbe7421c8807a63b5a"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"a61c62b2d454c55f8d0eff5784250aac01733894","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                api_version \u003d request.path.split(\"/\")[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns)"},{"line_number":177,"context_line":"            except Exception:"},{"line_number":178,"context_line":"                LOG.exception(\u0027Serializer failed\u0027)"},{"line_number":179,"context_line":"                raise exception.Error(message\u003dresponse.body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2Fubw%3D","line":176,"in_reply_to":"AAAAT3%2F%2Fz8k%3D","updated":"2014-01-03 16:19:46.000000000","message":"I\u0027ve seen other keystone cores make this same request. Brant is this just a Keystone guideline or is this an OpenStack guideline or buried in a PEP somewhere?","commit_id":"371119b58c2e528f8377a7fbe7421c8807a63b5a"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"7403adb9b196e8960ddabc564efd5869c75df5de","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                api_version \u003d request.path.split(\u0027/\u0027)[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns)"},{"line_number":177,"context_line":"            except Exception:"},{"line_number":178,"context_line":"                LOG.exception(\u0027Serializer failed\u0027)"},{"line_number":179,"context_line":"                raise exception.Error(message\u003dresponse.body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAT3%2F%2FubQ%3D","line":176,"updated":"2014-01-02 21:01:09.000000000","message":"Still need to fix this per Brant\u0027s request","commit_id":"8932bf2fd67283da8fb94d6439b730059f01a5df"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c1d3540bfab295887a95e2c989144faa73bd5fe1","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if outgoing_xml and response.body:"},{"line_number":171,"context_line":"            response.content_type \u003d \u0027application/xml\u0027"},{"line_number":172,"context_line":"            try:"},{"line_number":173,"context_line":"                api_version \u003d request.path.split(\u0027/\u0027)[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns\u003dxmlns)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Fsyk%3D","line":173,"updated":"2014-01-09 13:33:26.000000000","message":"so this technically isn\u0027t the right way to go about this. the /v3/ and /v2.0/ paths are entirely configurable and are not guaranteed to appear as expected (you could deploy with /v3.2/ and /v2/ if you desired).\n\ninstead, you can specify configuration for this middleware to use via the paste pipeline, and configure one instance of this middleware to use the v2.0 namespace, and one to use the v3 namespace... that way there\u0027s no conditionals or guesswork here, and one-off deployments get the customization they need.","commit_id":"631c806552e71a51891f6219b123de749e079379"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"97ffe82e45a416866b3a61fffd32fae5d17ac7d3","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if outgoing_xml and response.body:"},{"line_number":171,"context_line":"            response.content_type \u003d \u0027application/xml\u0027"},{"line_number":172,"context_line":"            try:"},{"line_number":173,"context_line":"                api_version \u003d request.path.split(\u0027/\u0027)[1]"},{"line_number":174,"context_line":"                xmlns \u003d VERSION_XMLNS.get(api_version, None)"},{"line_number":175,"context_line":"                body_obj \u003d jsonutils.loads(response.body)"},{"line_number":176,"context_line":"                response.body \u003d serializer.to_xml(body_obj, xmlns\u003dxmlns)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FdCU%3D","line":173,"in_reply_to":"AAAAUH%2F%2Fsyk%3D","updated":"2014-03-06 00:35:49.000000000","message":"I agree with Dolph, but I don\u0027t think we should accept this because of it. Where the server would always include http://docs.openstack.org/identity/api/v2.0 namespace before, now it wouldn\u0027t include any namespace if the split didn\u0027t result in v2.0.\n\nI think this change should be using Dolph\u0027s suggestion to have middleware configuration option for this, or we could have different middleware in the v3 pipeline than is in the v2 pipeline.","commit_id":"631c806552e71a51891f6219b123de749e079379"}]}
