)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9126,"name":"Chris Buccella","email":"chris@buccella.org","username":"hdd"},"change_message_id":"36604e5072c9ccb950b1446e7d2dd1312a2e9b73","unresolved":false,"context_lines":[{"line_number":20,"context_line":"DocImpact"},{"line_number":21,"context_line":"This patch adds new WSGI middlewares \"request_id\" and \"catch_errors\"."},{"line_number":22,"context_line":"They needs to be added to api-paste.ini when upgrading."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Icf01b7de697ef50bef53212da2cf520d1ff78b88"},{"line_number":25,"context_line":"Closes-Bug: #1239923"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAUH%2F9nlY%3D","line":23,"updated":"2014-02-05 16:17:50.000000000","message":"Should this contain UpgradeImpact as well?","commit_id":"1d11f220ebcfaa7ad27857e187262cac732b7935"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8820e81b3336dec2d8f34e5960bd677327380906","unresolved":false,"context_lines":[{"line_number":20,"context_line":"DocImpact"},{"line_number":21,"context_line":"This patch adds new WSGI middlewares \"request_id\" and \"catch_errors\"."},{"line_number":22,"context_line":"They needs to be added to api-paste.ini when upgrading."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Icf01b7de697ef50bef53212da2cf520d1ff78b88"},{"line_number":25,"context_line":"Closes-Bug: #1239923"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAUX%2F%2F65Q%3D","line":23,"in_reply_to":"AAAAUH%2F9nlY%3D","updated":"2014-02-09 20:03:24.000000000","message":"Is there any reference to UpgradeImpact? I can add it but I can\u0027t find a good reference.","commit_id":"1d11f220ebcfaa7ad27857e187262cac732b7935"}],"neutron/api/v2/resource.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a856cecb3eece2ff657942d12733fc69f9bea757","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if context:"},{"line_number":141,"context_line":"            response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return response"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    return resource"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgIU%3D","line":143,"updated":"2013-11-25 12:30:57.000000000","message":"shouldn\u0027t we raise instead of return in case response is an error?","commit_id":"85c3c5779c1c21f35e4ac0fcdb9b116f2e4d132e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b21b1e5fa86ad2c8268e0b3a7596b1bd0e16884d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if context:"},{"line_number":141,"context_line":"            response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return response"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    return resource"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BfuA%3D","line":143,"in_reply_to":"AAAATn%2F%2BgAI%3D","updated":"2013-11-25 14:05:47.000000000","message":"Yes, it is intended. webob.exc.XXXX inherits exception and Reponse class and it is caught in wsgify decorator.\n/FYI/ https://github.com/Pylons/webob/blob/1.2.3/webob/dec.py#L126","commit_id":"85c3c5779c1c21f35e4ac0fcdb9b116f2e4d132e"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d08129d69f37068fe909069f7c89fa262b10ac3c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if context:"},{"line_number":141,"context_line":"            response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return response"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    return resource"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgAI%3D","line":143,"in_reply_to":"AAAATn%2F%2BgBQ%3D","updated":"2013-11-25 13:01:22.000000000","message":"Yeah, I missed that, thanks","commit_id":"85c3c5779c1c21f35e4ac0fcdb9b116f2e4d132e"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"ce93b425e8ed8c3ea6c10e3b11ff87135b003830","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if context:"},{"line_number":141,"context_line":"            response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return response"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    return resource"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgBQ%3D","line":143,"in_reply_to":"AAAATn%2F%2BgIU%3D","updated":"2013-11-25 12:58:38.000000000","message":"I think that\u0027s the intention as per the commit message.  Note that a webob exception extends Response, and will be converted into an appropriate http response whether raised or returned.","commit_id":"85c3c5779c1c21f35e4ac0fcdb9b116f2e4d132e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"b76709e3f51bab561ba7fcf70a11315b03b55b2a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BIjU%3D","line":128,"updated":"2013-12-02 07:17:51.000000000","message":"Are you sure that \u0027else\u0027 clause if mandatory here? Since you catch Exception - line 118, seems that you cannot miss any exception.","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1c6ba520056dca7ee1138e20fb8f7cbb00b5eba2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BHXk%3D","line":128,"in_reply_to":"AAAATn%2F%2BH5c%3D","updated":"2013-12-02 13:13:18.000000000","message":"\u0027finally\u0027 is not needed here since there is no return in any of the excepts. See http://stackoverflow.com/questions/11551996/why-do-we-need-the-finally-statement-in-python","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e2e28723122eee50d52f6cf9f98ea93345a129ce","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BHTc%3D","line":128,"in_reply_to":"AAAATn%2F%2BHXk%3D","updated":"2013-12-02 13:23:48.000000000","message":"I think its more readable with \u0027finally\u0027, since what you want the two last lines to happen always. But as you said, its styling issue.","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"78e18f7ca28bb5ddadc7dc3aa4dc347c4c71c0fc","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BH5c%3D","line":128,"in_reply_to":"AAAATn%2F%2BIFM%3D","updated":"2013-12-02 11:00:23.000000000","message":"I think it is a styling issue. I am not sure we need to change it. Any guideline with consensus?","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"1087e80c00ab0f99176e468aa7b3d3dac8c2c2e8","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BIFM%3D","line":128,"in_reply_to":"AAAATn%2F%2BIS8%3D","updated":"2013-12-02 10:05:25.000000000","message":"Maybe worth to put L139-140 under \u0027finally\u0027 ?","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2b671eb91827095b11d9ae3e1efffe302d122007","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            body \u003d serializer.serialize({\u0027NeutronError\u0027: msg})"},{"line_number":126,"context_line":"            kwargs \u003d {\u0027body\u0027: body, \u0027content_type\u0027: content_type}"},{"line_number":127,"context_line":"            response \u003d webob.exc.HTTPInternalServerError(**kwargs)"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            status \u003d action_status.get(action, 200)"},{"line_number":130,"context_line":"            body \u003d serializer.serialize(result)"},{"line_number":131,"context_line":"            # NOTE(jkoelker) Comply with RFC2616 section 9.7"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BIS8%3D","line":128,"in_reply_to":"AAAATn%2F%2BIjU%3D","updated":"2013-12-02 08:55:11.000000000","message":"I use \"else\" clause intentionally. L.129-137 below needs to be called only when no exception is raised, so I use \"else\" clause here. In this change I don\u0027t want  to change the existing behavior. I only want to share the logic L.139-140 for all cases. Does it make sense?","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"}],"neutron/auth.py":[{"author":{"_account_id":9126,"name":"Chris Buccella","email":"chris@buccella.org","username":"hdd"},"change_message_id":"6291dcabff64e3b7e4ee67ffd50d25181685b14a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        user_name \u003d req.headers.get(\u0027X_USER_NAME\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Use request_id if already set"},{"line_number":51,"context_line":"        request_id \u003d req.environ.get(catch_errors.ENV_REQUEST_ID)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a context with the authentication data"},{"line_number":54,"context_line":"        ctx \u003d context.Context(user_id, tenant_id, roles\u003droles,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2FQ0%3D","line":51,"updated":"2013-12-18 01:18:55.000000000","message":"Where does ENV_REQUEST_ID come from? I do not see it in catch_errors","commit_id":"68d14ccc104adcef8082945c824d0bde800a8ca1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f77e7d365273749de97a91ffd36f8bfb85317d07","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        user_name \u003d req.headers.get(\u0027X_USER_NAME\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Use request_id if already set"},{"line_number":51,"context_line":"        request_id \u003d req.environ.get(catch_errors.ENV_REQUEST_ID)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a context with the authentication data"},{"line_number":54,"context_line":"        ctx \u003d context.Context(user_id, tenant_id, roles\u003droles,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F84%2BA%3D","line":51,"in_reply_to":"AAAATn%2F8%2B3w%3D","updated":"2013-12-19 05:29:15.000000000","message":"During the review in oslo, I was suggested to split my patch into two middlewares. ENV_REQUEST_ID is defined in request_id middleware now. Though I am waiting for oslo patch review, i will update this patch.","commit_id":"68d14ccc104adcef8082945c824d0bde800a8ca1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"7cfc3d3ab5d722faeb2460e6444f606f23d2706e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        user_name \u003d req.headers.get(\u0027X_USER_NAME\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Use request_id if already set"},{"line_number":51,"context_line":"        request_id \u003d req.environ.get(catch_errors.ENV_REQUEST_ID)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a context with the authentication data"},{"line_number":54,"context_line":"        ctx \u003d context.Context(user_id, tenant_id, roles\u003droles,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2B3w%3D","line":51,"in_reply_to":"AAAATn%2F8%2B6M%3D","updated":"2013-12-18 04:40:23.000000000","message":"You are right. There is also https://review.openstack.org/60786 which had it in patch set 1, but removed it in patch set 2. Hopefully Akihiro can explain.","commit_id":"68d14ccc104adcef8082945c824d0bde800a8ca1"},{"author":{"_account_id":9126,"name":"Chris Buccella","email":"chris@buccella.org","username":"hdd"},"change_message_id":"2e09b94635fd06ed06fa18e9ea84a82f7cbb8a9e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        user_name \u003d req.headers.get(\u0027X_USER_NAME\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Use request_id if already set"},{"line_number":51,"context_line":"        request_id \u003d req.environ.get(catch_errors.ENV_REQUEST_ID)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a context with the authentication data"},{"line_number":54,"context_line":"        ctx \u003d context.Context(user_id, tenant_id, roles\u003droles,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2B6M%3D","line":51,"in_reply_to":"AAAATn%2F8%2B9k%3D","updated":"2013-12-18 04:15:53.000000000","message":"I found that change in oslo, but I do not see ENV_REQUEST_ID there. What am I missing?","commit_id":"68d14ccc104adcef8082945c824d0bde800a8ca1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c86012d55bf7471f5efb2d4c64622016163bdd2c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        user_name \u003d req.headers.get(\u0027X_USER_NAME\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Use request_id if already set"},{"line_number":51,"context_line":"        request_id \u003d req.environ.get(catch_errors.ENV_REQUEST_ID)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a context with the authentication data"},{"line_number":54,"context_line":"        ctx \u003d context.Context(user_id, tenant_id, roles\u003droles,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2B9k%3D","line":51,"in_reply_to":"AAAATn%2F8%2FQ0%3D","updated":"2013-12-18 03:39:36.000000000","message":"It looks like it is still in review in oslo.\nhttps://review.openstack.org/61151","commit_id":"68d14ccc104adcef8082945c824d0bde800a8ca1"}],"neutron/common/constants.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2b671eb91827095b11d9ae3e1efffe302d122007","unresolved":false,"context_lines":[{"line_number":42,"context_line":"MAX_VXLAN_VNI \u003d 16777215"},{"line_number":43,"context_line":"FLOODING_ENTRY \u003d [\u002700:00:00:00:00:00\u0027, \u00270.0.0.0\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"HTTP_RESP_HEADER_REQUEST_ID \u003d \u0027x-network-request-id\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"EXT_NS_COMP \u003d \u0027_backward_comp_e_ns\u0027"},{"line_number":48,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BIS4%3D","line":45,"updated":"2013-12-02 08:55:11.000000000","message":"I have a plan to change it to x-openstack-request-id based on the ML thread.","commit_id":"a64da107d988b2bb5077d46fb93e04bc232177e5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"63a76723ea17c5a201b7518c9ee184d0a9c68ea1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"MAX_VXLAN_VNI \u003d 16777215"},{"line_number":43,"context_line":"FLOODING_ENTRY \u003d [\u002700:00:00:00:00:00\u0027, \u00270.0.0.0\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"HTTP_RESP_HEADER_REQUEST_ID \u003d \u0027x-openstack-request-id\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"EXT_NS_COMP \u003d \u0027_backward_comp_e_ns\u0027"},{"line_number":48,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BHT4%3D","line":45,"updated":"2013-12-02 13:22:19.000000000","message":"Perhaps this should be in oslo?","commit_id":"955efb8de1ba19e53d5da1224b1ba9e6700591ab"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"94284568fbe3b0128ba4d2be8e2eb84ec2734c9f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"MAX_VXLAN_VNI \u003d 16777215"},{"line_number":43,"context_line":"FLOODING_ENTRY \u003d [\u002700:00:00:00:00:00\u0027, \u00270.0.0.0\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"HTTP_RESP_HEADER_REQUEST_ID \u003d \u0027x-openstack-request-id\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"EXT_NS_COMP \u003d \u0027_backward_comp_e_ns\u0027"},{"line_number":48,"context_line":"EXT_NS \u003d \u0027_extension_ns\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BC54%3D","line":45,"in_reply_to":"AAAATn%2F%2BHT4%3D","updated":"2013-12-05 07:59:17.000000000","message":"At now each project defines a header for request-id. IMO it is better to move this in the future when oslo provides a common wsgi middleware to add a request-id header, but I think it is okay to define it in neutron.","commit_id":"955efb8de1ba19e53d5da1224b1ba9e6700591ab"}],"neutron/openstack/common/middleware/audit.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu%2BE%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"should these reflect 2014?","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"f329107bd3ed42492db6b92a0f1339222498907a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bm3o%3D","line":1,"in_reply_to":"AAAAUH%2F%2BryU%3D","updated":"2014-01-23 22:42:41.000000000","message":"ok, given that they would be considered original here I\u0027m curious.","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"73040f794188fd17732339243f8e3485c8f9c7e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2BryU%3D","line":1,"in_reply_to":"AAAAUH%2F%2Bu%2BE%3D","updated":"2014-01-23 07:53:21.000000000","message":"I think these files were just imported from oslo, so no need to update copyright headers here.","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/base.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu98%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"2014","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/correlation_id.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu9s%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"2014 , why the rackspace copyright, I don\u0027t see this module in the code base anywhere else?","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/debug.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu9k%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"2014","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/notifier.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 eNovance"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu78%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"2014 understand this is a close copy of the nova/nova/openstack/common/middleware/notifier.py, but with change, so it would seem necessary to change the date.","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/request_id.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 NEC Corporation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu4Y%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"date?","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/openstack/common/middleware/sizelimit.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"bba5180e887482d2a66a6ee4afc7a74134367867","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bu3w%3D","line":1,"updated":"2014-01-22 17:58:07.000000000","message":"date.","commit_id":"76504962aafdbd8a622293eee059a0cb1a9c261b"}],"neutron/tests/unit/test_api_v2.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d7fc57a675b404dd3be10952186e6080807f9de1","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class RequestIdTestCase(APIv2TestBase):"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    REQ_ID_HEADER \u003d \u0027x-network-request-id\u0027"},{"line_number":527,"context_line":"    REQ_ID \u003d \u0027dummy-request-id\u0027"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BPCg%3D","line":526,"updated":"2013-11-28 14:35:41.000000000","message":"This seems like something that should be defined once and reused, i.e. not have to be defined as a constant in a test.","commit_id":"cf0a93f7e5860718c59a74e28ad1d1b61a71096f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5bced6da27773b59caf00d0f0415b1eb335c2e81","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class RequestIdTestCase(APIv2TestBase):"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    REQ_ID_HEADER \u003d \u0027x-network-request-id\u0027"},{"line_number":527,"context_line":"    REQ_ID \u003d \u0027dummy-request-id\u0027"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BIoc%3D","line":526,"in_reply_to":"AAAATn%2F%2BPCg%3D","updated":"2013-12-02 07:11:08.000000000","message":"Done","commit_id":"cf0a93f7e5860718c59a74e28ad1d1b61a71096f"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"8e19ed26fb1eef9cae124852114944d4afe6f5f7","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        instance.get_networks.assert_called_once_with(mock.ANY, **kwargs)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"class RequestIdTestCase(APIv2TestBase):"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    REQ_ID \u003d \u0027dummy-request-id\u0027"},{"line_number":528,"context_line":"    HEADER_REQUEST_ID \u003d constants.HTTP_RESP_HEADER_REQUEST_ID"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BDz8%3D","line":525,"updated":"2013-12-02 23:21:37.000000000","message":"I\u0027m not clear on the purpose of this test class.  Aren\u0027t the changes to resource.py already validated in test_api_v2_resource.py, and shouldn\u0027t the change to wsgi.Router be tested in test_wsgi.py?","commit_id":"955efb8de1ba19e53d5da1224b1ba9e6700591ab"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"8e19ed26fb1eef9cae124852114944d4afe6f5f7","unresolved":false,"context_lines":[{"line_number":525,"context_line":"class RequestIdTestCase(APIv2TestBase):"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    REQ_ID \u003d \u0027dummy-request-id\u0027"},{"line_number":528,"context_line":"    HEADER_REQUEST_ID \u003d constants.HTTP_RESP_HEADER_REQUEST_ID"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def _get_env_with_request_id(self):"},{"line_number":531,"context_line":"        ctx \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BER0%3D","line":528,"updated":"2013-12-02 23:21:37.000000000","message":"This constant appears to be unused.","commit_id":"955efb8de1ba19e53d5da1224b1ba9e6700591ab"}],"neutron/wsgi.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d7fc57a675b404dd3be10952186e6080807f9de1","unresolved":false,"context_lines":[{"line_number":365,"context_line":"def set_request_id_header(request, response):"},{"line_number":366,"context_line":"    context \u003d request.environ.get(\u0027neutron.context\u0027)"},{"line_number":367,"context_line":"    if context:"},{"line_number":368,"context_line":"        response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"class ActionDispatcher(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BPBs%3D","line":368,"updated":"2013-11-28 14:35:41.000000000","message":"Again, \u0027x-network-request-id\u0027 should be defined as a constant.","commit_id":"cf0a93f7e5860718c59a74e28ad1d1b61a71096f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5bced6da27773b59caf00d0f0415b1eb335c2e81","unresolved":false,"context_lines":[{"line_number":365,"context_line":"def set_request_id_header(request, response):"},{"line_number":366,"context_line":"    context \u003d request.environ.get(\u0027neutron.context\u0027)"},{"line_number":367,"context_line":"    if context:"},{"line_number":368,"context_line":"        response.headers.add(\u0027x-network-request-id\u0027, context.request_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"class ActionDispatcher(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BIoY%3D","line":368,"in_reply_to":"AAAATn%2F%2BPBs%3D","updated":"2013-12-02 07:11:08.000000000","message":"Done","commit_id":"cf0a93f7e5860718c59a74e28ad1d1b61a71096f"}]}
