)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":10,"context_line":"present in the request header. This \u0027correlation_id\u0027 can be used to"},{"line_number":11,"context_line":"enable more effective debugging of requests that span multiple services."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iac0d5e6d1d303fb35ed2ffcf3ef363932f75872b"},{"line_number":14,"context_line":"Implements: blueprint create-a-unified-correlation-id"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ibc06a5b05b628e0b640e9299c79127ecbf9c684e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FWkw%3D","line":13,"updated":"2013-05-13 21:28:39.000000000","message":"delete this line","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"}],"openstack/common/correlation_id.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWkc%3D","line":2,"updated":"2013-05-13 21:28:39.000000000","message":"This should be in the openstack/common/middleware directory","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVcE%3D","line":2,"in_reply_to":"AAAAOn%2F%2FWkc%3D","updated":"2013-05-14 10:09:52.000000000","message":"Done","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWkk%3D","line":3,"updated":"2013-05-13 21:28:39.000000000","message":"This is probably incorrect - if this is your own original work, who really owns the copyright? Also, 2013","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVb8%3D","line":3,"in_reply_to":"AAAAOn%2F%2FWkk%3D","updated":"2013-05-14 10:09:52.000000000","message":"Done","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Middleware that attaches a context to the WSGI request"},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstack.common import wsgi"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWkg%3D","line":19,"updated":"2013-05-13 21:28:39.000000000","message":"Needs updating","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Middleware that attaches a context to the WSGI request"},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstack.common import wsgi"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVb4%3D","line":19,"in_reply_to":"AAAAOn%2F%2FWkg%3D","updated":"2013-05-14 10:09:52.000000000","message":"Done","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        req.headers[\u0027X_CORRELATION_ID\u0027] \u003d correlation_id"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def factory(global_conf, **local_conf):"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    Factory method for paste.deploy"},{"line_number":41,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWkI%3D","line":38,"updated":"2013-05-13 21:28:39.000000000","message":"could you make this a class method on the middleware itself:\n\n    @classmethod\n    def factory(cls, global_conf, **local_conf):\n        conf \u003d global_config.copy()\n        conf.update(local_config)\n        def filter(app):\n            return cls(app)\n        return filter\n\nin fact, it\u0027d be nice to get this into the wsgi.Middleware base class\n\nThis is the way that the wsgi code in e.g. nova and keystone does it","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        req.headers[\u0027X_CORRELATION_ID\u0027] \u003d correlation_id"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def factory(global_conf, **local_conf):"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    Factory method for paste.deploy"},{"line_number":41,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVb0%3D","line":38,"in_reply_to":"AAAAOn%2F%2FWkI%3D","updated":"2013-05-14 10:09:52.000000000","message":"Done.\n\nWe notice ContextMiddleware also inherits from wsgi.Middleware. But changing this to use the same class method would probably need a change in the other services that use it, so should it be done as a part of this patch?","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"}],"openstack/common/log.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4d33cd27fae7801d81edf986b89cfaa91d1a1528","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                       \u0027%(name)s [%(request_id)s %(user)s %(tenant)s] \u0027"},{"line_number":119,"context_line":"                       \u0027%(instance)s%(message)s\u0027,"},{"line_number":120,"context_line":"               help\u003d\u0027format string to use for log messages when correlation id\u0027"},{"line_number":121,"context_line":"                    \u0027 is present in the context\u0027),"},{"line_number":122,"context_line":"    cfg.StrOpt(\u0027logging_default_format_string\u0027,"},{"line_number":123,"context_line":"               default\u003d\u0027%(asctime)s.%(msecs)03d %(process)d %(levelname)s \u0027"},{"line_number":124,"context_line":"                       \u0027%(name)s [-] %(instance)s%(message)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWkE%3D","line":121,"updated":"2013-05-13 21:28:39.000000000","message":"We have to figure out a better way of doing this - we can\u0027t a configuration variable like this\n\nProbably best to split the logging change into a separate patch so we can land the middleware first","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                       \u0027%(name)s [%(request_id)s %(user)s %(tenant)s] \u0027"},{"line_number":119,"context_line":"                       \u0027%(instance)s%(message)s\u0027,"},{"line_number":120,"context_line":"               help\u003d\u0027format string to use for log messages when correlation id\u0027"},{"line_number":121,"context_line":"                    \u0027 is present in the context\u0027),"},{"line_number":122,"context_line":"    cfg.StrOpt(\u0027logging_default_format_string\u0027,"},{"line_number":123,"context_line":"               default\u003d\u0027%(asctime)s.%(msecs)03d %(process)d %(levelname)s \u0027"},{"line_number":124,"context_line":"                       \u0027%(name)s [-] %(instance)s%(message)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVcI%3D","line":121,"in_reply_to":"AAAAOn%2F%2FWhU%3D","updated":"2013-05-14 10:09:52.000000000","message":"Will submit this as a separate patch.","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"e01cd032f5d0d1c06513ba70cb96348a6a967db3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                       \u0027%(name)s [%(request_id)s %(user)s %(tenant)s] \u0027"},{"line_number":119,"context_line":"                       \u0027%(instance)s%(message)s\u0027,"},{"line_number":120,"context_line":"               help\u003d\u0027format string to use for log messages when correlation id\u0027"},{"line_number":121,"context_line":"                    \u0027 is present in the context\u0027),"},{"line_number":122,"context_line":"    cfg.StrOpt(\u0027logging_default_format_string\u0027,"},{"line_number":123,"context_line":"               default\u003d\u0027%(asctime)s.%(msecs)03d %(process)d %(levelname)s \u0027"},{"line_number":124,"context_line":"                       \u0027%(name)s [-] %(instance)s%(message)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FWhU%3D","line":121,"in_reply_to":"AAAAOn%2F%2FWkE%3D","updated":"2013-05-13 21:46:15.000000000","message":"Shouldn\u0027t the message include the correlation id somewhere, too?\n\nHow about if we put a single placeholder name in the format string for context-like stuff (correlation id, request id, etc.) and then have the formatter build up a string to insert from the separate values it can find in the log record. If there turn out not to be any values, we end up with an empty string. Otherwise we have them in some predictable order with a nice separator to make parsing easy.","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"3e0e68833bc8abb70aa0c3df624bc35713fbae35","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                       \u0027%(name)s [%(request_id)s %(user)s %(tenant)s] \u0027"},{"line_number":119,"context_line":"                       \u0027%(instance)s%(message)s\u0027,"},{"line_number":120,"context_line":"               help\u003d\u0027format string to use for log messages when correlation id\u0027"},{"line_number":121,"context_line":"                    \u0027 is present in the context\u0027),"},{"line_number":122,"context_line":"    cfg.StrOpt(\u0027logging_default_format_string\u0027,"},{"line_number":123,"context_line":"               default\u003d\u0027%(asctime)s.%(msecs)03d %(process)d %(levelname)s \u0027"},{"line_number":124,"context_line":"                       \u0027%(name)s [-] %(instance)s%(message)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FVcM%3D","line":121,"in_reply_to":"AAAAOn%2F%2FWkE%3D","updated":"2013-05-14 10:09:52.000000000","message":"Will submit this as a separate patch.","commit_id":"a1d52894c61c31642a4f3693b6f33e2547cfd73a"}],"openstack/common/middleware/correlation_id.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"2435a9166eb0e666ce8e9c92494c0fe338719b94","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class CorrelationIdMiddleware(wsgi.Middleware):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, app, options):"},{"line_number":27,"context_line":"        self.options \u003d options"},{"line_number":28,"context_line":"        super(CorrelationIdMiddleware, self).__init__(app)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def process_request(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FVEU%3D","line":27,"updated":"2013-05-14 15:32:53.000000000","message":"self.options is unused?","commit_id":"4101bebdfbf8b48796f68c2975f14a4416f34cce"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"31cccac4f2076e8b61cf6882ea6cf1ba4c62bcf8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class CorrelationIdMiddleware(wsgi.Middleware):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, app, options):"},{"line_number":27,"context_line":"        self.options \u003d options"},{"line_number":28,"context_line":"        super(CorrelationIdMiddleware, self).__init__(app)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def process_request(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F%2Bk%3D","line":27,"in_reply_to":"AAAAOn%2F%2FVEU%3D","updated":"2013-05-15 05:57:24.000000000","message":"Done","commit_id":"4101bebdfbf8b48796f68c2975f14a4416f34cce"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ace4560b677981c0a7b40213bbc81223828621ff","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(CorrelationIdMiddleware, self).__init__(app)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def process_request(self, req):"},{"line_number":31,"context_line":"        correlation_id \u003d \\"},{"line_number":32,"context_line":"            req.headers.get(\"X_CORRELATION_ID\") or uuidutils.generate_uuid()"},{"line_number":33,"context_line":"        req.headers[\u0027X_CORRELATION_ID\u0027] \u003d correlation_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FVU4%3D","line":31,"updated":"2013-05-14 11:41:13.000000000","message":"Could you use () instead of \\ for wrapping multiple lines?\n\n  correlation_id \u003d (req.headers.get(\"X_CORRELATION_ID\") or \n                    uuidutils.generate_uuid())","commit_id":"4101bebdfbf8b48796f68c2975f14a4416f34cce"},{"author":{"_account_id":7532,"name":"Aditi Raveesh","email":"aditi.raveesh@gmail.com","username":"aditiraveesh"},"change_message_id":"31cccac4f2076e8b61cf6882ea6cf1ba4c62bcf8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(CorrelationIdMiddleware, self).__init__(app)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def process_request(self, req):"},{"line_number":31,"context_line":"        correlation_id \u003d \\"},{"line_number":32,"context_line":"            req.headers.get(\"X_CORRELATION_ID\") or uuidutils.generate_uuid()"},{"line_number":33,"context_line":"        req.headers[\u0027X_CORRELATION_ID\u0027] \u003d correlation_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F%2Bg%3D","line":31,"in_reply_to":"AAAAOn%2F%2FVU4%3D","updated":"2013-05-15 05:57:24.000000000","message":"Done","commit_id":"4101bebdfbf8b48796f68c2975f14a4416f34cce"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"70cee71a71fcbb11184f94696d7a43aced780759","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\"Middleware that attaches a correlation id to WSGI request\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from openstack.common import wsgi"},{"line_number":21,"context_line":"from openstack.common import uuidutils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CorrelationIdMiddleware(wsgi.Middleware):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2FwU%3D","line":21,"updated":"2013-05-15 08:43:49.000000000","message":"This import should be above the wsgi one","commit_id":"fc36cfff3dcc2b16a95a9c638901bab3925d1055"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"70cee71a71fcbb11184f94696d7a43aced780759","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CorrelationIdMiddleware(wsgi.Middleware):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, app):"},{"line_number":27,"context_line":"        super(CorrelationIdMiddleware, self).__init__(app)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def process_request(self, req):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2Fww%3D","line":26,"updated":"2013-05-15 08:43:49.000000000","message":"I guess you could get rid of the __init__ since it is not doing anything special.","commit_id":"fc36cfff3dcc2b16a95a9c638901bab3925d1055"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"70cee71a71fcbb11184f94696d7a43aced780759","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def process_request(self, req):"},{"line_number":30,"context_line":"        correlation_id \u003d (req.headers.get(\"X_CORRELATION_ID\")"},{"line_number":31,"context_line":"                          or uuidutils.generate_uuid())"},{"line_number":32,"context_line":"        req.headers[\u0027X_CORRELATION_ID\u0027] \u003d correlation_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2FwY%3D","line":31,"updated":"2013-05-15 08:43:49.000000000","message":"\u0027or\u0027 should be in line 30","commit_id":"fc36cfff3dcc2b16a95a9c638901bab3925d1055"}],"tests/unit/middleware/test_correlation_id.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"70cee71a71fcbb11184f94696d7a43aced780759","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"from openstack.common.middleware import correlation_id"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tests import utils"},{"line_number":22,"context_line":"from openstack.common import uuidutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F%2FwA%3D","line":19,"updated":"2013-05-15 08:43:49.000000000","message":"pls, group imports like:\n\nstdlib\n\nthird-party\n\noslo-incubator","commit_id":"fc36cfff3dcc2b16a95a9c638901bab3925d1055"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4e4be9acdd9492baad6f36b0d638fd7d3276d3bc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        original_method \u003d uuidutils.generate_uuid"},{"line_number":32,"context_line":"        mock_generate_uuid \u003d mock.Mock()"},{"line_number":33,"context_line":"        mock_generate_uuid.return_value \u003d \"fake_uuid\""},{"line_number":34,"context_line":"        uuidutils.generate_uuid \u003d mock_generate_uuid"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        middleware \u003d correlation_id.CorrelationIdMiddleware(app)"},{"line_number":37,"context_line":"        middleware(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2F6Iw%3D","line":34,"updated":"2013-05-20 15:50:37.000000000","message":"use stubout for this:\n\n  self.stubs.Set(uuidutils, \u0027generate_uuid\u0027, mock_generate_uuid)","commit_id":"dfb4e68e005e68a2e272f92c62fc8455712f293a"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"4e4be9acdd9492baad6f36b0d638fd7d3276d3bc","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        middleware \u003d correlation_id.CorrelationIdMiddleware(app)"},{"line_number":37,"context_line":"        middleware(req)"},{"line_number":38,"context_line":"        uuidutils.generate_uuid \u003d original_method"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self.assertEquals(req.headers.get(\"X_CORRELATION_ID\"), \"fake_uuid\")"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2F6Io%3D","line":38,"updated":"2013-05-20 15:50:37.000000000","message":"That way if there\u0027s an exception before this line, the method gets restored correctly","commit_id":"dfb4e68e005e68a2e272f92c62fc8455712f293a"}]}
