)]}'
{"etc/nova/api-paste.ini":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"81f73167f78f15dde04c757c33d407be8f9a2b0a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"pipeline \u003d cors logrequest metaapp"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[filter:logrequest]"},{"line_number":12,"context_line":"paste.filter_factory \u003d nova.api.ec2:RequestLogging.factory"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[app:metaapp]"},{"line_number":15,"context_line":"paste.app_factory \u003d nova.api.metadata.handler:MetadataRequestHandler.factory"}],"source_content_type":"text/x-properties","patch_set":6,"id":"bae84128_158f5424","line":12,"updated":"2016-02-19 13:42:25.000000000","message":"should we not ten drop the logger here?","commit_id":"ef878134f38fd510bac7fa6cac3ac439a5cfb04f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dbdf852f919def0e894b8eef2406c665b7c66f7a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"pipeline \u003d cors metaapp"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[filter:logrequest]"},{"line_number":12,"context_line":"paste.filter_factory \u003d nova.api.ec2:RequestLogging.factory"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[app:metaapp]"},{"line_number":15,"context_line":"paste.app_factory \u003d nova.api.metadata.handler:MetadataRequestHandler.factory"}],"source_content_type":"text/x-properties","patch_set":7,"id":"bae84128_7bcb3173","line":12,"updated":"2016-02-19 14:10:01.000000000","message":"Do we need this for some test that depends on this being here? I was thinking we could remove this bit too?","commit_id":"01c26035fa951c89f02e68126484452259be9597"}],"nova/api/ec2/__init__.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"996f692b2e9e9cf2abe547e4262eaa61fe6c8c7c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":28,"context_line":"        super(DeprecatedMiddleware, self).__init__(args[0])"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Reqgit uest)"},{"line_number":31,"context_line":"    def __call__(self, req):"},{"line_number":32,"context_line":"        return webob.exc.HTTPNotFound(explanation\u003d_DEPRECATION_MESSAGE)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_d0539415","line":30,"updated":"2016-02-12 18:50:47.000000000","message":"umm... typo","commit_id":"2b29c38ac2c0ce79f33e443ba45226c0f75e43f7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7c9e7f8a160a204aa18b948189e37c7529250a2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":28,"context_line":"        super(DeprecatedMiddleware, self).__init__(args[0])"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Reqgit uest)"},{"line_number":31,"context_line":"    def __call__(self, req):"},{"line_number":32,"context_line":"        return webob.exc.HTTPNotFound(explanation\u003d_DEPRECATION_MESSAGE)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_d07ab487","line":30,"in_reply_to":"3a57f1b5_d0539415","updated":"2016-02-12 18:51:18.000000000","message":"no way","commit_id":"2b29c38ac2c0ce79f33e443ba45226c0f75e43f7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"340a84bf843cd635f986032346f44f7e4005fb57","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"},{"line_number":43,"context_line":"    def __call__(self, req):"},{"line_number":44,"context_line":"        # deprecated middleware needs to be a no op, not an exception"},{"line_number":45,"context_line":"        return req.get_response(self.application)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_6068a7bb","line":44,"updated":"2016-02-19 11:59:28.000000000","message":"good comment, like the single warn log above.","commit_id":"adb5d01d455cc0556f6c141bec58343727f1591b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"340a84bf843cd635f986032346f44f7e4005fb57","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return req.get_response(self.application)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FaultWrapper(DeprecatedMiddleware):"},{"line_number":49,"context_line":"    pass"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_1d0ca493","line":48,"updated":"2016-02-19 11:59:28.000000000","message":"I got confused why we did this, but the better log message is totally worth it.","commit_id":"adb5d01d455cc0556f6c141bec58343727f1591b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"340a84bf843cd635f986032346f44f7e4005fb57","unresolved":false,"context_lines":[{"line_number":76,"context_line":"class Executor(wsgi.Application):"},{"line_number":77,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"},{"line_number":78,"context_line":"    def __call__(self, req):"},{"line_number":79,"context_line":"        return webob.exc.HTTPNotFound(explanation\u003d_DEPRECATION_MESSAGE)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class RequestLogging(wsgi.Middleware):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_c051b310","line":79,"updated":"2016-02-19 11:59:28.000000000","message":"ah, the end of the line here, so we have to do something, 404 makes sense.","commit_id":"adb5d01d455cc0556f6c141bec58343727f1591b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"340a84bf843cd635f986032346f44f7e4005fb57","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return webob.exc.HTTPNotFound(explanation\u003d_DEPRECATION_MESSAGE)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class RequestLogging(wsgi.Middleware):"},{"line_number":83,"context_line":"    \"\"\"Access-Log akin logging for all EC2 API requests.\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bae84128_603a67cf","line":82,"updated":"2016-02-19 11:59:28.000000000","message":"we should probably move this somewhere else, long term, but restoring it so we can debug the metadata service makes good sense.","commit_id":"adb5d01d455cc0556f6c141bec58343727f1591b"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"4c0fc6cac36898d7649d00d05f4473913b9e91ac","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"},{"line_number":43,"context_line":"    def __call__(self, req):"},{"line_number":44,"context_line":"        # deprecated middleware needs to be a no op, not an exception"},{"line_number":45,"context_line":"        return req.get_response(self.application)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FaultWrapper(DeprecatedMiddleware):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_ac3468de","line":45,"updated":"2016-02-19 13:01:14.000000000","message":"This line is the key to the whole fix!. Apologies, this one was on me.\n\nThanks,\nDims","commit_id":"0458a5b41da2076894f0f34624ee87f3cd8bbcd0"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"f9a4a03cea56a73aa27614e29f75040557cc7b1a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return webob.exc.HTTPException(message\u003d_DEPRECATION_MESSAGE)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"FaultWrapper \u003d DeprecatedMiddleware"},{"line_number":42,"context_line":"RequestLogging \u003d DeprecatedMiddleware"},{"line_number":43,"context_line":"Lockout \u003d DeprecatedMiddleware"},{"line_number":44,"context_line":"EC2KeystoneAuth \u003d DeprecatedMiddleware"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_c11d2e68","side":"PARENT","line":41,"updated":"2016-02-19 14:37:36.000000000","message":"Sean, Does making each of this (41-48) into a separate class add any value? (is it needed for the fix to work)?","commit_id":"12d224e7dfc7bc02316856dcc2f331bf70b25f32"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"cdfbe684139006c2e2d60bb63803c169062b5ab1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return webob.exc.HTTPException(message\u003d_DEPRECATION_MESSAGE)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"FaultWrapper \u003d DeprecatedMiddleware"},{"line_number":42,"context_line":"RequestLogging \u003d DeprecatedMiddleware"},{"line_number":43,"context_line":"Lockout \u003d DeprecatedMiddleware"},{"line_number":44,"context_line":"EC2KeystoneAuth \u003d DeprecatedMiddleware"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_ec93094e","side":"PARENT","line":41,"in_reply_to":"bae84128_61ac22ee","updated":"2016-02-19 15:00:33.000000000","message":"awesome, thanks i missed that bit.","commit_id":"12d224e7dfc7bc02316856dcc2f331bf70b25f32"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"850297fac73a7c3a84b9c87f0a2b0a71b7110c08","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return webob.exc.HTTPException(message\u003d_DEPRECATION_MESSAGE)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"FaultWrapper \u003d DeprecatedMiddleware"},{"line_number":42,"context_line":"RequestLogging \u003d DeprecatedMiddleware"},{"line_number":43,"context_line":"Lockout \u003d DeprecatedMiddleware"},{"line_number":44,"context_line":"EC2KeystoneAuth \u003d DeprecatedMiddleware"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_61ac22ee","side":"PARENT","line":41,"in_reply_to":"bae84128_c11d2e68","updated":"2016-02-19 14:39:06.000000000","message":"covered this on IRC, its really so you get a nice log message, see ln 42.\n\nI mean its not required, but I like the extra log message.","commit_id":"12d224e7dfc7bc02316856dcc2f331bf70b25f32"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"91119165f28b9c219af13e37eb1baa4b6276ac93","unresolved":false,"context_lines":[{"line_number":27,"context_line":"_DEPRECATED_MIDDLEWARE \u003d ("},{"line_number":28,"context_line":"    \u0027%s has been deprecated and removed from Nova in Mitaka. \u0027"},{"line_number":29,"context_line":"    \u0027You will need to remove lines referencing it in your paste.ini before \u0027"},{"line_number":30,"context_line":"    \u0027upgrade to Newton or your cloud will break.\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_DEPRECATION_MESSAGE \u003d (\u0027The in tree EC2 API has been removed in Mitaka. \u0027"},{"line_number":33,"context_line":"                        \u0027Please remove entries from api-paste.ini\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_92924f56","line":30,"range":{"start_line":30,"start_character":26,"end_line":30,"end_character":36},"updated":"2016-02-19 16:14:10.000000000","message":"Well, not the whole cloud, just the metadata service requests, right? Which is also bad...\n\nI just wasn\u0027t sure if you\u0027re going for the scare effect here.","commit_id":"f2c1cfae53e7d9efb36b1a1b3a8d6334d9ca688f"}]}
