)]}'
{"nova/volume/cinder.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8d2f6d7d58b0897c7de359328b6fc94d34967945","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            six.reraise(exc_value, None, exc_trace)"},{"line_number":250,"context_line":"        except cinder_exception.OverLimit:"},{"line_number":251,"context_line":"            exc_type, exc_value, exc_trace \u003d sys.exc_info()"},{"line_number":252,"context_line":"            exc_value \u003d exception.OverQuota(overs\u003d\u0027volumes\u0027)"},{"line_number":253,"context_line":"            six.reraise(exc_value, None, exc_trace)"},{"line_number":254,"context_line":"        return res"},{"line_number":255,"context_line":"    return wrapper"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_169b2419","line":252,"range":{"start_line":252,"start_character":44,"end_line":252,"end_character":59},"updated":"2016-03-10 11:36:18.000000000","message":"ah, right, so we need the specific versions for this bit...","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1e970233f21094406133fac2bc41c54e86766ce2","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return rvals"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @translate_volume_exception"},{"line_number":507,"context_line":"    def create_snapshot(self, context, volume_id, name, description):"},{"line_number":508,"context_line":"        item \u003d cinderclient(context).volume_snapshots.create(volume_id,"},{"line_number":509,"context_line":"                                                             False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_12aea397","line":506,"range":{"start_line":506,"start_character":5,"end_line":506,"end_character":31},"updated":"2016-03-10 02:33:11.000000000","message":"Shouldn\u0027t this be translate_snapshot_exception?\n\nThe reason I ask is, I\u0027m assuming cinder has quotas on snapshots, and the OverLimit in the common wrapper is using overs\u003d\u0027volumes\u0027 which wouldn\u0027t be correct for snapshots.","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c63c8356d11b4046500a8deb4cff770fe42e203a","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return rvals"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @translate_volume_exception"},{"line_number":507,"context_line":"    def create_snapshot(self, context, volume_id, name, description):"},{"line_number":508,"context_line":"        item \u003d cinderclient(context).volume_snapshots.create(volume_id,"},{"line_number":509,"context_line":"                                                             False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_d2bc3bbd","line":506,"range":{"start_line":506,"start_character":5,"end_line":506,"end_character":31},"in_reply_to":"5aef4532_12aea397","updated":"2016-03-10 02:34:32.000000000","message":"Confirmed that cinder has quotas on snapshots:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/quota.py#L42\n\nSo the OverLimit check is going to need to be in the volumes and snapshots specific translation wrappers, and this create_snapshot method is using the wrong one.","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90303e74f6071f0b3352134210441115da41f376","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return rvals"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @translate_volume_exception"},{"line_number":507,"context_line":"    def create_snapshot(self, context, volume_id, name, description):"},{"line_number":508,"context_line":"        item \u003d cinderclient(context).volume_snapshots.create(volume_id,"},{"line_number":509,"context_line":"                                                             False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_6311f25c","line":506,"range":{"start_line":506,"start_character":5,"end_line":506,"end_character":31},"in_reply_to":"5aef4532_43d316d5","updated":"2016-03-10 17:03:52.000000000","message":"Yeah, so I think you should change this method (and other snapshot methods) to use the snapshot decorator, and explicitly handle the 404 for the volume not found, because that happens:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/api/v2/snapshots.py#L168\n\nUnless, you can use your decorator as a context manager too...that would be uber fancy.","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"94a068bcf7e3234f16e3a2660dfd1748a0d49b86","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return rvals"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @translate_volume_exception"},{"line_number":507,"context_line":"    def create_snapshot(self, context, volume_id, name, description):"},{"line_number":508,"context_line":"        item \u003d cinderclient(context).volume_snapshots.create(volume_id,"},{"line_number":509,"context_line":"                                                             False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_43d316d5","line":506,"range":{"start_line":506,"start_character":5,"end_line":506,"end_character":31},"in_reply_to":"5aef4532_d2bc3bbd","updated":"2016-03-10 17:00:40.000000000","message":"The problem I\u0027m seeing here is the translate_volume_exception decorator here is to catch the NotFound on the volume_id that we\u0027re trying to snapshot.\n\nWhat this OverLimit stuff is proposing we do is:\n\n    try:\n        create_snapshot(*args, **kwargs)\n    except NotFound:\n        raise VolumeNotFound()\n    except OverLimit:\n        raise OverQuota(overs\u003d\u0027snapshot\u0027)\n\nso we need something from both decorators.","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c63c8356d11b4046500a8deb4cff770fe42e203a","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                                                             description)"},{"line_number":512,"context_line":"        return _untranslate_snapshot_summary_view(context, item)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    @translate_volume_exception"},{"line_number":515,"context_line":"    def create_snapshot_force(self, context, volume_id, name, description):"},{"line_number":516,"context_line":"        item \u003d cinderclient(context).volume_snapshots.create(volume_id,"},{"line_number":517,"context_line":"                                                             True,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_52c94b58","line":514,"range":{"start_line":514,"start_character":5,"end_line":514,"end_character":31},"updated":"2016-03-10 02:34:32.000000000","message":"same issue here","commit_id":"b9c14081c8f71e1cc31dc2bce823e56af1bff2e2"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"fba160240b7b166b551421b70c03a0ed4555d977","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        except (keystone_exception.Forbidden,"},{"line_number":243,"context_line":"                cinder_exception.Forbidden):"},{"line_number":244,"context_line":"            exc_type, exc_value, exc_trace \u003d sys.exc_info()"},{"line_number":245,"context_line":"            _reraise(exception.Forbidden(six.text_type(exc_value)))"},{"line_number":246,"context_line":"        return res"},{"line_number":247,"context_line":"    return wrapper"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_75255a07","line":245,"range":{"start_line":245,"start_character":41,"end_line":245,"end_character":66},"updated":"2016-04-07 01:11:21.000000000","message":"I noticed \"message\u003d\" got removed here but I checked and it doesn\u0027t make a functional difference","commit_id":"99de5fd3d9d9a53e1c6e9c185201110933db668e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"64dcea6583d04ef85dc3c880078975c057791999","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        try:"},{"line_number":281,"context_line":"            res \u003d method(self, ctx, res_id, *args, **kwargs)"},{"line_number":282,"context_line":"        except (keystone_exception.NotFound, cinder_exception.NotFound):"},{"line_number":283,"context_line":"            _reraise(exception.VolumeNotFound(volume_id\u003dres_id))"},{"line_number":284,"context_line":"        except cinder_exception.OverLimit:"},{"line_number":285,"context_line":"            _reraise(exception.OverQuota(overs\u003d\u0027snapshots\u0027))"},{"line_number":286,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_f1a3e84d","line":283,"updated":"2016-04-04 09:58:06.000000000","message":"oh, I see why its mixed now...","commit_id":"99de5fd3d9d9a53e1c6e9c185201110933db668e"}]}
