)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"594779790ed420fea689f40f0fdc781b3dcfa8fa","unresolved":false,"context_lines":[{"line_number":11,"context_line":"it simply sends off a warning without raising the Not Found Exception. As a result the end response"},{"line_number":12,"context_line":"received for the request is deceiving."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Fixes Bug #1245775"},{"line_number":15,"context_line":"Change-Id: I10cb04a135cc9611f7144192e790693f81788d5b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F%2FxEw%3D","line":14,"updated":"2013-10-29 11:20:42.000000000","message":"I prefer change to \"Fixes Bug: 1245775\", since Gerrit doesn\u0027t make it as a link","commit_id":"840eedcea55716fdeb70181cc0813e3d3c25d05a"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"449542b519e82ae351f2e7b431c3441ec5081b5a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     AmalaBasha \u003camala.alungal@RACKSPACE.COM\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-08 21:02:18 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"safe_delete_from_backend does not raise exceptions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The safe_delete_from_backend in glance/store/__init__.py does not raise"},{"line_number":10,"context_line":"the appropriate exceptions. For eg) In situations where delete of non existent image is attempted,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F%2FVxM%3D","line":7,"updated":"2013-11-09 01:34:43.000000000","message":"and may be rename this to something like:\n\nAdds exception raising in safe_delete_from_backend","commit_id":"ca79411823b25ef4975101b12619502d9ec84c3b"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"449542b519e82ae351f2e7b431c3441ec5081b5a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-11-08 21:02:18 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"safe_delete_from_backend does not raise exceptions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The safe_delete_from_backend in glance/store/__init__.py does not raise"},{"line_number":10,"context_line":"the appropriate exceptions. For eg) In situations where delete of non existent image is attempted,"},{"line_number":11,"context_line":"it simply sends off a warning without raising the Not Found Exception. As a result the end response"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F%2FVxQ%3D","line":8,"updated":"2013-11-09 01:34:43.000000000","message":"Can you please format this commit message into bullet points? seems hard to read :)","commit_id":"ca79411823b25ef4975101b12619502d9ec84c3b"}],"glance/store/__init__.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"aafc9f27a3a0f031fb7de74cdf71ef38d3f16f3f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":277,"context_line":"        raise exception.NotFound(msg)"},{"line_number":278,"context_line":"    except exception.StoreDeleteNotSupported as e:"},{"line_number":279,"context_line":"        LOG.warn(str(e))"},{"line_number":280,"context_line":"        raise exception.StoreDeleteNotSupported(str(e))"},{"line_number":281,"context_line":"    except UnsupportedBackend:"},{"line_number":282,"context_line":"        exc_type \u003d sys.exc_info()[0].__name__"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FxfA%3D","line":279,"updated":"2013-10-29 09:22:13.000000000","message":"btw we\u0027d better using \u0027unicode()\u0027 IMO currently. I see maybe we need do that in a dedicated patch.","commit_id":"9e42c694b72ec4641f3fca9f2297eb1ec7f1fd81"},{"author":{"_account_id":7531,"name":"Sridevi Koushik","email":"sridevi.koushik@rackspace.com","username":"sridevik"},"change_message_id":"5048ea58ebd76d34b2aac201596524c0cff814be","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        raise exception.NotFound(msg)"},{"line_number":278,"context_line":"    except exception.StoreDeleteNotSupported as e:"},{"line_number":279,"context_line":"        LOG.warn(str(e))"},{"line_number":280,"context_line":"        raise exception.StoreDeleteNotSupported(str(e))"},{"line_number":281,"context_line":"    except UnsupportedBackend:"},{"line_number":282,"context_line":"        exc_type \u003d sys.exc_info()[0].__name__"},{"line_number":283,"context_line":"        msg \u003d (_(\u0027Failed to delete image %s from store (%s)\u0027) %"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Fx3M%3D","line":280,"updated":"2013-10-29 07:20:29.000000000","message":"Why not save and reraise the exceptions?","commit_id":"9e42c694b72ec4641f3fca9f2297eb1ec7f1fd81"},{"author":{"_account_id":7531,"name":"Sridevi Koushik","email":"sridevi.koushik@rackspace.com","username":"sridevik"},"change_message_id":"01f97e5cb022216ba7e0fc5f99ad99b1ac6abc68","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    except exception.NotFound:"},{"line_number":275,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":276,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":277,"context_line":"        raise exception.NotFound(msg)"},{"line_number":278,"context_line":"    except exception.StoreDeleteNotSupported as e:"},{"line_number":279,"context_line":"        LOG.warn(str(e))"},{"line_number":280,"context_line":"    except UnsupportedBackend:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FZvE%3D","line":277,"updated":"2013-11-07 06:19:15.000000000","message":"Yup, +1 Nikhil.\nTo ensure the backtrace is not lost.","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"654408eab1e159be1a88b2ae3887a93814640de3","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        return actual_delete_from_backend(context, uri, **kwargs)"},{"line_number":292,"context_line":"    except exception.NotFound:"},{"line_number":293,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":294,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":295,"context_line":"    except exception.StoreDeleteNotSupported as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FaZs%3D","line":292,"updated":"2013-11-06 22:05:20.000000000","message":"1. I wonder if it would be best to just do a wildcard raise here now that this is in a separate method. \n\n2. Also, was wondering, since this is to make stuff more robust.. may be we should handle some clean up like conn close or sometime in finally clause, what do you think?\n This would enforce all the stores to have \"finally conn.close\" or some other clean up stuff. (Currently, swift store does not seem to have it)","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"fe426788711eab8dd8a45d657d2a8b74ecac0dad","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        return actual_delete_from_backend(context, uri, **kwargs)"},{"line_number":292,"context_line":"    except exception.NotFound:"},{"line_number":293,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":294,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":295,"context_line":"    except exception.StoreDeleteNotSupported as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FXOI%3D","line":292,"in_reply_to":"AAAATn%2F%2FXYs%3D","updated":"2013-11-08 06:26:08.000000000","message":"Agree!","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"d11ae2d359e255c87f9f09e4982b1055add8f9a8","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        return actual_delete_from_backend(context, uri, **kwargs)"},{"line_number":292,"context_line":"    except exception.NotFound:"},{"line_number":293,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":294,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":295,"context_line":"    except exception.StoreDeleteNotSupported as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FXYs%3D","line":292,"in_reply_to":"AAAATn%2F%2FZvI%3D","updated":"2013-11-08 05:53:45.000000000","message":"Yeah, that\u0027s where I was going. Just another way to enforce each store to close conn after delete. \n\nNot sure what\u0027s the best way to go about it though - either have some sort of wrapper or a interface class to do post add/delete/head cleanup of conn, logging etc.\n\nAlso, may be not necessarily in this MP, it may come in later.","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":7531,"name":"Sridevi Koushik","email":"sridevi.koushik@rackspace.com","username":"sridevik"},"change_message_id":"01f97e5cb022216ba7e0fc5f99ad99b1ac6abc68","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        return actual_delete_from_backend(context, uri, **kwargs)"},{"line_number":292,"context_line":"    except exception.NotFound:"},{"line_number":293,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":294,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":295,"context_line":"    except exception.StoreDeleteNotSupported as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FZvI%3D","line":292,"in_reply_to":"AAAATn%2F%2FaZs%3D","updated":"2013-11-07 06:19:15.000000000","message":"We don\u0027t have a handle to connection at this point as this is a store.delete call.\nSo probably we can close the connection in the individual stores. Or have a method called \"close\" defined in each store and call that method here. Just thinking aloud.","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"654408eab1e159be1a88b2ae3887a93814640de3","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        return actual_delete_from_backend(context, uri, **kwargs)"},{"line_number":292,"context_line":"    except exception.NotFound:"},{"line_number":293,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":294,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":295,"context_line":"    except exception.StoreDeleteNotSupported as e:"},{"line_number":296,"context_line":"        LOG.warn(str(e))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FaZ4%3D","line":293,"updated":"2013-11-06 22:05:20.000000000","message":"extra log line","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"449542b519e82ae351f2e7b431c3441ec5081b5a","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":284,"context_line":"    try:"},{"line_number":285,"context_line":"        return actual_delete_from_backend(context, uri, image_id, **kwargs)"},{"line_number":286,"context_line":"    except exception.NotFound:"},{"line_number":287,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":288,"context_line":"        LOG.warn(msg % image_id)"},{"line_number":289,"context_line":"    except exception.StoreDeleteNotSupported as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FVxY%3D","line":286,"updated":"2013-11-09 01:34:43.000000000","message":"I still feel like you should be able to move all the logs and such stuff to the above method. and just do this here:\n\ntry:\n    return actual_delete_from_backend(context, uri, image_id, **kwargs)\nexcept Exception:\n    raise","commit_id":"ca79411823b25ef4975101b12619502d9ec84c3b"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c87a7ae5892e6d6dd64ca3789cf4bbdbafd400b6","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":272,"context_line":"    try:"},{"line_number":273,"context_line":"        return delete_from_backend(context, uri, **kwargs)"},{"line_number":274,"context_line":"    except Exception:"},{"line_number":275,"context_line":"        raise"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FNa0%3D","line":274,"updated":"2013-11-13 18:10:09.000000000","message":"Does this do anything?","commit_id":"7b652d8daf522d62542c4b17ea15680bb53bb8e3"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"91c7c47c203a0acefa4c831021ed0431b31bfa7d","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":272,"context_line":"    try:"},{"line_number":273,"context_line":"        return delete_from_backend(context, uri, **kwargs)"},{"line_number":274,"context_line":"    except Exception:"},{"line_number":275,"context_line":"        raise"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FHvs%3D","line":274,"in_reply_to":"AAAATn%2F%2FIr4%3D","updated":"2013-11-14 06:41:28.000000000","message":"Well, actually we can remove this method and directly call the delete_from_backend.","commit_id":"7b652d8daf522d62542c4b17ea15680bb53bb8e3"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"17208c3d15e3ad58283e159fddcb9f2737e70ab6","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":272,"context_line":"    try:"},{"line_number":273,"context_line":"        return delete_from_backend(context, uri, **kwargs)"},{"line_number":274,"context_line":"    except Exception:"},{"line_number":275,"context_line":"        raise"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FIr4%3D","line":274,"in_reply_to":"AAAATn%2F%2FNa0%3D","updated":"2013-11-13 23:53:37.000000000","message":"well, that was my suggestion..\n\nHowever, we should keep this method private/protected if not necessary and remove the wildcard raise.","commit_id":"7b652d8daf522d62542c4b17ea15680bb53bb8e3"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"c87a7ae5892e6d6dd64ca3789cf4bbdbafd400b6","unresolved":false,"context_lines":[{"line_number":278,"context_line":"def safe_delete_from_backend(context, uri, image_id, **kwargs):"},{"line_number":279,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":280,"context_line":"    try:"},{"line_number":281,"context_line":"        return actual_delete_from_backend(context, uri, image_id, **kwargs)"},{"line_number":282,"context_line":"    except exception.NotFound:"},{"line_number":283,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":284,"context_line":"        LOG.warn(msg % image_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FJrg%3D","line":281,"updated":"2013-11-13 18:10:09.000000000","message":"It seems the added test passes without this change. I\u0027m not sure of what behavior would change.","commit_id":"7b652d8daf522d62542c4b17ea15680bb53bb8e3"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"91c7c47c203a0acefa4c831021ed0431b31bfa7d","unresolved":false,"context_lines":[{"line_number":278,"context_line":"def safe_delete_from_backend(context, uri, image_id, **kwargs):"},{"line_number":279,"context_line":"    \"\"\"Given a uri, delete an image from the store.\"\"\""},{"line_number":280,"context_line":"    try:"},{"line_number":281,"context_line":"        return actual_delete_from_backend(context, uri, image_id, **kwargs)"},{"line_number":282,"context_line":"    except exception.NotFound:"},{"line_number":283,"context_line":"        msg \u003d _(\u0027Failed to delete image %s in store from URI\u0027)"},{"line_number":284,"context_line":"        LOG.warn(msg % image_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FHvM%3D","line":281,"in_reply_to":"AAAATn%2F%2FJrg%3D","updated":"2013-11-14 06:41:28.000000000","message":"The behaviour change would happen at a controller level. The store functionality would remain the same","commit_id":"7b652d8daf522d62542c4b17ea15680bb53bb8e3"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"dd97c378b361e6e3166396d2499131ed2611ea08","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return store.delete(loc)"},{"line_number":254,"context_line":"    except NotImplementedError:"},{"line_number":255,"context_line":"        raise exception.StoreDeleteNotSupported"},{"line_number":256,"context_line":"    except Exception:"},{"line_number":257,"context_line":"        raise"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDUw%3D","line":256,"updated":"2013-11-15 06:10:00.000000000","message":"Why we need this catch-raise explicitly?","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"0fc55574055e6a0aec242fd475f9d253b267a1b3","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return store.delete(loc)"},{"line_number":254,"context_line":"    except NotImplementedError:"},{"line_number":255,"context_line":"        raise exception.StoreDeleteNotSupported"},{"line_number":256,"context_line":"    except Exception:"},{"line_number":257,"context_line":"        raise"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2B7tw%3D","line":256,"in_reply_to":"AAAATn%2F%2FDK8%3D","updated":"2013-11-18 12:37:58.000000000","message":"Hi zhi\nDon\u0027t you think the NotImplemented Error would be misleading? Thats why I chose to have a generic except as well. Thoughts?","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"9a93bb66c857f9d832cde92c1fbd526d925094d7","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return store.delete(loc)"},{"line_number":254,"context_line":"    except NotImplementedError:"},{"line_number":255,"context_line":"        raise exception.StoreDeleteNotSupported"},{"line_number":256,"context_line":"    except Exception:"},{"line_number":257,"context_line":"        raise"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDK8%3D","line":256,"in_reply_to":"AAAATn%2F%2FDNw%3D","updated":"2013-11-15 06:28:34.000000000","message":"try block is correct. but I don\u0027t think we need this two new lines, since other exceptions except NotImplementedError will be raised  automatically by default.","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"12e26f783f241954eed785e495b864ff908ae3dc","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return store.delete(loc)"},{"line_number":254,"context_line":"    except NotImplementedError:"},{"line_number":255,"context_line":"        raise exception.StoreDeleteNotSupported"},{"line_number":256,"context_line":"    except Exception:"},{"line_number":257,"context_line":"        raise"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDNw%3D","line":256,"in_reply_to":"AAAATn%2F%2FDUw%3D","updated":"2013-11-15 06:12:21.000000000","message":"well, it\u0027s a public method so I\u0027d recommend keeping the try block there.","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"}],"glance/tests/unit/v1/test_upload_utils.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"654408eab1e159be1a88b2ae3887a93814640de3","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        location \u003d \"file://foo/bar\""},{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FaZY%3D","line":59,"updated":"2013-11-06 22:05:20.000000000","message":"I still have the same question about whether to use mock or not. Please see my comment on PS2 for ref.","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"fe426788711eab8dd8a45d657d2a8b74ecac0dad","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        location \u003d \"file://foo/bar\""},{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FXOE%3D","line":59,"in_reply_to":"AAAATn%2F%2FXYY%3D","updated":"2013-11-08 06:26:08.000000000","message":"Done","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"d11ae2d359e255c87f9f09e4982b1055add8f9a8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        location \u003d \"file://foo/bar\""},{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FXYY%3D","line":59,"in_reply_to":"AAAATn%2F%2FYl8%3D","updated":"2013-11-08 05:53:45.000000000","message":"Yeah, I guess you can use mock in the tests where you\u0027r changing code. Avoid touching tests that are not related to this patch as it might screw up git history.","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"8729f20337e8c125cc11184e4987153b34ac93b2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        location \u003d \"file://foo/bar\""},{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FYl8%3D","line":59,"in_reply_to":"AAAATn%2F%2FaZY%3D","updated":"2013-11-07 15:59:23.000000000","message":"I thought it would be safer to use mock. May be we could change the other test also to use mock perhaps. Wat say?","commit_id":"1d943eaf86f197ced887ec5f0995e0b1546c1a22"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"449542b519e82ae351f2e7b431c3441ec5081b5a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":14,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":15,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"from mock import Mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import mox"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FVxU%3D","line":16,"updated":"2013-11-09 01:34:43.000000000","message":"need a new line after Licensing. I feel we should just do an import of mock module as it might be useful later.\u0027\n\nbasically:\n    import mock","commit_id":"ca79411823b25ef4975101b12619502d9ec84c3b"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"dd97c378b361e6e3166396d2499131ed2611ea08","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mox"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import webob.exc"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDUs%3D","line":19,"updated":"2013-11-15 06:10:00.000000000","message":"wrong order.","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"0fc55574055e6a0aec242fd475f9d253b267a1b3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mox"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import webob.exc"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2B7to%3D","line":19,"in_reply_to":"AAAATn%2F%2FDNs%3D","updated":"2013-11-18 12:37:58.000000000","message":"Done","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"12e26f783f241954eed785e495b864ff908ae3dc","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mox"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import webob.exc"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDNs%3D","line":19,"in_reply_to":"AAAATn%2F%2FDUs%3D","updated":"2013-11-15 06:12:21.000000000","message":"+1","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"dd97c378b361e6e3166396d2499131ed2611ea08","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d mock.Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"},{"line_number":63,"context_line":"                          req, location, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDUU%3D","line":60,"updated":"2013-11-15 06:10:00.000000000","message":"IMO we don\u0027t need test this case, since safe_delete_from_backend() will never raise NotFound exception.\n\nhttps://github.com/openstack/glance/blob/master/glance/store/__init__.py#L274\n\nActually I consider we\u0027d better add a new test for v1 controller\u0027s delete(), to cover your change.","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"0fc55574055e6a0aec242fd475f9d253b267a1b3","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        id \u003d unit_test_utils.UUID1"},{"line_number":58,"context_line":"        store \u003d glance.store"},{"line_number":59,"context_line":"        glance.store \u003d mock.Mock()"},{"line_number":60,"context_line":"        glance.store.safe_delete_from_backend.side_effect \u003d exception.NotFound"},{"line_number":61,"context_line":"        self.assertRaises(exception.NotFound,"},{"line_number":62,"context_line":"                          upload_utils.initiate_deletion,"},{"line_number":63,"context_line":"                          req, location, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2B7tg%3D","line":60,"in_reply_to":"AAAATn%2F%2FDUU%3D","updated":"2013-11-18 12:37:58.000000000","message":"Yes zhi, you\u0027re right. This was added as part of the first patch. Will change it appropriately","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"dd97c378b361e6e3166396d2499131ed2611ea08","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        image_data \u003d \"blah\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        notifier \u003d mock.Mock()"},{"line_number":156,"context_line":"        store \u003d mock.Mock()"},{"line_number":157,"context_line":"        registry \u003d mock.Mock()"},{"line_number":158,"context_line":"        store.add.return_value \u003d location, size, checksum, {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FDOY%3D","line":155,"updated":"2013-11-15 06:10:00.000000000","message":"I\u0027m not sure this change is a necessary part for this patch? seems those only for mock adoption. thanks.","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"0fc55574055e6a0aec242fd475f9d253b267a1b3","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        image_data \u003d \"blah\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        notifier \u003d mock.Mock()"},{"line_number":156,"context_line":"        store \u003d mock.Mock()"},{"line_number":157,"context_line":"        registry \u003d mock.Mock()"},{"line_number":158,"context_line":"        store.add.return_value \u003d location, size, checksum, {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2B7tY%3D","line":155,"in_reply_to":"AAAATn%2F%2FDOY%3D","updated":"2013-11-18 12:37:58.000000000","message":"Same as above!","commit_id":"8ba3ff5c9dc6b0ba56192d42ad7423dd933c1f1d"}]}
