)]}'
{"karbor/exception.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"d910502d51dbff34e3ab0b8785d738ffeb0c58d0","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                \" type\u003d%(resource_type)s\")"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"class CreateSnapshotFailed(KarborException):"},{"line_number":298,"context_line":"    message \u003d _(\"Create Snapshot failed: %(reason)s, id\u003d%(resource_id)s,\""},{"line_number":299,"context_line":"                \" type\u003d%(resource_type)s\")"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class DeleteBackupFailed(KarborException):"},{"line_number":303,"context_line":"    message \u003d _(\"Delete Backup failed: %(reason)s, id\u003d%(resource_id)s,\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_1aed47b6","line":300,"range":{"start_line":297,"start_character":0,"end_line":300,"end_character":0},"updated":"2017-05-24 13:51:56.000000000","message":"Not other existing exception type fits that?\nI think it would be better to either:\n1. create a more general exception type and keep it in this file\n2. move this exception type to the only place it is being used and caught","commit_id":"8be974ede27ec96f37f553cb10a60b768c1770f4"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"93cde1b725a77237f77c885f8a55fbf2b202f19d","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                \" type\u003d%(resource_type)s\")"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"class CreateSnapshotFailed(KarborException):"},{"line_number":298,"context_line":"    message \u003d _(\"Create Snapshot failed: %(reason)s, id\u003d%(resource_id)s,\""},{"line_number":299,"context_line":"                \" type\u003d%(resource_type)s\")"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class DeleteBackupFailed(KarborException):"},{"line_number":303,"context_line":"    message \u003d _(\"Delete Backup failed: %(reason)s, id\u003d%(resource_id)s,\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_3afb52c1","line":300,"range":{"start_line":297,"start_character":0,"end_line":300,"end_character":0},"in_reply_to":"ff0f0b1f_1aed47b6","updated":"2017-05-25 04:59:10.000000000","message":"CreateSnapshotFailed This exception type also can be used in other plugins. Volume plugin also need create a snapshot of volume.","commit_id":"8be974ede27ec96f37f553cb10a60b768c1770f4"}],"karbor/services/protection/protection_plugins/share/share_snapshot_plugin.py":[{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"063ff91a13d643a85cbdbeb844bdc7e30b73f9c0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def status_poll(get_status_func, interval, success_statuses\u003dset(),"},{"line_number":38,"context_line":"                failure_statuses\u003dset(), ignore_statuses\u003dset(),"},{"line_number":39,"context_line":"                ignore_unexpected\u003dFalse):"},{"line_number":40,"context_line":"    def _poll():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_3f064488","line":37,"updated":"2017-05-16 12:42:06.000000000","message":"this function is used by several files, so it is better to move it to a common util file.see https://review.openstack.org/#/c/457190/1/karbor/services/protection/protection_plugins/utils.py. If my patch is merged first, then it is better to delete this function.","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"9d4a364a19811e7cdfb6e9a1a9f01cf13328efe4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def status_poll(get_status_func, interval, success_statuses\u003dset(),"},{"line_number":38,"context_line":"                failure_statuses\u003dset(), ignore_statuses\u003dset(),"},{"line_number":39,"context_line":"                ignore_unexpected\u003dFalse):"},{"line_number":40,"context_line":"    def _poll():"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_27e74315","line":37,"in_reply_to":"1f013ff3_3f064488","updated":"2017-05-17 06:41:13.000000000","message":"If your patch has been merged, I will rebase this function.","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"063ff91a13d643a85cbdbeb844bdc7e30b73f9c0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def get_resource_status(resource_manager, resource_id, resource_type):"},{"line_number":65,"context_line":"    LOG.debug(\u0027Polling %(resource_type)s (id: %(resource_id)s)\u0027, {"},{"line_number":66,"context_line":"        \u0027resource_type\u0027: resource_type,"},{"line_number":67,"context_line":"        \u0027resource_id\u0027: resource_id,"},{"line_number":68,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_9f69d826","line":65,"range":{"start_line":65,"start_character":65,"end_line":65,"end_character":66},"updated":"2017-05-16 12:42:06.000000000","message":"It looks better to move \u0027{\u0027 to the next line.","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"063ff91a13d643a85cbdbeb844bdc7e30b73f9c0","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        force \u003d parameters.get(\u0027force\u0027, False)"},{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            snapshot_id \u003d self._create_snapshot(manila_client, share_id,"},{"line_number":157,"context_line":"                                                snapshot_name,"},{"line_number":158,"context_line":"                                                description, force)"},{"line_number":159,"context_line":"        except Exception as e:"},{"line_number":160,"context_line":"            LOG.error(\u0027Error creating snapshot (share_id: %(share_id)s \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_9f00b836","line":157,"range":{"start_line":157,"start_character":48,"end_line":157,"end_character":61},"updated":"2017-05-16 12:42:06.000000000","message":"s/snapshot_name/parameters.get(\u0027snapshot_name\u0027, None) and delete snapshot_name","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"9d4a364a19811e7cdfb6e9a1a9f01cf13328efe4","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        force \u003d parameters.get(\u0027force\u0027, False)"},{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            snapshot_id \u003d self._create_snapshot(manila_client, share_id,"},{"line_number":157,"context_line":"                                                snapshot_name,"},{"line_number":158,"context_line":"                                                description, force)"},{"line_number":159,"context_line":"        except Exception as e:"},{"line_number":160,"context_line":"            LOG.error(\u0027Error creating snapshot (share_id: %(share_id)s \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_229851be","line":157,"range":{"start_line":157,"start_character":48,"end_line":157,"end_character":61},"in_reply_to":"1f013ff3_9f00b836","updated":"2017-05-17 06:41:13.000000000","message":"IMO, define several variable, it make code more clean and readable.","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"063ff91a13d643a85cbdbeb844bdc7e30b73f9c0","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            snapshot_id \u003d self._create_snapshot(manila_client, share_id,"},{"line_number":157,"context_line":"                                                snapshot_name,"},{"line_number":158,"context_line":"                                                description, force)"},{"line_number":159,"context_line":"        except Exception as e:"},{"line_number":160,"context_line":"            LOG.error(\u0027Error creating snapshot (share_id: %(share_id)s \u0027"},{"line_number":161,"context_line":"                      \u0027: %(reason)s\u0027, {\u0027share_id\u0027: share_id, \u0027reason\u0027: e})"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_9f8558b0","line":158,"range":{"start_line":158,"start_character":48,"end_line":158,"end_character":66},"updated":"2017-05-16 12:42:06.000000000","message":"ditto","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"063ff91a13d643a85cbdbeb844bdc7e30b73f9c0","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                resource_type\u003dconstants.SHARE_RESOURCE_TYPE)"},{"line_number":224,"context_line":"        LOG.info(\"Finish restoring a share from snapshot, share_id: %s.\","},{"line_number":225,"context_line":"                 original_share_id)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class DeleteOperation(protection_plugin.Operation):"},{"line_number":229,"context_line":"    def __init__(self, poll_interval):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_d3e19c2c","line":226,"updated":"2017-05-16 12:42:06.000000000","message":"whatever restore is success or failed, then it needs record the status of new share in DB. see\n1.https://github.com/openstack/karbor/blob/master/karbor/services/protection/flows/restore.py#L138-L161\n2. https://review.openstack.org/#/c/450694/3/karbor/services/protection/protection_plugins/volume/cinder_protection_plugin.py","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"9d4a364a19811e7cdfb6e9a1a9f01cf13328efe4","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                resource_type\u003dconstants.SHARE_RESOURCE_TYPE)"},{"line_number":224,"context_line":"        LOG.info(\"Finish restoring a share from snapshot, share_id: %s.\","},{"line_number":225,"context_line":"                 original_share_id)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class DeleteOperation(protection_plugin.Operation):"},{"line_number":229,"context_line":"    def __init__(self, poll_interval):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f013ff3_27606301","line":226,"in_reply_to":"1f013ff3_d3e19c2c","updated":"2017-05-17 06:41:13.000000000","message":"I notice that you have added a method udpate_resource_restore_result in the new module utils to update the status of resorece. If your patch have been merged. I will update it. Now I will call update_resource_status of restore object directly.","commit_id":"304d80d6cf042748ba8e25fe96bccb38844eadb5"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"a1175888f3269ce1e774c9a10342d8dbd7055271","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        is_success \u003d utils.status_poll("},{"line_number":78,"context_line":"            partial(get_snapshot_status, manila_client, snapshot_id),"},{"line_number":79,"context_line":"            interval\u003dself._interval,"},{"line_number":80,"context_line":"            success_statuses\u003d{\u0027available\u0027},"},{"line_number":81,"context_line":"            failure_statuses\u003d{\u0027error\u0027},"},{"line_number":82,"context_line":"            ignore_statuses\u003d{\u0027creating\u0027},"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if not is_success:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_e99ad311","line":82,"range":{"start_line":80,"start_character":0,"end_line":82,"end_character":41},"updated":"2017-05-24 12:24:08.000000000","message":"doesn\u0027t handle all snapshot statuses\nhttps://developer.openstack.org/api-ref/shared-file-systems/#share-snapshots","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"139d39ed0071340d371009868d34254a8818951e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        is_success \u003d utils.status_poll("},{"line_number":78,"context_line":"            partial(get_snapshot_status, manila_client, snapshot_id),"},{"line_number":79,"context_line":"            interval\u003dself._interval,"},{"line_number":80,"context_line":"            success_statuses\u003d{\u0027available\u0027},"},{"line_number":81,"context_line":"            failure_statuses\u003d{\u0027error\u0027},"},{"line_number":82,"context_line":"            ignore_statuses\u003d{\u0027creating\u0027},"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if not is_success:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_af973b3a","line":82,"range":{"start_line":80,"start_character":0,"end_line":82,"end_character":41},"in_reply_to":"ff0f0b1f_e99ad311","updated":"2017-05-24 13:22:56.000000000","message":"These status will not appear when creating a snapshot of share. So here ignore_unexpected should be set to True.\n\ndeleting\nerror_deleting\nmanage_starting\nmanage_error\nunmanage_starting\nunmanage_error\nrestoring","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"a1175888f3269ce1e774c9a10342d8dbd7055271","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                reason \u003d \u0027Unable to find snapshot.\u0027"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                reason \u003d \u0027The status of snapshot is %s\u0027 % snapshot.status"},{"line_number":92,"context_line":"            raise Exception(reason)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        return snapshot_id"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_297a0bb9","line":92,"range":{"start_line":92,"start_character":18,"end_line":92,"end_character":27},"updated":"2017-05-24 12:24:08.000000000","message":"mind using a more specific exception type, and catch only that type from the caller?","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"139d39ed0071340d371009868d34254a8818951e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                reason \u003d \u0027Unable to find snapshot.\u0027"},{"line_number":90,"context_line":"            else:"},{"line_number":91,"context_line":"                reason \u003d \u0027The status of snapshot is %s\u0027 % snapshot.status"},{"line_number":92,"context_line":"            raise Exception(reason)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        return snapshot_id"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_2faa0b18","line":92,"range":{"start_line":92,"start_character":18,"end_line":92,"end_character":27},"in_reply_to":"ff0f0b1f_297a0bb9","updated":"2017-05-24 13:22:56.000000000","message":"Done","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"a1175888f3269ce1e774c9a10342d8dbd7055271","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        resource_metadata[\u0027snapshot_id\u0027] \u003d snapshot_id"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        bank_section.update_object(\u0027metadata\u0027, resource_metadata)"},{"line_number":149,"context_line":"        LOG.info(\u0027Snapshot share (share_id: %(share_id)s snapshot_id: \u0027"},{"line_number":150,"context_line":"                 \u0027%(snapshot_id)s ) successfully\u0027,"},{"line_number":151,"context_line":"                 {\u0027share_id\u0027: share_id, \u0027snapshot_id\u0027: snapshot_id})"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class RestoreOperation(protection_plugin.Operation):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_d4044617","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":68},"updated":"2017-05-24 12:24:08.000000000","message":"update the resource status to success","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"139d39ed0071340d371009868d34254a8818951e","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        resource_metadata[\u0027snapshot_id\u0027] \u003d snapshot_id"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        bank_section.update_object(\u0027metadata\u0027, resource_metadata)"},{"line_number":149,"context_line":"        LOG.info(\u0027Snapshot share (share_id: %(share_id)s snapshot_id: \u0027"},{"line_number":150,"context_line":"                 \u0027%(snapshot_id)s ) successfully\u0027,"},{"line_number":151,"context_line":"                 {\u0027share_id\u0027: share_id, \u0027snapshot_id\u0027: snapshot_id})"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class RestoreOperation(protection_plugin.Operation):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_4f3c1f2e","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":68},"in_reply_to":"ff0f0b1f_d4044617","updated":"2017-05-24 13:22:56.000000000","message":"Done","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"a1175888f3269ce1e774c9a10342d8dbd7055271","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                share_network\u003dshare_network_id, share_type\u003dshare_type)"},{"line_number":181,"context_line":"            is_success \u003d utils.status_poll("},{"line_number":182,"context_line":"                partial(get_share_status, manila_client, share.id),"},{"line_number":183,"context_line":"                interval\u003dself._interval, success_statuses\u003d{\u0027available\u0027},"},{"line_number":184,"context_line":"                failure_statuses\u003d{"},{"line_number":185,"context_line":"                    \u0027error\u0027, \u0027error_deleting\u0027, \u0027deleting\u0027, \u0027not-found\u0027,"},{"line_number":186,"context_line":"                    \u0027extending_error\u0027, \u0027shrinking_error\u0027, \u0027reverting_error\u0027},"},{"line_number":187,"context_line":"                ignore_statuses\u003d{\u0027creating\u0027, \u0027reverting\u0027, \u0027extending\u0027,"},{"line_number":188,"context_line":"                                 \u0027shrinking\u0027}"},{"line_number":189,"context_line":"            )"},{"line_number":190,"context_line":"            if is_success is not True:"},{"line_number":191,"context_line":"                LOG.error(\u0027The status of share is invalid. status:%s\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_543ef6b7","line":188,"range":{"start_line":183,"start_character":0,"end_line":188,"end_character":45},"updated":"2017-05-24 12:24:08.000000000","message":"Refactor these to constants at the top?\nThey are used at least in two places","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"139d39ed0071340d371009868d34254a8818951e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                share_network\u003dshare_network_id, share_type\u003dshare_type)"},{"line_number":181,"context_line":"            is_success \u003d utils.status_poll("},{"line_number":182,"context_line":"                partial(get_share_status, manila_client, share.id),"},{"line_number":183,"context_line":"                interval\u003dself._interval, success_statuses\u003d{\u0027available\u0027},"},{"line_number":184,"context_line":"                failure_statuses\u003d{"},{"line_number":185,"context_line":"                    \u0027error\u0027, \u0027error_deleting\u0027, \u0027deleting\u0027, \u0027not-found\u0027,"},{"line_number":186,"context_line":"                    \u0027extending_error\u0027, \u0027shrinking_error\u0027, \u0027reverting_error\u0027},"},{"line_number":187,"context_line":"                ignore_statuses\u003d{\u0027creating\u0027, \u0027reverting\u0027, \u0027extending\u0027,"},{"line_number":188,"context_line":"                                 \u0027shrinking\u0027}"},{"line_number":189,"context_line":"            )"},{"line_number":190,"context_line":"            if is_success is not True:"},{"line_number":191,"context_line":"                LOG.error(\u0027The status of share is invalid. status:%s\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_4f865fbb","line":188,"range":{"start_line":183,"start_character":0,"end_line":188,"end_character":45},"in_reply_to":"ff0f0b1f_543ef6b7","updated":"2017-05-24 13:22:56.000000000","message":"Done","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"a1175888f3269ce1e774c9a10342d8dbd7055271","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            is_success \u003d utils.status_poll("},{"line_number":235,"context_line":"                partial(get_snapshot_status, manila_client, snapshot_id),"},{"line_number":236,"context_line":"                interval\u003dself._interval,"},{"line_number":237,"context_line":"                success_statuses\u003d{\u0027deleted\u0027, \u0027not-found\u0027},"},{"line_number":238,"context_line":"                failure_statuses\u003d{\u0027error\u0027, \u0027error_deleting\u0027},"},{"line_number":239,"context_line":"                ignore_statuses\u003d{\u0027deleting\u0027},"},{"line_number":240,"context_line":"            )"},{"line_number":241,"context_line":"            if not is_success:"},{"line_number":242,"context_line":"                raise exception.NotFound()"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_746c5acd","line":239,"range":{"start_line":237,"start_character":0,"end_line":239,"end_character":45},"updated":"2017-05-24 12:24:08.000000000","message":"same as above","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"139d39ed0071340d371009868d34254a8818951e","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            is_success \u003d utils.status_poll("},{"line_number":235,"context_line":"                partial(get_snapshot_status, manila_client, snapshot_id),"},{"line_number":236,"context_line":"                interval\u003dself._interval,"},{"line_number":237,"context_line":"                success_statuses\u003d{\u0027deleted\u0027, \u0027not-found\u0027},"},{"line_number":238,"context_line":"                failure_statuses\u003d{\u0027error\u0027, \u0027error_deleting\u0027},"},{"line_number":239,"context_line":"                ignore_statuses\u003d{\u0027deleting\u0027},"},{"line_number":240,"context_line":"            )"},{"line_number":241,"context_line":"            if not is_success:"},{"line_number":242,"context_line":"                raise exception.NotFound()"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff0f0b1f_2f91ebf1","line":239,"range":{"start_line":237,"start_character":0,"end_line":239,"end_character":45},"in_reply_to":"ff0f0b1f_746c5acd","updated":"2017-05-24 13:22:56.000000000","message":"Done","commit_id":"b9160c3035d1d6497880a787776489fa4a477915"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"d910502d51dbff34e3ab0b8785d738ffeb0c58d0","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            snapshot_id \u003d self._create_snapshot(manila_client, share_id,"},{"line_number":141,"context_line":"                                                snapshot_name,"},{"line_number":142,"context_line":"                                                description, force)"},{"line_number":143,"context_line":"        except Exception as e:"},{"line_number":144,"context_line":"            LOG.error(\u0027Error creating snapshot (share_id: %(share_id)s \u0027"},{"line_number":145,"context_line":"                      \u0027: %(reason)s\u0027, {\u0027share_id\u0027: share_id, \u0027reason\u0027: e})"},{"line_number":146,"context_line":"            bank_section.update_object(\u0027status\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_bafe5b68","line":143,"range":{"start_line":143,"start_character":0,"end_line":143,"end_character":30},"updated":"2017-05-24 13:51:56.000000000","message":"catch only the exception thrown from _create_snapshot","commit_id":"8be974ede27ec96f37f553cb10a60b768c1770f4"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"93cde1b725a77237f77c885f8a55fbf2b202f19d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            snapshot_id \u003d self._create_snapshot(manila_client, share_id,"},{"line_number":141,"context_line":"                                                snapshot_name,"},{"line_number":142,"context_line":"                                                description, force)"},{"line_number":143,"context_line":"        except Exception as e:"},{"line_number":144,"context_line":"            LOG.error(\u0027Error creating snapshot (share_id: %(share_id)s \u0027"},{"line_number":145,"context_line":"                      \u0027: %(reason)s\u0027, {\u0027share_id\u0027: share_id, \u0027reason\u0027: e})"},{"line_number":146,"context_line":"            bank_section.update_object(\u0027status\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_dafb36bb","line":143,"range":{"start_line":143,"start_character":0,"end_line":143,"end_character":30},"in_reply_to":"ff0f0b1f_bafe5b68","updated":"2017-05-25 04:59:10.000000000","message":"Done","commit_id":"8be974ede27ec96f37f553cb10a60b768c1770f4"}]}
